Implement lookup helper
This commit is contained in:
@@ -193,6 +193,10 @@ function registerDefaultHelpers(instance) {
|
|||||||
var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;
|
var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;
|
||||||
instance.log(level, context);
|
instance.log(level, context);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
instance.registerHelper('lookup', function(obj, field, options) {
|
||||||
|
return obj && obj[field];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export var logger = {
|
export var logger = {
|
||||||
|
|||||||
@@ -85,7 +85,8 @@ Compiler.prototype = {
|
|||||||
'if': true,
|
'if': true,
|
||||||
'unless': true,
|
'unless': true,
|
||||||
'with': true,
|
'with': true,
|
||||||
'log': true
|
'log': true,
|
||||||
|
'lookup': true
|
||||||
};
|
};
|
||||||
if (knownHelpers) {
|
if (knownHelpers) {
|
||||||
for (var name in knownHelpers) {
|
for (var name in knownHelpers) {
|
||||||
|
|||||||
@@ -203,4 +203,25 @@ describe('builtin helpers', function() {
|
|||||||
equals("whee", logArg, "should call log with 'whee'");
|
equals("whee", logArg, "should call log with 'whee'");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
describe('#lookup', function() {
|
||||||
|
it('should lookup arbitrary content', function() {
|
||||||
|
var string = '{{#each goodbyes}}{{lookup ../data .}}{{/each}}',
|
||||||
|
hash = {goodbyes: [0, 1], data: ['foo', 'bar']};
|
||||||
|
|
||||||
|
var template = CompilerContext.compile(string);
|
||||||
|
var result = template(hash);
|
||||||
|
|
||||||
|
equal(result, 'foobar');
|
||||||
|
});
|
||||||
|
it('should not fail on undefined value', function() {
|
||||||
|
var string = '{{#each goodbyes}}{{lookup ../bar .}}{{/each}}',
|
||||||
|
hash = {goodbyes: [0, 1], data: ['foo', 'bar']};
|
||||||
|
|
||||||
|
var template = CompilerContext.compile(string);
|
||||||
|
var result = template(hash);
|
||||||
|
|
||||||
|
equal(result, '');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user