c9-core/node_modules/connect-architect/connect.render.ejs/render-ejs.js

58 wiersze
1.6 KiB
JavaScript

"use strict";
var ejs = require("ejs");
module.exports = function(options, imports, register) {
imports["connect.render"].registerEngine("ejs", createView);
ejs.filters.JSONToJS = function(obj, indent) {
return JSON.stringify(obj, null, indent).replace(/<\/?script|[\u2028\u2029\ud800-\uDFFF\ufeff]/ig, function(a) {
var h = a.charCodeAt(0).toString(16);
return (h.length == 2 ? "\\x" : "\\u") + h + a.substr(1);
});
};
var helper = {
timeSpan: function(ts) {
var sec = 1000;
var min = 60 * sec;
var hour = 60 * min;
return pad(~~(ts / hour)) + ":" + pad(~~((ts % hour) / min)) + ":" + pad(~~((ts % min) / sec));
function pad(d) {
if (d < 10)
return "0" + d;
else
return d;
}
},
timeSpanSince: function(ts) {
return helper.timeSpan(Date.now() - ts);
}
};
function createView(path, callback) {
return callback(null, function(res, options, callback) {
options.helper = helper;
ejs.renderFile(path, options, function(err, template) {
if (err) return callback(err);
callback(null, {
headers: {"Content-Type": "text/html"},
body: template
});
});
});
}
register(null, {
"connect.render.ejs": {
addHelper: function(name, helper) {
helper[name] = helper;
}
}
});
};