jst
Version:
Node JavaScript Template, A pretty high performance template engine
42 lines (32 loc) • 936 B
JavaScript
// filters
const htmlCodes = {'&': '&', '<': '<', '>': '>', '"': '"'},
htmlre = /&(?!\w+;)|<|>|"/g,
htmlEscape = function (src) { return htmlCodes[src]; },
linere = /(\r\n|\r|\n)/g;
exports.convert = function(src) {
return src.split('|').reduce(function(varname, filter) {
return 'filters.' + filter + '(' + varname + ')';
});
}
function escape(src) {
return typeof src !== 'string' ? src : src.replace(htmlre, htmlEscape);
}
function linebreaks(src) {
return '<p>' + src.split(/\r\n|\n/g).join('</p><p>') + '</p>';
}
function linebreaksbr(src) {
return src.replace(linere, '<br>$1');
}
function add(value) {
return function(src) { return Number(value) + Number(src); };
}
function markdown(src) {
return src; // TODO:
}
exports.filters = {
escape: escape, e: escape,
linebreaks: linebreaks,
linebreaksbr: linebreaksbr,
markdown: markdown, md: markdown,
add: add
};