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 CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: bce00164dbac9519528c2fe51039b347f62cddce
4
- data.tar.gz: d6623f383890d4e1942901e146dbf75de5ad26b2
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZmJmOGFiMjc5MjczZmI1Y2IzZjhiODJmNTYyZmI4YzViMmIzNzVkMQ==
5
+ data.tar.gz: !binary |-
6
+ Y2FhNjliMDRjMGMwMzhhM2Y4YTliMGU0YWNkMTA1NDQzODY4N2EyNg==
5
7
  SHA512:
6
- metadata.gz: a3589a330df396ef06d25a1dd50934ec30372b9f6f694b1e372ada3f528a6fdbb247eba1fcd0128766e4d93c3d1401cd0960d6f43bbcdc4949efce8a87c3425a
7
- data.tar.gz: 8549ccdfb535a1065eaff69f155eae51f37577dd6a703ae687800db5f586a8198b636c0de94b2813c24bbe8389a266b89929d6aa7071b1b553c8ed74e24ce01e
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
- [![Gem Version](https://badge.fury.io/rb/dslh.png?201403062101)](http://badge.fury.io/rb/dslh)
6
- [![Build Status](https://drone.io/github.com/winebarrel/dslh/status.png?201403062101)](https://drone.io/github.com/winebarrel/dslh/latest)
5
+ [![Gem Version](https://badge.fury.io/rb/dslh.png?201403101612)](http://badge.fury.io/rb/dslh)
6
+ [![Build Status](https://drone.io/github.com/winebarrel/dslh/status.png?201403101612)](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
@@ -1,3 +1,3 @@
1
1
  class Dslh
2
- VERSION = '0.2.4'
2
+ VERSION = '0.2.5'
3
3
  end
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
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-06 00:00:00.000000000 Z
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.0.14
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: