You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
isso/isso/js/app/jade.js

74 lines
2.1 KiB

define(["libjs-jade-runtime", "app/utils", "jade!app/text/postbox", "jade!app/text/comment", "jade!app/text/comment-loader"], function(runtime, utils, tt_postbox, tt_comment, tt_comment_loader) {
"use strict";
var globals = {},
templates = {};
var load = function(name, js) {
templates[name] = (function(jade) {
var fn;
eval("fn = " + js);
return fn;
})(runtime);
};
var set = function(name, value) {
globals[name] = value;
};
load("postbox", tt_postbox);
load("comment", tt_comment);
load("comment-loader", tt_comment_loader);
set("bool", function(arg) { return arg ? true : false; });
set("humanize", function(date) {
if (typeof date !== "object") {
date = new Date(parseInt(date, 10) * 1000);
}
return date.toString();
});
set("datetime", function(date) {
if (typeof date !== "object") {
date = new Date(parseInt(date, 10) * 1000);
}
return [
date.getUTCFullYear(),
utils.pad(date.getUTCMonth(), 2),
utils.pad(date.getUTCDay(), 2)
].join("-") + "T" + [
utils.pad(date.getUTCHours(), 2),
utils.pad(date.getUTCMinutes(), 2),
utils.pad(date.getUTCSeconds(), 2)
].join(":") + "Z";
});
return {
"set": set,
"render": function(name, locals) {
var rv, t = templates[name];
if (! t) {
throw new Error("Template not found: '" + name + "'");
}
locals = locals || {};
var keys = [];
for (var key in locals) {
if (locals.hasOwnProperty(key) && !globals.hasOwnProperty(key)) {
keys.push(key);
globals[key] = locals[key];
}
}
rv = templates[name](globals);
for (var i = 0; i < keys.length; i++) {
delete globals[keys[i]];
}
return rv;
}
};
});