diff options
Diffstat (limited to 'spec/parser_spec.rb')
-rw-r--r-- | spec/parser_spec.rb | 136 |
1 files changed, 134 insertions, 2 deletions
diff --git a/spec/parser_spec.rb b/spec/parser_spec.rb index 2b234d3..d9187ce 100644 --- a/spec/parser_spec.rb +++ b/spec/parser_spec.rb @@ -114,6 +114,10 @@ describe "Parser" do "@#{id}" end + def partial_name(name) + "PARTIAL:#{name}" + end + def path(*parts) "PATH:#{parts.join("/")}" end @@ -218,11 +222,15 @@ describe "Parser" do end it "parses a partial" do - ast_for("{{> foo }}").should == root { partial id("foo") } + ast_for("{{> foo }}").should == root { partial partial_name("foo") } end it "parses a partial with context" do - ast_for("{{> foo bar}}").should == root { partial id("foo"), id("bar") } + ast_for("{{> foo bar}}").should == root { partial partial_name("foo"), id("bar") } + end + + it "parses a partial with a complex name" do + ast_for("{{> shared/partial}}").should == root { partial partial_name("shared/partial") } end it "parses a comment" do @@ -253,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 |