1
0
mirror of https://github.com/JuanCanham/HackMyResume.git synced 2024-10-05 23:15:12 +01:00
HackMyResume/src/eng/underscore-generator.js

48 lines
1.3 KiB
JavaScript
Raw Normal View History

2015-12-06 21:19:55 +00:00
/**
Underscore template generate for FluentCV.
@license MIT. Copyright (c) 2015 James M. Devlin / FluentDesk.
*/
(function() {
var _ = require('underscore');
module.exports = function( json, jst, format, cssInfo, opts ) {
// Tweak underscore's default template delimeters
2015-12-07 21:39:59 +00:00
var delims = opts.themeObj.delimeters || opts.template;
if( opts.themeObj.delimeters ) {
delims = _.mapObject( delims, function(val,key) {
return new RegExp( val, "ig")
});
}
_.templateSettings = delims;
2015-12-06 21:19:55 +00:00
// Convert {{ someVar }} to {% print(filt.out(someVar) %}
// Convert {{ someVar|someFilter }} to {% print(filt.someFilter(someVar) %}
2015-12-07 21:39:59 +00:00
jst = jst.replace( delims.interpolate, function replace(m, p1) {
2015-12-06 21:19:55 +00:00
if( p1.indexOf('|') > -1 ) {
var terms = p1.split('|');
2015-12-07 21:39:59 +00:00
return '[~ print( filt.' + terms[1] + '( ' + terms[0] + ' )) ]]';
2015-12-06 21:19:55 +00:00
}
else {
2015-12-07 21:39:59 +00:00
return '[~ print( filt.out(' + p1 + ') ) ]]';
2015-12-06 21:19:55 +00:00
}
});
// Strip {# comments #}
2015-12-07 21:39:59 +00:00
jst = jst.replace( delims.comment, '');
2015-12-06 21:19:55 +00:00
// Compile and run the template. TODO: avoid unnecessary recompiles.
2015-12-07 21:39:59 +00:00
var compiled = _.template(jst);
var ret = compiled({
r: json,
filt: opts.filters,
cssInfo: cssInfo,
headFragment: opts.headFragment || ''
});
return ret;
2015-12-06 21:19:55 +00:00
};
}());