Merge pull request #388 from dmarcotte/empty-inverse-blocks

Allow empty blocks around simple inverses
This commit is contained in:
Yehuda Katz
2012-12-23 20:31:46 -08:00
2 changed files with 128 additions and 1 deletions
+124
View File
@@ -261,6 +261,130 @@ describe "Parser" do
end
end
it "parses an inverse ('else'-style) section" do
ast_for("{{#foo}} bar {{else}} baz {{/foo}}").should == root do
block do
mustache id("foo")
program do
content " bar "
end
inverse do
content " baz "
end
end
end
end
it "parses empty blocks" do
ast_for("{{#foo}}{{/foo}}").should == root do
block do
mustache id("foo")
program do
# empty program
end
end
end
end
it "parses empty blocks with empty inverse section" do
ast_for("{{#foo}}{{^}}{{/foo}}").should == root do
block do
mustache id("foo")
program do
# empty program
end
inverse do
# empty inverse
end
end
end
end
it "parses empty blocks with empty inverse ('else'-style) section" do
ast_for("{{#foo}}{{else}}{{/foo}}").should == root do
block do
mustache id("foo")
program do
# empty program
end
inverse do
# empty inverse
end
end
end
end
it "parses non-empty blocks with empty inverse section" do
ast_for("{{#foo}} bar {{^}}{{/foo}}").should == root do
block do
mustache id("foo")
program do
content " bar "
end
inverse do
# empty inverse
end
end
end
end
it "parses non-empty blocks with empty inverse ('else'-style) section" do
ast_for("{{#foo}} bar {{else}}{{/foo}}").should == root do
block do
mustache id("foo")
program do
content " bar "
end
inverse do
# empty inverse
end
end
end
end
it "parses empty blocks with non-empty inverse section" do
ast_for("{{#foo}}{{^}} bar {{/foo}}").should == root do
block do
mustache id("foo")
program do
# empty program
end
inverse do
content " bar "
end
end
end
end
it "parses empty blocks with non-empty inverse ('else'-style) section" do
ast_for("{{#foo}}{{else}} bar {{/foo}}").should == root do
block do
mustache id("foo")
program do
# empty program
end
inverse do
content " bar "
end
end
end
end
it "parses a standalone inverse section" do
ast_for("{{^foo}}bar{{/foo}}").should == root do
block do
+4 -1
View File
@@ -7,8 +7,11 @@ root
;
program
: statements simpleInverse statements { $$ = new yy.ProgramNode($1, $3); }
: simpleInverse statements { $$ = new yy.ProgramNode([], $2); }
| statements simpleInverse statements { $$ = new yy.ProgramNode($1, $3); }
| statements simpleInverse { $$ = new yy.ProgramNode($1, []); }
| statements { $$ = new yy.ProgramNode($1); }
| simpleInverse { $$ = new yy.ProgramNode([], []); }
| "" { $$ = new yy.ProgramNode([]); }
;