Merge branch '4.x'
# Conflicts: # lib/handlebars/compiler/javascript-compiler.js # lib/handlebars/helpers/with.js
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
import {isEmpty, isFunction} from '../utils';
|
||||
import { isEmpty, isFunction } from '../utils';
|
||||
import Exception from '../exception';
|
||||
|
||||
export default function(instance) {
|
||||
instance.registerHelper('if', function(conditional, options) {
|
||||
if (arguments.length != 2) { throw new Exception('#if requires exactly one argument');}
|
||||
if (isFunction(conditional)) { conditional = conditional.call(this); }
|
||||
|
||||
// Default behavior is to render the positive path if the value is truthy and not empty.
|
||||
@@ -15,6 +17,7 @@ export default function(instance) {
|
||||
});
|
||||
|
||||
instance.registerHelper('unless', function(conditional, options) {
|
||||
if (arguments.length != 2) { throw new Exception('#unless requires exactly one argument');}
|
||||
return instance.helpers['if'].call(this, conditional, {fn: options.inverse, inverse: options.fn, hash: options.hash});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import {isEmpty, isFunction} from '../utils';
|
||||
import Exception from '../exception';
|
||||
|
||||
export default function(instance) {
|
||||
instance.registerHelper('with', function(context, options) {
|
||||
if (arguments.length != 2) { throw new Exception('#with requires exactly one argument');}
|
||||
if (isFunction(context)) { context = context.call(this); }
|
||||
|
||||
let fn = options.fn;
|
||||
|
||||
@@ -766,4 +766,70 @@ describe('helpers', function() {
|
||||
shouldCompileTo('{{#if bar}}{{else goodbyes as |value|}}{{value}}{{/if}}{{value}}', [hash, helpers], '1foo');
|
||||
});
|
||||
});
|
||||
|
||||
describe('built-in helpers malformed arguments ', function() {
|
||||
it('if helper - too few arguments', function() {
|
||||
var template = CompilerContext.compile('{{#if}}{{/if}}');
|
||||
shouldThrow(function() {
|
||||
|
||||
template({});
|
||||
}, undefined, /#if requires exactly one argument/);
|
||||
});
|
||||
|
||||
it('if helper - too many arguments, string', function() {
|
||||
var template = CompilerContext.compile('{{#if test "string"}}{{/if}}');
|
||||
shouldThrow(function() {
|
||||
|
||||
template({});
|
||||
}, undefined, /#if requires exactly one argument/);
|
||||
});
|
||||
|
||||
it('if helper - too many arguments, undefined', function() {
|
||||
var template = CompilerContext.compile('{{#if test undefined}}{{/if}}');
|
||||
shouldThrow(function() {
|
||||
|
||||
template({});
|
||||
}, undefined, /#if requires exactly one argument/);
|
||||
});
|
||||
|
||||
it('if helper - too many arguments, null', function() {
|
||||
var template = CompilerContext.compile('{{#if test null}}{{/if}}');
|
||||
shouldThrow(function() {
|
||||
|
||||
template({});
|
||||
}, undefined, /#if requires exactly one argument/);
|
||||
});
|
||||
|
||||
it('unless helper - too few arguments', function() {
|
||||
var template = CompilerContext.compile('{{#unless}}{{/unless}}');
|
||||
shouldThrow(function() {
|
||||
|
||||
template({});
|
||||
}, undefined, /#unless requires exactly one argument/);
|
||||
});
|
||||
|
||||
it('unless helper - too many arguments', function() {
|
||||
var template = CompilerContext.compile('{{#unless test null}}{{/unless}}');
|
||||
shouldThrow(function() {
|
||||
|
||||
template({});
|
||||
}, undefined, /#unless requires exactly one argument/);
|
||||
});
|
||||
|
||||
it('with helper - too few arguments', function() {
|
||||
var template = CompilerContext.compile('{{#with}}{{/with}}');
|
||||
shouldThrow(function() {
|
||||
|
||||
template({});
|
||||
}, undefined, /#with requires exactly one argument/);
|
||||
});
|
||||
|
||||
it('with helper - too many arguments', function() {
|
||||
var template = CompilerContext.compile('{{#with test "string"}}{{/with}}');
|
||||
shouldThrow(function() {
|
||||
|
||||
template({});
|
||||
}, undefined, /#with requires exactly one argument/);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user