2015-12-06 21:19:55 +00:00
|
|
|
/**
|
|
|
|
Handlebars template generate for FluentCV.
|
|
|
|
@license MIT. Copyright (c) 2015 James M. Devlin / FluentDesk.
|
|
|
|
*/
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
|
|
|
|
var _ = require('underscore');
|
|
|
|
var HANDLEBARS = require('handlebars');
|
2015-12-17 01:13:27 +00:00
|
|
|
var FS = require('fs');
|
|
|
|
var moment = require('moment');
|
2015-12-17 04:26:53 +00:00
|
|
|
var MD = require('marked');
|
|
|
|
var H2W = require('../utils/html-to-wpml');
|
2015-12-06 21:19:55 +00:00
|
|
|
|
2015-12-17 01:13:27 +00:00
|
|
|
module.exports = function( json, jst, format, cssInfo, opts, theme ) {
|
|
|
|
|
|
|
|
_.each( theme.partials, function( el ) {
|
|
|
|
var tplData = FS.readFileSync( el.path, 'utf8' );
|
|
|
|
var compiledTemplate = HANDLEBARS.compile( tplData );
|
|
|
|
HANDLEBARS.registerPartial( el.name, compiledTemplate );
|
|
|
|
});
|
|
|
|
|
|
|
|
HANDLEBARS.registerHelper("formatDate", function(datetime, format) {
|
|
|
|
if( moment ) {
|
|
|
|
return moment( datetime ).format( format );
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return datetime;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2015-12-17 04:26:53 +00:00
|
|
|
HANDLEBARS.registerHelper("wpml", function( txt, inline ) {
|
|
|
|
inline = (inline && !inline.hash) || false;
|
|
|
|
txt = inline ? MD(txt.trim()).replace(/^\s*<p>|<\/p>\s*$/gi, '') : MD(txt.trim());
|
|
|
|
txt = H2W( txt.trim() );
|
|
|
|
return txt;
|
|
|
|
});
|
|
|
|
|
2015-12-17 01:13:27 +00:00
|
|
|
// http://doginthehat.com.au/2012/02/comparison-block-helper-for-handlebars-templates/
|
|
|
|
HANDLEBARS.registerHelper('compare', function(lvalue, rvalue, options) {
|
|
|
|
|
|
|
|
if (arguments.length < 3)
|
|
|
|
throw new Error("Handlerbars Helper 'compare' needs 2 parameters");
|
|
|
|
|
|
|
|
var operator = options.hash.operator || "==";
|
|
|
|
var operators = {
|
|
|
|
'==': function(l,r) { return l == r; },
|
|
|
|
'===': function(l,r) { return l === r; },
|
|
|
|
'!=': function(l,r) { return l != r; },
|
|
|
|
'<': function(l,r) { return l < r; },
|
|
|
|
'>': function(l,r) { return l > r; },
|
|
|
|
'<=': function(l,r) { return l <= r; },
|
|
|
|
'>=': function(l,r) { return l >= r; },
|
|
|
|
'typeof': function(l,r) { return typeof l == r; }
|
|
|
|
};
|
|
|
|
|
|
|
|
if (!operators[operator])
|
|
|
|
throw new Error("Handlerbars Helper 'compare' doesn't know the operator "+operator);
|
|
|
|
var result = operators[operator](lvalue,rvalue);
|
|
|
|
return result ? options.fn(this) : options.inverse(this);
|
|
|
|
});
|
2015-12-06 21:19:55 +00:00
|
|
|
|
|
|
|
var template = HANDLEBARS.compile(jst);
|
2015-12-17 01:13:27 +00:00
|
|
|
return template({
|
|
|
|
r: json,
|
|
|
|
filt: opts.filters,
|
|
|
|
cssInfo: cssInfo,
|
|
|
|
headFragment: opts.headFragment || ''
|
|
|
|
});
|
2015-12-06 21:19:55 +00:00
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}());
|