Documentation for the #if-any helper.
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 48ec152..769c574 100644 (file)
@@ -113,6 +113,46 @@ Handlebars.registerHelper('link', function(a) {
 });
 
 
+Handlebars.registerHelper('json', function(obj) {
+    return JSON.stringify(obj);
+});
+
+
+// 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 "";
+});
+
 
 {
     /* default mkws config */