spec/dslh_spec.rb in dslh-0.3.0 vs spec/dslh_spec.rb in dslh-0.3.1

- old
+ new

@@ -17,12 +17,12 @@ key1 'value' key2 100 end expect(h).to eq({ - :key1 => 'value', - :key2 => 100, + 'key1' => 'value', + 'key2' => 100, }) end it 'should be nested hash' do h = Dslh.eval do @@ -44,16 +44,16 @@ end end end expect(h).to eq( - {:key1=>"value", - :key2=>100, - :key3=> - {:key31=>{"value31"=>{:key311=>100, :key312=>"200"}}, - :key32=> - {:key321=>{"value321"=>{:key3211=>"XXX", :key3212=>:XXX}}, :key322=>300}}} + {'key1'=>"value", + 'key2'=>100, + 'key3'=> + {'key31'=>{"value31"=>{'key311'=>100, 'key312'=>"200"}}, + 'key32'=> + {'key321'=>{"value321"=>{'key3211'=>"XXX", 'key3212'=>:XXX}}, 'key322'=>300}}} ) end it 'should be nested hash with _()' do h = Dslh.eval do @@ -75,16 +75,16 @@ end end end expect(h).to eq( - {:key1=>"value", - :key2=>100, - :key3=> - {:key31=>{:key311=>100, :key312=>"200"}, + {'key1'=>"value", + 'key2'=>100, + 'key3'=> + {'key31'=>{'key311'=>100, 'key312'=>"200"}, 'key32'=> - {:key321=>{:key3211=>"XXX", :key3212=>:XXX}, :key322=>300}}} + {'key321'=>{'key3211'=>"XXX", 'key3212'=>:XXX}, 'key322'=>300}}} ) end it 'should be nested hash with block args' do h = Dslh.eval do @@ -106,16 +106,16 @@ end end end expect(h).to eq( - {:key1=>"value", - :key2=>100, - :key3=> - {:key31=>{"value31"=>{:key311=>100, :key312=>"200 key3 key31"}}, - :key32=> - {:key321=>{"value321"=>{:key3211=>"XXX key3 key32 key321", :key3212=>:XXX}}, :key322=>300}}} + {'key1'=>"value", + 'key2'=>100, + 'key3'=> + {'key31'=>{"value31"=>{'key311'=>100, 'key312'=>"200 key3 key31"}}, + 'key32'=> + {'key321'=>{"value321"=>{'key3211'=>"XXX key3 key32 key321", 'key3212'=>:XXX}}, 'key322'=>300}}} ) end it 'can pass hash argument' do h = Dslh.eval do @@ -135,19 +135,19 @@ key42 100 end end expect(h).to eq( - {:key1=>"value", - :key2=>100, - :key3=>{100=>200, "XXX"=>:XXX}, - :key4=>{:key41=>{"300"=>"400", :FOO=>:BAR}, :key42=>100}} + {'key1'=>"value", + 'key2'=>100, + 'key3'=>{100=>200, "XXX"=>:XXX}, + 'key4'=>{'key41'=>{"300"=>"400", :FOO=>:BAR}, 'key42'=>100}} ) end it 'should convert hash key/value' do - h = Dslh.eval :conv => proc {|i| i.to_s } do + h = Dslh.eval :conv => proc {|i| i.to_s.to_sym } do key1 'value' key2 100 key3 do key31 "value31" do @@ -164,22 +164,22 @@ end end end expect(h).to eq( - {"key1"=>"value", - "key2"=>"100", - "key3"=> - {"key31"=>{"value31"=>{"key311"=>"100", "key312"=>"200"}}, - "key32"=> - {"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>"XXX"}}, - "key322"=>"300"}}} + {:key1=>:value, + :key2=>:"100", + :key3=> + {:key31=>{:value31=>{:key311=>:"100", :key312=>:"200"}}, + :key32=> + {:key321=>{:value321=>{:key3211=>:XXX, :key3212=>:XXX}}, + :key322=>:"300"}}} ) end it 'should convert hash key' do - h = Dslh.eval :key_conv => proc {|i| i.to_s } do + h = Dslh.eval :key_conv => proc {|i| i.to_s.to_sym } do key1 'value' key2 100 key3 do key31 "value31" do @@ -196,17 +196,17 @@ end end end expect(h).to eq( - {"key1"=>"value", - "key2"=>100, - "key3"=> - {"key31"=>{"value31"=>{"key311"=>100, "key312"=>"200"}}, - "key32"=> - {"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>:XXX}}, - "key322"=>300}}} + {:key1=>"value", + :key2=>100, + :key3=> + {:key31=>{"value31"=>{:key311=>100, :key312=>"200"}}, + :key32=> + {:key321=>{"value321"=>{:key3211=>"XXX", :key3212=>:XXX}}, + :key322=>300}}} ) end it 'should convert hash value' do h = Dslh.eval :value_conv => proc {|i| i.to_s } do @@ -228,17 +228,17 @@ end end end expect(h).to eq( - {:key1=>"value", - :key2=>"100", - :key3=> - {:key31=>{"value31"=>{:key311=>"100", :key312=>"200"}}, - :key32=> - {:key321=>{"value321"=>{:key3211=>"XXX", :key3212=>"XXX"}}, - :key322=>"300"}}} + {"key1"=>"value", + "key2"=>"100", + "key3"=> + {"key31"=>{"value31"=>{"key311"=>"100", "key312"=>"200"}}, + "key32"=> + {"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>"XXX"}}, + "key322"=>"300"}}} ) end it 'can pass multiple argument' do h = Dslh.eval do @@ -255,14 +255,14 @@ key42 '200' end end expect(h).to eq( - {:key1=>["value", "value2"], - :key2=>[100, 200], - :key3=>{:key31=>[:FOO, :BAR], :key32=>["ZOO", "BAZ"]}, - :key4=>{["value4", "value42"]=>{:key41=>100, :key42=>"200"}}} + {"key1"=>["value", "value2"], + "key2"=>[100, 200], + "key3"=>{"key31"=>[:FOO, :BAR], "key32"=>["ZOO", "BAZ"]}, + "key4"=>{["value4", "value42"]=>{"key41"=>100, "key42"=>"200"}}} ) end it 'should evalute string' do expr = <<-EOS @@ -286,16 +286,16 @@ EOS h = Dslh.eval(expr) expect(h).to eq( - {:key1=>"value", - :key2=>100, - :key3=> - {:key31=>{"value31"=>{:key311=>100, :key312=>"200"}}, - :key32=> - {:key321=>{"value321"=>{:key3211=>"XXX", :key3212=>:XXX}}, :key322=>300}}} + {"key1"=>"value", + "key2"=>100, + "key3"=> + {"key31"=>{"value31"=>{"key311"=>100, "key312"=>"200"}}, + "key32"=> + {"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>:XXX}}, "key322"=>300}}} ) end it 'should evalute string with filename/lineno' do expr = <<-EOS @@ -319,28 +319,28 @@ EOS h = Dslh.eval(expr, :filename => 'my.rb', :lineno => 100) expect(h).to eq( - {:key1=>"value", - :key2=>100, - :key3=> - {:key31=>{"value31"=>{:key311=>100, :key312=>"200"}}, - :key32=> - {:key321=>{"value321"=>{:key3211=>"XXX", :key3212=>:XXX}}, :key322=>300}}} + {"key1"=>"value", + "key2"=>100, + "key3"=> + {"key31"=>{"value31"=>{"key311"=>100, "key312"=>"200"}}, + "key32"=> + {"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>:XXX}}, "key322"=>300}}} ) end it 'should convert array' do h = Dslh.eval :value_conv => proc {|i| i.to_s } do key1 'value1', 'value2' key2 100, 200 end expect(h).to eq( - {:key1 => ["value1", "value2"], - :key2 => ["100", "200"]} + {"key1" => ["value1", "value2"], + "key2" => ["100", "200"]} ) end it 'should share context' do h = Dslh.eval :value_conv => proc {|i| i.to_s } do @@ -363,14 +363,14 @@ end key3 var3 end expect(h).to eq( - {:key1=>"123", - :key2=> - {:key21=>"123", :key22=>{:key221=>"123", :key222=>"FOO"}, :key23=>"BAR"}, - :key3=>"ZOO"} + {"key1"=>"123", + "key2"=> + {"key21"=>"123", "key22"=>{"key221"=>"123", "key222"=>"FOO"}, "key23"=>"BAR"}, + "key3"=>"ZOO"} ) end it 'should hook scope' do scope_hook = proc do |scope| @@ -389,11 +389,11 @@ key221 func end end end - expect(h).to eq({:key1=>123, :key2=>{:key21=>123, :key22=>{:key221=>123}}}) + expect(h).to eq({"key1"=>123, "key2"=>{"key21"=>123, "key22"=>{"key221"=>123}}}) end it 'should convert hash to dsl' do h = {"glossary"=> {"title"=>"example glossary", @@ -542,11 +542,11 @@ end key322 300 end end end - }.to raise_error('duplicate key :key2') + }.to raise_error('duplicate key "key2"') expect { Dslh.eval do key1 'value' key2 100 @@ -564,11 +564,11 @@ end key322 300 end end end - }.to raise_error('duplicate key :key31') + }.to raise_error('duplicate key "key31"') expect { Dslh.eval do key1 'value' key2 100 @@ -586,11 +586,11 @@ end key322 300 end end end - }.to raise_error('duplicate key :key311') + }.to raise_error('duplicate key "key311"') end it 'allow duplicate key' do expect { Dslh.eval(:allow_duplicate => true) do @@ -704,16 +704,16 @@ end end end expect(h).to eq( - {:key1=>"value", - :key2=>100, - :key3=> - {:key31=>{"value31"=>{:key311=>nil, :key312=>"200"}}, - :key32=> - {:key321=>{"value321"=>{:key3211=>"XXX", :key3212=>:XXX}}, :key322=>300}}} + {"key1"=>"value", + "key2"=>100, + "key3"=> + {"key31"=>{"value31"=>{"key311"=>nil, "key312"=>"200"}}, + "key32"=> + {"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>:XXX}}, "key322"=>300}}} ) }.to_not raise_error end it 'should convert hash to dsl with value_conv' do @@ -2522,12 +2522,55 @@ end end expect(h).to eq( {"system"=> - {:key1=>"value", - :key2=>100, - :key3=>{100=>200, "XXX"=>:XXX}, - :key4=>{"system"=>{"300"=>"400", :FOO=>:BAR}, :key42=>100}}} + {"key1"=>"value", + "key2"=>100, + "key3"=>{100=>200, "XXX"=>:XXX}, + "key4"=>{"system"=>{"300"=>"400", :FOO=>:BAR}, "key42"=>100}}} ) + end + + it 'should convert hash to dsl (symbol key)' do + h = {:glossary=> + {:title=>"example glossary", + :GlossDiv=> + {:title=>"S", + :GlossList=> + {:GlossEntry=> + {:ID=>"SGML", + :SortAs=>"SGML", + :GlossTerm=>"Standard Generalized Markup Language", + :Acronym=>"SGML", + :Abbrev=>"ISO 8879:1986", + :GlossDef=> + {:para=> + "A meta-markup language, used to create markup languages such as DocBook.", + :GlossSeeAlso=>["GML", "XML"]}, + :GlossSee=>"markup"}}}}} + + dsl = Dslh.deval(h) + expect(dsl).to eq(<<-EOS) +glossary do + title "example glossary" + GlossDiv do + title "S" + GlossList do + GlossEntry do + ID "SGML" + SortAs "SGML" + GlossTerm "Standard Generalized Markup Language" + Acronym "SGML" + Abbrev "ISO 8879:1986" + GlossDef do + para "A meta-markup language, used to create markup languages such as DocBook." + GlossSeeAlso "GML", "XML" + end + GlossSee "markup" + end + end + end +end + EOS end end