New
[mkws-moved-to-github.git] / src / mkws-handlebars.js
1 // Handlebars helpers
2 Handlebars.registerHelper('json', function(obj) {
3     return $.toJSON(obj);
4 });
5
6
7 Handlebars.registerHelper('translate', function(s) {
8     return mkws.M(s);
9 });
10
11
12 // We need {{attr '@name'}} because Handlebars can't parse {{@name}}
13 Handlebars.registerHelper('attr', function(attrName) {
14     return this[attrName];
15 });
16
17
18 /*
19  * Use as follows: {{#if-any NAME1 having="NAME2"}}
20  * Applicable when NAME1 is the name of an array
21  * The guarded code runs only if at least one element of the NAME1
22  * array has a subelement called NAME2.
23  */
24 Handlebars.registerHelper('if-any', function(items, options) {
25     var having = options.hash.having;
26     for (var i in items) {
27         var item = items[i]
28         if (!having || item[having]) {
29             return options.fn(this);
30         }
31     }
32     return "";
33 });
34
35
36 Handlebars.registerHelper('first', function(items, options) {
37     var having = options.hash.having;
38     for (var i in items) {
39         var item = items[i]
40         if (!having || item[having]) {
41             return options.fn(item);
42         }
43     }
44     return "";
45 });
46
47
48 Handlebars.registerHelper('commaList', function(items, options) {
49     var out = "";
50
51     for (var i in items) {
52         if (i > 0) out += ", ";
53         out += options.fn(items[i])
54     }
55
56     return out;
57 });
58
59
60 Handlebars.registerHelper('index1', function(obj) {
61     return obj.data.index + 1;
62 });