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