dslh 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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: