dslh 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +15 -15
- data/lib/dslh.rb +1 -1
- data/lib/dslh/version.rb +1 -1
- data/spec/dslh_spec.rb +125 -82
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 069a25cadfe07e5fb94b13999c621805b209934f
|
4
|
+
data.tar.gz: 61352ba15ae2c64775f6ee6498142cf4343f3004
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cee130b7d63b7288c7b4db402117562d290fc1d29dbf9a94a494d7f27d7ef992685df441b8510a050b40b3f3f6db66a9766cc40262d3de617b239895c391acbf
|
7
|
+
data.tar.gz: 2d76120513c6ce2b5fdff0236b1c3e4160d548f8523c30d61ed70c623c9611f640a8983b47639150336da8a0d3632fb590237db5ef4d7cd350eb5b7f2ca73437
|
data/README.md
CHANGED
@@ -62,22 +62,22 @@ pp h
|
|
62
62
|
|
63
63
|
```ruby
|
64
64
|
# h =>
|
65
|
-
{
|
66
|
-
{
|
67
|
-
|
68
|
-
{
|
69
|
-
|
70
|
-
{
|
71
|
-
{
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
{
|
65
|
+
{"glossary"=>
|
66
|
+
{"title"=>"example glossary",
|
67
|
+
"GlossDiv"=>
|
68
|
+
{"title"=>"S",
|
69
|
+
"GlossList"=>
|
70
|
+
{"GlossEntry"=>
|
71
|
+
{"ID"=>"SGML",
|
72
|
+
"SortAs"=>"SGML",
|
73
|
+
"GlossTerm"=>"Standard Generalized Markup Language",
|
74
|
+
"Acronym"=>"SGML",
|
75
|
+
"Abbrev"=>"ISO 8879:1986",
|
76
|
+
"GlossDef"=>
|
77
|
+
{"para"=>
|
78
78
|
"A meta-markup language, used to create markup languages such as DocBook.",
|
79
|
-
|
80
|
-
|
79
|
+
"GlossSeeAlso"=>["GML", "XML"]},
|
80
|
+
"GlossSee"=>"markup"}}}}}
|
81
81
|
```
|
82
82
|
|
83
83
|
### deval
|
data/lib/dslh.rb
CHANGED
data/lib/dslh/version.rb
CHANGED
data/spec/dslh_spec.rb
CHANGED
@@ -19,8 +19,8 @@ describe Dslh do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
expect(h).to eq({
|
22
|
-
|
23
|
-
|
22
|
+
'key1' => 'value',
|
23
|
+
'key2' => 100,
|
24
24
|
})
|
25
25
|
end
|
26
26
|
|
@@ -46,12 +46,12 @@ describe Dslh do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
expect(h).to eq(
|
49
|
-
{
|
50
|
-
|
51
|
-
|
52
|
-
{
|
53
|
-
|
54
|
-
{
|
49
|
+
{'key1'=>"value",
|
50
|
+
'key2'=>100,
|
51
|
+
'key3'=>
|
52
|
+
{'key31'=>{"value31"=>{'key311'=>100, 'key312'=>"200"}},
|
53
|
+
'key32'=>
|
54
|
+
{'key321'=>{"value321"=>{'key3211'=>"XXX", 'key3212'=>:XXX}}, 'key322'=>300}}}
|
55
55
|
)
|
56
56
|
end
|
57
57
|
|
@@ -77,12 +77,12 @@ describe Dslh do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
expect(h).to eq(
|
80
|
-
{
|
81
|
-
|
82
|
-
|
83
|
-
{
|
80
|
+
{'key1'=>"value",
|
81
|
+
'key2'=>100,
|
82
|
+
'key3'=>
|
83
|
+
{'key31'=>{'key311'=>100, 'key312'=>"200"},
|
84
84
|
'key32'=>
|
85
|
-
{
|
85
|
+
{'key321'=>{'key3211'=>"XXX", 'key3212'=>:XXX}, 'key322'=>300}}}
|
86
86
|
)
|
87
87
|
end
|
88
88
|
|
@@ -108,12 +108,12 @@ describe Dslh do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
expect(h).to eq(
|
111
|
-
{
|
112
|
-
|
113
|
-
|
114
|
-
{
|
115
|
-
|
116
|
-
{
|
111
|
+
{'key1'=>"value",
|
112
|
+
'key2'=>100,
|
113
|
+
'key3'=>
|
114
|
+
{'key31'=>{"value31"=>{'key311'=>100, 'key312'=>"200 key3 key31"}},
|
115
|
+
'key32'=>
|
116
|
+
{'key321'=>{"value321"=>{'key3211'=>"XXX key3 key32 key321", 'key3212'=>:XXX}}, 'key322'=>300}}}
|
117
117
|
)
|
118
118
|
end
|
119
119
|
|
@@ -137,15 +137,15 @@ describe Dslh do
|
|
137
137
|
end
|
138
138
|
|
139
139
|
expect(h).to eq(
|
140
|
-
{
|
141
|
-
|
142
|
-
|
143
|
-
|
140
|
+
{'key1'=>"value",
|
141
|
+
'key2'=>100,
|
142
|
+
'key3'=>{100=>200, "XXX"=>:XXX},
|
143
|
+
'key4'=>{'key41'=>{"300"=>"400", :FOO=>:BAR}, 'key42'=>100}}
|
144
144
|
)
|
145
145
|
end
|
146
146
|
|
147
147
|
it 'should convert hash key/value' do
|
148
|
-
h = Dslh.eval :conv => proc {|i| i.to_s } do
|
148
|
+
h = Dslh.eval :conv => proc {|i| i.to_s.to_sym } do
|
149
149
|
key1 'value'
|
150
150
|
key2 100
|
151
151
|
|
@@ -166,18 +166,18 @@ describe Dslh do
|
|
166
166
|
end
|
167
167
|
|
168
168
|
expect(h).to eq(
|
169
|
-
{
|
170
|
-
|
171
|
-
|
172
|
-
{
|
173
|
-
|
174
|
-
{
|
175
|
-
|
169
|
+
{:key1=>:value,
|
170
|
+
:key2=>:"100",
|
171
|
+
:key3=>
|
172
|
+
{:key31=>{:value31=>{:key311=>:"100", :key312=>:"200"}},
|
173
|
+
:key32=>
|
174
|
+
{:key321=>{:value321=>{:key3211=>:XXX, :key3212=>:XXX}},
|
175
|
+
:key322=>:"300"}}}
|
176
176
|
)
|
177
177
|
end
|
178
178
|
|
179
179
|
it 'should convert hash key' do
|
180
|
-
h = Dslh.eval :key_conv => proc {|i| i.to_s } do
|
180
|
+
h = Dslh.eval :key_conv => proc {|i| i.to_s.to_sym } do
|
181
181
|
key1 'value'
|
182
182
|
key2 100
|
183
183
|
|
@@ -198,13 +198,13 @@ describe Dslh do
|
|
198
198
|
end
|
199
199
|
|
200
200
|
expect(h).to eq(
|
201
|
-
{
|
202
|
-
|
203
|
-
|
204
|
-
{
|
205
|
-
|
206
|
-
{
|
207
|
-
|
201
|
+
{:key1=>"value",
|
202
|
+
:key2=>100,
|
203
|
+
:key3=>
|
204
|
+
{:key31=>{"value31"=>{:key311=>100, :key312=>"200"}},
|
205
|
+
:key32=>
|
206
|
+
{:key321=>{"value321"=>{:key3211=>"XXX", :key3212=>:XXX}},
|
207
|
+
:key322=>300}}}
|
208
208
|
)
|
209
209
|
end
|
210
210
|
|
@@ -230,13 +230,13 @@ describe Dslh do
|
|
230
230
|
end
|
231
231
|
|
232
232
|
expect(h).to eq(
|
233
|
-
{
|
234
|
-
|
235
|
-
|
236
|
-
{
|
237
|
-
|
238
|
-
{
|
239
|
-
|
233
|
+
{"key1"=>"value",
|
234
|
+
"key2"=>"100",
|
235
|
+
"key3"=>
|
236
|
+
{"key31"=>{"value31"=>{"key311"=>"100", "key312"=>"200"}},
|
237
|
+
"key32"=>
|
238
|
+
{"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>"XXX"}},
|
239
|
+
"key322"=>"300"}}}
|
240
240
|
)
|
241
241
|
end
|
242
242
|
|
@@ -257,10 +257,10 @@ describe Dslh do
|
|
257
257
|
end
|
258
258
|
|
259
259
|
expect(h).to eq(
|
260
|
-
{
|
261
|
-
|
262
|
-
|
263
|
-
|
260
|
+
{"key1"=>["value", "value2"],
|
261
|
+
"key2"=>[100, 200],
|
262
|
+
"key3"=>{"key31"=>[:FOO, :BAR], "key32"=>["ZOO", "BAZ"]},
|
263
|
+
"key4"=>{["value4", "value42"]=>{"key41"=>100, "key42"=>"200"}}}
|
264
264
|
)
|
265
265
|
end
|
266
266
|
|
@@ -288,12 +288,12 @@ describe Dslh do
|
|
288
288
|
h = Dslh.eval(expr)
|
289
289
|
|
290
290
|
expect(h).to eq(
|
291
|
-
{
|
292
|
-
|
293
|
-
|
294
|
-
{
|
295
|
-
|
296
|
-
{
|
291
|
+
{"key1"=>"value",
|
292
|
+
"key2"=>100,
|
293
|
+
"key3"=>
|
294
|
+
{"key31"=>{"value31"=>{"key311"=>100, "key312"=>"200"}},
|
295
|
+
"key32"=>
|
296
|
+
{"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>:XXX}}, "key322"=>300}}}
|
297
297
|
)
|
298
298
|
end
|
299
299
|
|
@@ -321,12 +321,12 @@ describe Dslh do
|
|
321
321
|
h = Dslh.eval(expr, :filename => 'my.rb', :lineno => 100)
|
322
322
|
|
323
323
|
expect(h).to eq(
|
324
|
-
{
|
325
|
-
|
326
|
-
|
327
|
-
{
|
328
|
-
|
329
|
-
{
|
324
|
+
{"key1"=>"value",
|
325
|
+
"key2"=>100,
|
326
|
+
"key3"=>
|
327
|
+
{"key31"=>{"value31"=>{"key311"=>100, "key312"=>"200"}},
|
328
|
+
"key32"=>
|
329
|
+
{"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>:XXX}}, "key322"=>300}}}
|
330
330
|
)
|
331
331
|
end
|
332
332
|
|
@@ -337,8 +337,8 @@ describe Dslh do
|
|
337
337
|
end
|
338
338
|
|
339
339
|
expect(h).to eq(
|
340
|
-
{
|
341
|
-
|
340
|
+
{"key1" => ["value1", "value2"],
|
341
|
+
"key2" => ["100", "200"]}
|
342
342
|
)
|
343
343
|
end
|
344
344
|
|
@@ -365,10 +365,10 @@ describe Dslh do
|
|
365
365
|
end
|
366
366
|
|
367
367
|
expect(h).to eq(
|
368
|
-
{
|
369
|
-
|
370
|
-
{
|
371
|
-
|
368
|
+
{"key1"=>"123",
|
369
|
+
"key2"=>
|
370
|
+
{"key21"=>"123", "key22"=>{"key221"=>"123", "key222"=>"FOO"}, "key23"=>"BAR"},
|
371
|
+
"key3"=>"ZOO"}
|
372
372
|
)
|
373
373
|
end
|
374
374
|
|
@@ -391,7 +391,7 @@ describe Dslh do
|
|
391
391
|
end
|
392
392
|
end
|
393
393
|
|
394
|
-
expect(h).to eq({
|
394
|
+
expect(h).to eq({"key1"=>123, "key2"=>{"key21"=>123, "key22"=>{"key221"=>123}}})
|
395
395
|
end
|
396
396
|
|
397
397
|
it 'should convert hash to dsl' do
|
@@ -544,7 +544,7 @@ end
|
|
544
544
|
end
|
545
545
|
end
|
546
546
|
end
|
547
|
-
}.to raise_error('duplicate key
|
547
|
+
}.to raise_error('duplicate key "key2"')
|
548
548
|
|
549
549
|
expect {
|
550
550
|
Dslh.eval do
|
@@ -566,7 +566,7 @@ end
|
|
566
566
|
end
|
567
567
|
end
|
568
568
|
end
|
569
|
-
}.to raise_error('duplicate key
|
569
|
+
}.to raise_error('duplicate key "key31"')
|
570
570
|
|
571
571
|
expect {
|
572
572
|
Dslh.eval do
|
@@ -588,7 +588,7 @@ end
|
|
588
588
|
end
|
589
589
|
end
|
590
590
|
end
|
591
|
-
}.to raise_error('duplicate key
|
591
|
+
}.to raise_error('duplicate key "key311"')
|
592
592
|
end
|
593
593
|
|
594
594
|
it 'allow duplicate key' do
|
@@ -706,12 +706,12 @@ end
|
|
706
706
|
end
|
707
707
|
|
708
708
|
expect(h).to eq(
|
709
|
-
{
|
710
|
-
|
711
|
-
|
712
|
-
{
|
713
|
-
|
714
|
-
{
|
709
|
+
{"key1"=>"value",
|
710
|
+
"key2"=>100,
|
711
|
+
"key3"=>
|
712
|
+
{"key31"=>{"value31"=>{"key311"=>nil, "key312"=>"200"}},
|
713
|
+
"key32"=>
|
714
|
+
{"key321"=>{"value321"=>{"key3211"=>"XXX", "key3212"=>:XXX}}, "key322"=>300}}}
|
715
715
|
)
|
716
716
|
}.to_not raise_error
|
717
717
|
end
|
@@ -2524,10 +2524,53 @@ end
|
|
2524
2524
|
|
2525
2525
|
expect(h).to eq(
|
2526
2526
|
{"system"=>
|
2527
|
-
{
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2527
|
+
{"key1"=>"value",
|
2528
|
+
"key2"=>100,
|
2529
|
+
"key3"=>{100=>200, "XXX"=>:XXX},
|
2530
|
+
"key4"=>{"system"=>{"300"=>"400", :FOO=>:BAR}, "key42"=>100}}}
|
2531
2531
|
)
|
2532
2532
|
end
|
2533
|
+
|
2534
|
+
it 'should convert hash to dsl (symbol key)' do
|
2535
|
+
h = {:glossary=>
|
2536
|
+
{:title=>"example glossary",
|
2537
|
+
:GlossDiv=>
|
2538
|
+
{:title=>"S",
|
2539
|
+
:GlossList=>
|
2540
|
+
{:GlossEntry=>
|
2541
|
+
{:ID=>"SGML",
|
2542
|
+
:SortAs=>"SGML",
|
2543
|
+
:GlossTerm=>"Standard Generalized Markup Language",
|
2544
|
+
:Acronym=>"SGML",
|
2545
|
+
:Abbrev=>"ISO 8879:1986",
|
2546
|
+
:GlossDef=>
|
2547
|
+
{:para=>
|
2548
|
+
"A meta-markup language, used to create markup languages such as DocBook.",
|
2549
|
+
:GlossSeeAlso=>["GML", "XML"]},
|
2550
|
+
:GlossSee=>"markup"}}}}}
|
2551
|
+
|
2552
|
+
dsl = Dslh.deval(h)
|
2553
|
+
expect(dsl).to eq(<<-EOS)
|
2554
|
+
glossary do
|
2555
|
+
title "example glossary"
|
2556
|
+
GlossDiv do
|
2557
|
+
title "S"
|
2558
|
+
GlossList do
|
2559
|
+
GlossEntry do
|
2560
|
+
ID "SGML"
|
2561
|
+
SortAs "SGML"
|
2562
|
+
GlossTerm "Standard Generalized Markup Language"
|
2563
|
+
Acronym "SGML"
|
2564
|
+
Abbrev "ISO 8879:1986"
|
2565
|
+
GlossDef do
|
2566
|
+
para "A meta-markup language, used to create markup languages such as DocBook."
|
2567
|
+
GlossSeeAlso "GML", "XML"
|
2568
|
+
end
|
2569
|
+
GlossSee "markup"
|
2570
|
+
end
|
2571
|
+
end
|
2572
|
+
end
|
2573
|
+
end
|
2574
|
+
EOS
|
2575
|
+
end
|
2533
2576
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dslh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Sugawara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|