// Handlebars helpers
Handlebars.registerHelper('mkws-json', function(obj) {
- return $.toJSON(obj);
+ return mkws.$.toJSON(obj);
});
// {"hash":{},"data":{}} for parameters that are not provided. So we
// have to be prepared for actual numbers, explicitly undefined
// values and this dumb magic value.
- if (nPara === undefined || nPara.hasOwnProperty('hash') || nPara == 0 || nPara > obj.length) {
+ if (obj && (nPara === undefined || nPara.hasOwnProperty('hash') || nPara == 0 || nPara > obj.length)) {
nPara = obj.length;
}
- if (nSent === undefined || nSent.hasOwnProperty('hash') || nSent == 0 || nSent > obj.length) {
+ if (nSent === undefined || nSent.hasOwnProperty('hash') || nSent == 0) {
nSent = Infinity;
}
Handlebars.registerHelper('mkws-index1', function(obj) {
return obj.data.index + 1;
});
+
+Handlebars.registerHelper('mkws-repeat', function(count, options) {
+ var out = "";
+ for (var i = 0; i < count; i++) {
+ out += options.fn(this);
+ }
+ return out;
+});
+
+// Ridiculous that Handlebars has no way to do "or"
+Handlebars.registerHelper('mkws-if-either', function(cond1, cond2, options) {
+ if (typeof cond1 === 'function') { cond1 = cond1.call(this); }
+ if (typeof cond2 === 'function') { cond2 = cond2.call(this); }
+
+ if (cond1 || cond2) {
+ return options.fn(this);
+ } else {
+ return options.inverse(this);
+ }
+});