Location names now listed with #commaList instead of #each.
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 674bfff..0638ee4 100644 (file)
@@ -101,29 +101,39 @@ mkws.debug_function = function (string) {
 var debug = mkws.debug_function; // local alias
 
 
-Handlebars.registerHelper('link', function(a) {
-    var result = "";
-    for (var i in a) {
-       if (i > 0) result += "<br/>";
-       var text = Handlebars.Utils.escapeExpression(a[i]);
-       result += '<a href="' + text + '">' + text + '</a>';
-    }
+Handlebars.registerHelper('json', function(obj) {
+    return JSON.stringify(obj);
+});
+
 
-    return new Handlebars.SafeString(result);
+// We need {{attr '@name'}} because Handlebars can't parse {{@name}}
+Handlebars.registerHelper('attr', function(attrName) {
+    return this[attrName];
 });
 
 
-Handlebars.registerHelper('json', function(obj) {
-    return JSON.stringify(obj);
+/*
+ * 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;
-    debug("#first checking for first item having '" + having + "'");
     for (var i in items) {
        var item = items[i]
-       debug("considering item " + (+i+1) + " of " + items.length + " = '" + item[having] + "'");
        if (!having || item[having]) {
            return options.fn(item);
        }
@@ -132,6 +142,18 @@ Handlebars.registerHelper('first', function(items, options) {
 });
 
 
+Handlebars.registerHelper('commaList', function(items, options) {
+    var out = "";
+
+    for (var i in items) {
+       if (i > 0) out += ", ";
+       out += options.fn(items[i])
+    }
+
+    return out;
+});
+
+
 {
     /* default mkws config */
     var config_default = {