summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/ast.js2
-rw-r--r--spec/compiler.js4
-rw-r--r--spec/parser.js10
-rw-r--r--spec/tokenizer.js14
4 files changed, 26 insertions, 4 deletions
diff --git a/spec/ast.js b/spec/ast.js
index 9b3edb0..ef2ef68 100644
--- a/spec/ast.js
+++ b/spec/ast.js
@@ -192,7 +192,7 @@ describe('ast', function() {
describe('ProgramNode', function(){
it('storing location info', function(){
- var pn = new handlebarsEnv.AST.ProgramNode([], {}, LOCATION_INFO);
+ var pn = new handlebarsEnv.AST.ProgramNode([], null, {}, LOCATION_INFO);
testLocationInfoStorage(pn);
});
});
diff --git a/spec/compiler.js b/spec/compiler.js
index 250dbc7..eead00b 100644
--- a/spec/compiler.js
+++ b/spec/compiler.js
@@ -41,7 +41,7 @@ describe('compiler', function() {
});
it('can utilize AST instance', function() {
- equal(Handlebars.compile(new Handlebars.AST.ProgramNode([ new Handlebars.AST.ContentNode("Hello")], {}))(), 'Hello');
+ equal(Handlebars.compile(new Handlebars.AST.ProgramNode([ new Handlebars.AST.ContentNode("Hello")], null, {}))(), 'Hello');
});
it("can pass through an empty string", function() {
@@ -60,7 +60,7 @@ describe('compiler', function() {
});
it('can utilize AST instance', function() {
- equal(/return "Hello"/.test(Handlebars.precompile(new Handlebars.AST.ProgramNode([ new Handlebars.AST.ContentNode("Hello")]), {})), true);
+ equal(/return "Hello"/.test(Handlebars.precompile(new Handlebars.AST.ProgramNode([ new Handlebars.AST.ContentNode("Hello")]), null, {})), true);
});
it("can pass through an empty string", function() {
diff --git a/spec/parser.js b/spec/parser.js
index f587365..0569229 100644
--- a/spec/parser.js
+++ b/spec/parser.js
@@ -157,6 +157,14 @@ describe('parser', function() {
}, Error);
});
+ it('parses block with block params', function() {
+ equals(ast_for("{{#foo as |bar baz|}}content{{/foo}}"), "BLOCK:\n ID:foo []\n PROGRAM:\n BLOCK PARAMS: [ bar baz ]\n CONTENT[ 'content' ]\n");
+ });
+
+ it('parses inverse block with block params', function() {
+ equals(ast_for("{{^foo as |bar baz|}}content{{/foo}}"), "BLOCK:\n ID:foo []\n {{^}}\n BLOCK PARAMS: [ bar baz ]\n CONTENT[ 'content' ]\n");
+ });
+
it("raises if there's a Parse error", function() {
shouldThrow(function() {
ast_for("foo{{^}}bar");
@@ -193,7 +201,7 @@ describe('parser', function() {
describe('externally compiled AST', function() {
it('can pass through an already-compiled AST', function() {
- equals(ast_for(new Handlebars.AST.ProgramNode([ new Handlebars.AST.ContentNode("Hello")])), "CONTENT[ \'Hello\' ]\n");
+ equals(ast_for(new Handlebars.AST.ProgramNode([new Handlebars.AST.ContentNode("Hello")], null)), "CONTENT[ \'Hello\' ]\n");
});
});
});
diff --git a/spec/tokenizer.js b/spec/tokenizer.js
index 6f5cc38..93ed97c 100644
--- a/spec/tokenizer.js
+++ b/spec/tokenizer.js
@@ -399,4 +399,18 @@ describe('Tokenizer', function() {
var result = tokenize("{{foo (bar (lol true) false) (baz 1) (blah 'b') (blorg \"c\")}}");
shouldMatchTokens(result, ['OPEN', 'ID', 'OPEN_SEXPR', 'ID', 'OPEN_SEXPR', 'ID', 'BOOLEAN', 'CLOSE_SEXPR', 'BOOLEAN', 'CLOSE_SEXPR', 'OPEN_SEXPR', 'ID', 'NUMBER', 'CLOSE_SEXPR', 'OPEN_SEXPR', 'ID', 'STRING', 'CLOSE_SEXPR', 'OPEN_SEXPR', 'ID', 'STRING', 'CLOSE_SEXPR', 'CLOSE']);
});
+
+ it('tokenizes block params', function() {
+ var result = tokenize("{{#foo as |bar|}}");
+ shouldMatchTokens(result, ['OPEN_BLOCK', 'ID', 'OPEN_BLOCK_PARAMS', 'ID', 'CLOSE_BLOCK_PARAMS', 'CLOSE']);
+
+ var result = tokenize("{{#foo as |bar baz|}}");
+ shouldMatchTokens(result, ['OPEN_BLOCK', 'ID', 'OPEN_BLOCK_PARAMS', 'ID', 'ID', 'CLOSE_BLOCK_PARAMS', 'CLOSE']);
+
+ var result = tokenize("{{#foo as | bar baz |}}");
+ shouldMatchTokens(result, ['OPEN_BLOCK', 'ID', 'OPEN_BLOCK_PARAMS', 'ID', 'ID', 'CLOSE_BLOCK_PARAMS', 'CLOSE']);
+
+ var result = tokenize("{{#foo as as | bar baz |}}");
+ shouldMatchTokens(result, ['OPEN_BLOCK', 'ID', 'ID', 'OPEN_BLOCK_PARAMS', 'ID', 'ID', 'CLOSE_BLOCK_PARAMS', 'CLOSE']);
+ });
});