-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhandlebars.js
More file actions
47 lines (38 loc) · 1.33 KB
/
handlebars.js
File metadata and controls
47 lines (38 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
define(function (require) {
var handlebars = require("handlebars");
handlebars.loadPartial = function loadPartial(name) {
var partial = handlebars.partials[name];
if (typeof partial === "string") {
partial = handlebars.compile(partial);
handlebars.partials[name] = partial;
}
return partial;
};
handlebars.registerHelper("ifNotEmpty", function ifNotEmpty(options) {
var content = options.inverse(this);
if (content.trim() === "") {
content = "";
} else {
handlebars.registerPartial("$content", content);
content = options.fn(this);
}
return content;
});
handlebars.registerHelper("join", function join(list, sep, options) {
return list.map(options.fn).join(sep);
});
handlebars.registerHelper("ul", function ul(list, options) {
if (!list || list.length === 0) return "";
return "<ul>\n" + list.map(function (item) {
return "<li>" + options.fn(item) + "</li>";
}).join("\n") + "\n</ul>";
});
handlebars.registerHelper("partial", function partial(name, options) {
handlebars.registerPartial(name, options.fn);
});
handlebars.registerHelper("block", function block(name, options) {
/* Look for partial by name. */
var partial = handlebars.loadPartial(name) || options.fn;
return partial(this, { data : options.hash });
});
});