dslh 0.2.4 → 0.2.5
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 +13 -5
- data/README.md +2 -2
- data/lib/dslh.rb +9 -0
- data/lib/dslh/version.rb +1 -1
- data/spec/dslh_spec.rb +136 -0
- metadata +11 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
ZmJmOGFiMjc5MjczZmI1Y2IzZjhiODJmNTYyZmI4YzViMmIzNzVkMQ==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
Y2FhNjliMDRjMGMwMzhhM2Y4YTliMGU0YWNkMTA1NDQzODY4N2EyNg==
|
|
5
7
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
YzkzOTFmODIwMjY5ZWY5YzM5MGFlMDlhYzA5Y2E1MTNhZDA3NTM4YTViZmVl
|
|
10
|
+
MTUyZmYyMzdiZDIzZjhiNjcxNjk1YTkzMTU1OWVhYWE4YzNkOTZhNWFhZDVk
|
|
11
|
+
N2JjM2M5ZWM1NDNlYmM3NTJlYWZlMWIwOTU2OTJmZjE1NDgxMzU=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
NThiOTQwYjRmYTA3MjFlZTQwZDE5ZjMyNDk1MzM0OGUwZGI2YzA1YmU3MDJm
|
|
14
|
+
Zjk0NjkzZjliNzNjMWIzMTMzZWIzNDc3Mzc2ZDEyNzZlODY2M2JkOWYwMzEw
|
|
15
|
+
ZmMzMjc0N2JkYmZkOWFlMmIxOWIxZTQ4NjY2OTM3MzMwNGQ4Yzc=
|
data/README.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
It define Hash as a DSL.
|
|
4
4
|
|
|
5
|
-
[](http://badge.fury.io/rb/dslh)
|
|
6
|
+
[](https://drone.io/github.com/winebarrel/dslh/latest)
|
|
7
7
|
|
|
8
8
|
## Installation
|
|
9
9
|
|
data/lib/dslh.rb
CHANGED
|
@@ -188,6 +188,11 @@ class Dslh
|
|
|
188
188
|
if key
|
|
189
189
|
key_conv = @__options__[:key_conv]
|
|
190
190
|
key = key_conv.call(key) if key_conv
|
|
191
|
+
|
|
192
|
+
if not @__options__[:allow_duplicate] and @__hash__.has_key?(key)
|
|
193
|
+
raise "duplicate key #{key.inspect}"
|
|
194
|
+
end
|
|
195
|
+
|
|
191
196
|
@__hash__[key] = nested_hash
|
|
192
197
|
else
|
|
193
198
|
return nested_hash
|
|
@@ -200,6 +205,10 @@ class Dslh
|
|
|
200
205
|
nested_hash = ScopeBlock.nest(binding, 'block', method_name)
|
|
201
206
|
method_name = key_conv.call(method_name) if key_conv
|
|
202
207
|
|
|
208
|
+
if not @__options__[:allow_duplicate] and @__hash__.has_key?(method_name)
|
|
209
|
+
raise "duplicate key #{method_name.inspect}"
|
|
210
|
+
end
|
|
211
|
+
|
|
203
212
|
if args.empty?
|
|
204
213
|
@__hash__[method_name] = nested_hash
|
|
205
214
|
else
|
data/lib/dslh/version.rb
CHANGED
data/spec/dslh_spec.rb
CHANGED
|
@@ -523,6 +523,142 @@ end
|
|
|
523
523
|
EOS
|
|
524
524
|
end
|
|
525
525
|
|
|
526
|
+
it 'does not allow duplicate key' do
|
|
527
|
+
expect {
|
|
528
|
+
Dslh.eval do
|
|
529
|
+
key1 'value'
|
|
530
|
+
key2 100
|
|
531
|
+
|
|
532
|
+
key2 do
|
|
533
|
+
key31 "value31" do
|
|
534
|
+
key311 100
|
|
535
|
+
key312 '200'
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
key32 do
|
|
539
|
+
key321 "value321" do
|
|
540
|
+
key3211 'XXX'
|
|
541
|
+
key3212 :XXX
|
|
542
|
+
end
|
|
543
|
+
key322 300
|
|
544
|
+
end
|
|
545
|
+
end
|
|
546
|
+
end
|
|
547
|
+
}.to raise_error('duplicate key :key2')
|
|
548
|
+
|
|
549
|
+
expect {
|
|
550
|
+
Dslh.eval do
|
|
551
|
+
key1 'value'
|
|
552
|
+
key2 100
|
|
553
|
+
|
|
554
|
+
key3 do
|
|
555
|
+
key31 "value31" do
|
|
556
|
+
key311 100
|
|
557
|
+
key312 '200'
|
|
558
|
+
end
|
|
559
|
+
|
|
560
|
+
key31 do
|
|
561
|
+
key321 "value321" do
|
|
562
|
+
key3211 'XXX'
|
|
563
|
+
key3212 :XXX
|
|
564
|
+
end
|
|
565
|
+
key322 300
|
|
566
|
+
end
|
|
567
|
+
end
|
|
568
|
+
end
|
|
569
|
+
}.to raise_error('duplicate key :key31')
|
|
570
|
+
|
|
571
|
+
expect {
|
|
572
|
+
Dslh.eval do
|
|
573
|
+
key1 'value'
|
|
574
|
+
key2 100
|
|
575
|
+
|
|
576
|
+
key3 do
|
|
577
|
+
key31 "value31" do
|
|
578
|
+
key311 100
|
|
579
|
+
key311 '200'
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
key32 do
|
|
583
|
+
key321 "value321" do
|
|
584
|
+
key3211 'XXX'
|
|
585
|
+
key3212 :XXX
|
|
586
|
+
end
|
|
587
|
+
key322 300
|
|
588
|
+
end
|
|
589
|
+
end
|
|
590
|
+
end
|
|
591
|
+
}.to raise_error('duplicate key :key311')
|
|
592
|
+
end
|
|
593
|
+
|
|
594
|
+
it 'allow duplicate key' do
|
|
595
|
+
expect {
|
|
596
|
+
Dslh.eval(:allow_duplicate => true) do
|
|
597
|
+
key1 'value'
|
|
598
|
+
key2 100
|
|
599
|
+
|
|
600
|
+
key2 do
|
|
601
|
+
key31 "value31" do
|
|
602
|
+
key311 100
|
|
603
|
+
key312 '200'
|
|
604
|
+
end
|
|
605
|
+
|
|
606
|
+
key32 do
|
|
607
|
+
key321 "value321" do
|
|
608
|
+
key3211 'XXX'
|
|
609
|
+
key3212 :XXX
|
|
610
|
+
end
|
|
611
|
+
key322 300
|
|
612
|
+
end
|
|
613
|
+
end
|
|
614
|
+
end
|
|
615
|
+
}.to_not raise_error
|
|
616
|
+
|
|
617
|
+
expect {
|
|
618
|
+
Dslh.eval(:allow_duplicate => true) do
|
|
619
|
+
key1 'value'
|
|
620
|
+
key2 100
|
|
621
|
+
|
|
622
|
+
key3 do
|
|
623
|
+
key31 "value31" do
|
|
624
|
+
key311 100
|
|
625
|
+
key312 '200'
|
|
626
|
+
end
|
|
627
|
+
|
|
628
|
+
key31 do
|
|
629
|
+
key321 "value321" do
|
|
630
|
+
key3211 'XXX'
|
|
631
|
+
key3212 :XXX
|
|
632
|
+
end
|
|
633
|
+
key322 300
|
|
634
|
+
end
|
|
635
|
+
end
|
|
636
|
+
end
|
|
637
|
+
}.to_not raise_error
|
|
638
|
+
|
|
639
|
+
expect {
|
|
640
|
+
Dslh.eval(:allow_duplicate => true) do
|
|
641
|
+
key1 'value'
|
|
642
|
+
key2 100
|
|
643
|
+
|
|
644
|
+
key3 do
|
|
645
|
+
key31 "value31" do
|
|
646
|
+
key311 100
|
|
647
|
+
key311 '200'
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
key32 do
|
|
651
|
+
key321 "value321" do
|
|
652
|
+
key3211 'XXX'
|
|
653
|
+
key3212 :XXX
|
|
654
|
+
end
|
|
655
|
+
key322 300
|
|
656
|
+
end
|
|
657
|
+
end
|
|
658
|
+
end
|
|
659
|
+
}.to_not raise_error
|
|
660
|
+
end
|
|
661
|
+
|
|
526
662
|
it 'should convert hash to dsl with value_conv' do
|
|
527
663
|
h = {"glossary"=>
|
|
528
664
|
{"title"=>"example glossary",
|
metadata
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dslh
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Genki Sugawara
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-03-
|
|
11
|
+
date: 2014-03-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - '>='
|
|
17
|
+
- - ! '>='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - '>='
|
|
24
|
+
- - ! '>='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - '>='
|
|
31
|
+
- - ! '>='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - '>='
|
|
38
|
+
- - ! '>='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rspec
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - '>='
|
|
45
|
+
- - ! '>='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: 2.11.0
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - '>='
|
|
52
|
+
- - ! '>='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: 2.11.0
|
|
55
55
|
description: It define Hash as a DSL.
|
|
@@ -82,17 +82,17 @@ require_paths:
|
|
|
82
82
|
- lib
|
|
83
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
84
|
requirements:
|
|
85
|
-
- - '>='
|
|
85
|
+
- - ! '>='
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
87
|
version: '0'
|
|
88
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
requirements:
|
|
90
|
-
- - '>='
|
|
90
|
+
- - ! '>='
|
|
91
91
|
- !ruby/object:Gem::Version
|
|
92
92
|
version: '0'
|
|
93
93
|
requirements: []
|
|
94
94
|
rubyforge_project:
|
|
95
|
-
rubygems_version: 2.
|
|
95
|
+
rubygems_version: 2.1.11
|
|
96
96
|
signing_key:
|
|
97
97
|
specification_version: 4
|
|
98
98
|
summary: It define Hash as a DSL.
|
|
@@ -101,4 +101,3 @@ test_files:
|
|
|
101
101
|
- spec/Drupal_Single_Instance.template
|
|
102
102
|
- spec/dslh_spec.rb
|
|
103
103
|
- spec/spec_helper.rb
|
|
104
|
-
has_rdoc:
|