Skip to content

Commit 55cce25

Browse files
committed
Changed helper syntax to {{tag|helper[|helper2|...]}}
1 parent 7f1f5fd commit 55cce25

File tree

6 files changed

+33
-19
lines changed

6 files changed

+33
-19
lines changed

examples/helpers.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
Hi {{name}}.
2-
Hi {{ucase name}}.
2+
Hi {{name|ucase}}.

examples/helpers_error.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
Hi {{name}}.
2-
Hi {{ucase name}}.
3-
Hi {{lcase name}}.
2+
Hi {{name|ucase}}.
3+
Hi {{name|lcase}}.

examples/helpers_pipe.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Hi {{name}}.
2+
Hi {{name|ucase|bangify}}.

examples/helpers_pipe.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
var helpers_pipe_helpers = {
2+
ucase: function(s) {return s.toUpperCase(); },
3+
bangify: function(s) {return "!" + s + "!"}
4+
};
5+
6+
var helpers_pipe = {
7+
name: "Chris"
8+
};
9+

examples/helpers_pipe.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Hi Chris.
2+
Hi !CHRIS!.

mustache.js

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -270,20 +270,13 @@ var Mustache = function() {
270270
}
271271

272272
var value;
273-
var helper;
274-
275-
// check for helper e.g. name = "helperfun name"
276-
var helper_name = name.split(" ");
277-
if(helper_name.length == 2) { // we have a helper
278-
helper = helper_name[0];
279-
name = helper_name[1];
280-
if(!this.helper_functions[helper]
281-
|| typeof this.helper_functions[helper] != "function") {
282-
throw {message:
283-
"Helper '" + helper + "' is not a registered helper"};
284-
} else {
285-
helper = this.helper_functions[helper];
286-
}
273+
var helpers;
274+
275+
// check for helper e.g. name = "name|helperfun"
276+
var helper_name = name.split("|");
277+
if(helper_name.length > 1) { // we have at least one helper
278+
name = helper_name[0];
279+
helpers = helper_name.slice(1);
287280
}
288281

289282
// check for dot notation eg. foo.bar
@@ -305,8 +298,16 @@ var Mustache = function() {
305298
value = value.apply(context);
306299
}
307300

308-
if(helper) {
309-
value = helper.apply(context, [value]);
301+
if(helpers) {
302+
for(var idx in helpers) {
303+
var helper = helpers[idx];
304+
if(!this.helper_functions[helper]
305+
|| typeof this.helper_functions[helper] != "function") {
306+
throw {message:
307+
"Helper '" + helper + "' is not a registered helper"};
308+
}
309+
value = this.helper_functions[helper].apply(context, [value]);
310+
}
310311
}
311312

312313
if(value !== undefined) {

0 commit comments

Comments
 (0)