From 7e0bc7d4e170d3b92b1678fa034e3b33eff2b49c Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Wed, 26 Mar 2014 10:32:24 +0000 Subject: [PATCH] New --- src/mkws-handlebars.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/mkws-handlebars.js diff --git a/src/mkws-handlebars.js b/src/mkws-handlebars.js new file mode 100644 index 0000000..1fabf3c --- /dev/null +++ b/src/mkws-handlebars.js @@ -0,0 +1,62 @@ +// Handlebars helpers +Handlebars.registerHelper('json', function(obj) { + return $.toJSON(obj); +}); + + +Handlebars.registerHelper('translate', function(s) { + return mkws.M(s); +}); + + +// We need {{attr '@name'}} because Handlebars can't parse {{@name}} +Handlebars.registerHelper('attr', function(attrName) { + return this[attrName]; +}); + + +/* + * Use as follows: {{#if-any NAME1 having="NAME2"}} + * Applicable when NAME1 is the name of an array + * The guarded code runs only if at least one element of the NAME1 + * array has a subelement called NAME2. + */ +Handlebars.registerHelper('if-any', function(items, options) { + var having = options.hash.having; + for (var i in items) { + var item = items[i] + if (!having || item[having]) { + return options.fn(this); + } + } + return ""; +}); + + +Handlebars.registerHelper('first', function(items, options) { + var having = options.hash.having; + for (var i in items) { + var item = items[i] + if (!having || item[having]) { + return options.fn(item); + } + } + return ""; +}); + + +Handlebars.registerHelper('commaList', function(items, options) { + var out = ""; + + for (var i in items) { + if (i > 0) out += ", "; + out += options.fn(items[i]) + } + + return out; +}); + + +Handlebars.registerHelper('index1', function(obj) { + return obj.data.index + 1; +}); -- 1.7.10.4