Remove not-necessary-after-all newline.
[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('paragraphs', function(obj) {
8     var acc = [];
9     for (var i = 0; i < obj.length; i++) {
10         acc.push('<p>', obj[i], '</p>');
11     }
12     return acc.join('');
13 });
14
15
16 Handlebars.registerHelper('translate', function(s) {
17     return mkws.M(s);
18 });
19
20
21 // We need {{attr '@name'}} because Handlebars can't parse {{@name}}
22 Handlebars.registerHelper('attr', function(attrName) {
23     return this[attrName];
24 });
25
26
27 /*
28  * Use as follows: {{#if-any NAME1 having="NAME2"}}
29  * Applicable when NAME1 is the name of an array
30  * The guarded code runs only if at least one element of the NAME1
31  * array has a subelement called NAME2.
32  */
33 Handlebars.registerHelper('if-any', function(items, options) {
34     var having = options.hash.having;
35     for (var i in items) {
36         var item = items[i]
37         if (!having || item[having]) {
38             return options.fn(this);
39         }
40     }
41     return "";
42 });
43
44
45 Handlebars.registerHelper('first', function(items, options) {
46     var having = options.hash.having;
47     for (var i in items) {
48         var item = items[i]
49         if (!having || item[having]) {
50             return options.fn(item);
51         }
52     }
53     return "";
54 });
55
56
57 Handlebars.registerHelper('commaList', function(items, options) {
58     var out = "";
59
60     for (var i in items) {
61         if (i > 0) out += ", ";
62         out += options.fn(items[i])
63     }
64
65     return out;
66 });
67
68
69 Handlebars.registerHelper('index1', function(obj) {
70     return obj.data.index + 1;
71 });