2015-02-10 19:41:24 +00:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
var ejs = require("ejs");
|
|
|
|
|
|
|
|
module.exports = function(options, imports, register) {
|
|
|
|
|
|
|
|
imports["connect.render"].registerEngine("ejs", createView);
|
|
|
|
|
|
|
|
ejs.filters.JSONToJS = function(obj, indent) {
|
2015-06-11 06:43:16 +00:00
|
|
|
return JSON.stringify(obj, null, indent).replace(/<\/?script|[\u2028\u2029\ud800-\uDFFF\ufeff]/ig, function(a) {
|
2015-02-10 19:41:24 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|