iqeo-conf 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  .idea/
2
+ .bundle/
2
3
  .rvmrc
3
4
 
data/Gemfile.lock CHANGED
@@ -1,11 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- iqeo-conf (0.0.9)
4
+ iqeo-conf (0.0.11)
5
+ blankslate (~> 2.1.2.4)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
10
+ blankslate (2.1.2.4)
9
11
  diff-lcs (1.1.3)
10
12
  rake (0.9.2.2)
11
13
  rspec (2.9.0)
data/README.md CHANGED
@@ -87,6 +87,8 @@ Need docs...
87
87
  * Load configurations from a string or file at creation
88
88
  * Iterate over items hash - by delegation to hash
89
89
  * Indifferent hash access - using ActiveSupport/HashWithIndifferentAccess
90
+ * Clean DSL syntax for creating a nested configuration - just a block ?
91
+ * Load configurations from a string or file after creation / in DSL block
90
92
 
91
93
  ## Todo
92
94
 
@@ -94,10 +96,8 @@ Need time (have motivation)...
94
96
 
95
97
  * Configuration file load path
96
98
  * Use an existing configuration for defaults
97
- * Clean DSL syntax for creating a nested configuration - just a block ?
98
- * Load configurations from a string or file after creation / in DSL block
99
- * Option to get hash directly to prevent polluting namespace with delegated hash methods
100
99
  * Blank slate for DSL ? - optional ?
100
+ * Option to get hash directly to prevent polluting namespace with delegated hash methods
101
101
  * Consider issues around deferred interpolation / procs / lambdas etc...
102
102
  * Load other formats into configuration - YAML, CSV, ...anything Enumerable should be easy enough.
103
103
 
data/iqeo-conf.gemspec CHANGED
@@ -17,4 +17,6 @@ Gem::Specification.new do |gem|
17
17
  gem.add_development_dependency "rspec", "~> 2.9.0"
18
18
  gem.add_development_dependency "rake", "~> 0.9.2"
19
19
 
20
+ gem.add_dependency('blankslate', '~> 2.1.2.4')
21
+
20
22
  end
@@ -1,5 +1,5 @@
1
1
  module Iqeo
2
2
  class Configuration
3
- VERSION = "0.0.9"
3
+ VERSION = "0.0.10"
4
4
  end
5
5
  end
@@ -4,9 +4,8 @@ require_relative "configuration/hash_with_indifferent_access"
4
4
 
5
5
  # todo: configuration file load path - array of Dir.glob like file specs ?
6
6
  # todo: use an existing configuration for defaults
7
- # todo: load configurations from a string or file after creation / in DSL block
8
- # todo: option to get hash directly to prevent polluting namespace with delegated hash methods
9
7
  # todo: blank slate for DSL - optional ?
8
+ # todo: option to get hash directly to prevent polluting namespace with delegated hash methods
10
9
  # todo: consider issues around deferred interpolation / procs / lambdas etc...
11
10
  # todo: load other formats from string & file - YAML, CSV, ...anything Enumerable should be easy enough.
12
11
 
@@ -57,7 +56,7 @@ module Iqeo
57
56
  def method_missing name, *values, &block
58
57
  return @items.send( name, *values, &block ) if @items.respond_to? name # @items methods are highest priority
59
58
 
60
- name = name.to_s.chomp('=') # todo: write a test case for a non-string object as key being converted by .to_s
59
+ name = name.to_s.chomp('=')
61
60
 
62
61
  if block_given? # block is a nested configuration
63
62
  if block.arity == 1 # yield DSL needs deferred block to set parent without binding
@@ -72,10 +71,10 @@ module Iqeo
72
71
  return _set name, values.first # set item to single value
73
72
  end
74
73
 
75
- attr_accessor :_parent # todo: should attr_writer be protected ?
74
+ attr_accessor :_parent
76
75
 
77
76
  def _set key, value
78
- # todo: extend parenting for enumerable with configurations at arbitrary depth ?
77
+ # fix: extend parenting for enumerable with configurations at arbitrary depth
79
78
  case
80
79
  when value.kind_of?( Configuration ) then value._parent = self
81
80
  when value.kind_of?( Enumerable ) then value.each { |v| v._parent = self if v.kind_of? Configuration }
@@ -87,10 +86,18 @@ module Iqeo
87
86
  def _get key
88
87
  return @items[key] unless @items[key].nil?
89
88
  return @items[key] if _parent.nil?
90
- return _parent._get key
89
+ _parent._get key
91
90
  end
92
91
  alias [] _get
93
92
 
93
+ def _read string
94
+ instance_eval string
95
+ end
96
+
97
+ def _file file
98
+ _read file.respond_to?(:read) ? file.read : File.read(file)
99
+ end
100
+
94
101
  end
95
102
 
96
103
  end
Binary file
@@ -10,32 +10,125 @@ describe Configuration do
10
10
  Configuration.version.should == Configuration::VERSION
11
11
  end
12
12
 
13
- context 'creation' do
13
+ context 'at creation' do
14
14
 
15
15
  it 'does not require a block' do
16
16
  Configuration.new.should be_a Configuration
17
17
  end
18
18
 
19
- it 'accepts a block with arity 0' do
19
+ it 'accept a block with arity 0' do
20
20
  Configuration.new { }.should be_a Configuration
21
21
  end
22
22
 
23
- it 'instance_eval\'s block with arity 0' do
23
+ it 'instance_eval a block with arity 0' do
24
24
  conf_eval = nil
25
25
  conf_new = Configuration.new { conf_eval = self }
26
26
  conf_new.should be conf_eval
27
27
  end
28
28
 
29
- it 'accepts a block with arity 1' do
29
+ it 'accept a block with arity 1' do
30
30
  Configuration.new { |arg| }.should be_a Configuration
31
31
  end
32
32
 
33
- it 'yields self to block with arity 1' do
33
+ it 'yield self to block with arity 1' do
34
34
  conf_yielded = nil
35
35
  conf_new = Configuration.new { |conf| conf_yielded = conf }
36
36
  conf_new.should be conf_yielded
37
37
  end
38
38
 
39
+ context 'can load' do
40
+
41
+ it 'simple instance_eval DSL from string' do
42
+ string = "alpha 1
43
+ bravo 'two'
44
+ charlie 3.0
45
+ delta :four"
46
+ conf = nil
47
+ expect do
48
+ conf = Configuration.read string
49
+ end.to_not raise_error
50
+ conf.should_not be_nil
51
+ conf.alpha.should == 1 and conf.alpha.should be_a Fixnum
52
+ conf.bravo.should == "two" and conf.bravo.should be_a String
53
+ conf.charlie.should == 3.0 and conf.charlie.should be_a Float
54
+ conf.delta.should == :four and conf.delta.should be_a Symbol
55
+ end
56
+
57
+ it 'simple instance_eval DSL from file (StringIO)' do
58
+ io = StringIO.new "alpha 1
59
+ bravo 'two'
60
+ charlie 3.0
61
+ delta :four"
62
+ conf = nil
63
+ expect do
64
+ conf = Configuration.file io
65
+ end.to_not raise_error
66
+ conf.should_not be_nil
67
+ conf.alpha.should == 1 and conf.alpha.should be_a Fixnum
68
+ conf.bravo.should == "two" and conf.bravo.should be_a String
69
+ conf.charlie.should == 3.0 and conf.charlie.should be_a Float
70
+ conf.delta.should == :four and conf.delta.should be_a Symbol
71
+ end
72
+
73
+ it 'simple instance_eval DSL from file (mock & expected methods)' do
74
+ file = mock
75
+ file.should_receive( :respond_to? ).with( :read ).and_return true
76
+ file.should_receive( :read ).and_return "alpha 1
77
+ bravo 'two'
78
+ charlie 3.0
79
+ delta :four"
80
+ conf = nil
81
+ expect do
82
+ conf = Configuration.file file
83
+ end.to_not raise_error
84
+ conf.should_not be_nil
85
+ conf.alpha.should == 1 and conf.alpha.should be_a Fixnum
86
+ conf.bravo.should == "two" and conf.bravo.should be_a String
87
+ conf.charlie.should == 3.0 and conf.charlie.should be_a Float
88
+ conf.delta.should == :four and conf.delta.should be_a Symbol
89
+ end
90
+
91
+ it 'simple instance_eval DSL from filename (expected methods)' do
92
+ File.should_receive( :read ).with( "filename" ).and_return "alpha 1
93
+ bravo 'two'
94
+ charlie 3.0
95
+ delta :four"
96
+ conf = nil
97
+ expect do
98
+ conf = Configuration.file "filename"
99
+ end.to_not raise_error
100
+ conf.should_not be_nil
101
+ conf.alpha.should == 1 and conf.alpha.should be_a Fixnum
102
+ conf.bravo.should == "two" and conf.bravo.should be_a String
103
+ conf.charlie.should == 3.0 and conf.charlie.should be_a Float
104
+ conf.delta.should == :four and conf.delta.should be_a Symbol
105
+ end
106
+
107
+ it 'complex instance_eval DSL from string' do
108
+ string = "alpha true
109
+ bravo do
110
+ charlie true
111
+ delta do
112
+ echo true
113
+ end
114
+ end"
115
+ conf = nil
116
+ expect do
117
+ conf = Configuration.read string
118
+ end.to_not raise_error
119
+ conf.should_not be_nil
120
+ conf.alpha.should be_true
121
+ conf.bravo.should be_a Configuration
122
+ conf.bravo.alpha should be_true
123
+ conf.bravo.charlie should be_true
124
+ conf.bravo.delta.should be_a Configuration
125
+ conf.bravo.delta.alpha.should be_true
126
+ conf.bravo.delta.charlie.should be_true
127
+ conf.bravo.delta.echo.should be_true
128
+ end
129
+
130
+ end # loads
131
+
39
132
  end # creation
40
133
 
41
134
  context 'settings retrieval' do
@@ -45,6 +138,24 @@ describe Configuration do
45
138
  conf.not_a_setting.should be_nil
46
139
  end
47
140
 
141
+ it 'delegates hash methods to internal hash' do
142
+ conf = nil
143
+ expect do
144
+ conf = Configuration.new
145
+ conf.alpha 1
146
+ conf.bravo 2
147
+ conf.charlie 3
148
+ conf.delta 4
149
+ end.to_not raise_error
150
+ conf.should_not be_nil
151
+ sum = 0
152
+ expect do
153
+ conf.each { |k,v| sum += v }
154
+ end.to_not raise_error
155
+ sum.should == 10
156
+ conf.size.should == 4
157
+ end
158
+
48
159
  end # settings retrieval
49
160
 
50
161
  context 'single value setting' do
@@ -333,75 +444,163 @@ describe Configuration do
333
444
  conf.bravo.should == :value
334
445
  end
335
446
 
336
- it 'supports nested configuration via do..end' do
337
- conf = nil
338
- expect do
339
- conf = Configuration.new do |c1|
340
- c1.alpha true
341
- c1.bravo do |c2|
342
- c2.charlie true
343
- c2.delta do |c3|
344
- c3.echo true
447
+ context 'nested configuration' do
448
+
449
+ it 'supported via do..end' do
450
+ conf = nil
451
+ expect do
452
+ conf = Configuration.new do |c1|
453
+ c1.alpha true
454
+ c1.bravo do |c2|
455
+ c2.charlie true
456
+ c2.delta do |c3|
457
+ c3.echo true
458
+ end
345
459
  end
346
460
  end
347
- end
348
- end.to_not raise_error
349
- conf.should_not be_nil
350
- conf.alpha.should be_true
351
- conf.bravo.should be_a Configuration
352
- conf.bravo.alpha should be_true
353
- conf.bravo.charlie should be_true
354
- conf.bravo.delta.should be_a Configuration
355
- conf.bravo.delta.alpha.should be_true
356
- conf.bravo.delta.charlie.should be_true
357
- conf.bravo.delta.echo.should be_true
358
- end
359
-
360
- it 'supports nested configuration via {..}' do
361
- conf = nil
362
- expect do
363
- conf = Configuration.new { |c1| c1.alpha true ; c1.bravo { |c2| c2.charlie true ; c2.delta { |c3| c3.echo true } } }
364
- end.to_not raise_error
365
- conf.should_not be_nil
366
- conf.alpha.should be_true
367
- conf.bravo.should be_a Configuration
368
- conf.bravo.alpha should be_true
369
- conf.bravo.charlie should be_true
370
- conf.bravo.delta.should be_a Configuration
371
- conf.bravo.delta.alpha.should be_true
372
- conf.bravo.delta.charlie.should be_true
373
- conf.bravo.delta.echo.should be_true
374
- end
375
-
376
- it 'nested configuration can refer to an inherited setting' do
377
- conf = nil
378
- expect do
379
- conf = Configuration.new do |c1|
380
- c1.alpha true
381
- c1.hotel c1.alpha
382
- c1.bravo do |c2|
383
- c2.charlie true
384
- c2.foxtrot c2.alpha
385
- c2.delta do |c3|
386
- c3.echo true
387
- c3.golf c3.alpha
461
+ end.to_not raise_error
462
+ conf.should_not be_nil
463
+ conf.alpha.should be_true
464
+ conf.bravo.should be_a Configuration
465
+ conf.bravo.alpha should be_true
466
+ conf.bravo.charlie should be_true
467
+ conf.bravo.delta.should be_a Configuration
468
+ conf.bravo.delta.alpha.should be_true
469
+ conf.bravo.delta.charlie.should be_true
470
+ conf.bravo.delta.echo.should be_true
471
+ end
472
+
473
+ it 'supported via {..}' do
474
+ conf = nil
475
+ expect do
476
+ conf = Configuration.new { |c1| c1.alpha true ; c1.bravo { |c2| c2.charlie true ; c2.delta { |c3| c3.echo true } } }
477
+ end.to_not raise_error
478
+ conf.should_not be_nil
479
+ conf.alpha.should be_true
480
+ conf.bravo.should be_a Configuration
481
+ conf.bravo.alpha should be_true
482
+ conf.bravo.charlie should be_true
483
+ conf.bravo.delta.should be_a Configuration
484
+ conf.bravo.delta.alpha.should be_true
485
+ conf.bravo.delta.charlie.should be_true
486
+ conf.bravo.delta.echo.should be_true
487
+ end
488
+
489
+ it 'can refer to an inherited setting' do
490
+ conf = nil
491
+ expect do
492
+ conf = Configuration.new do |c1|
493
+ c1.alpha true
494
+ c1.hotel c1.alpha
495
+ c1.bravo do |c2|
496
+ c2.charlie true
497
+ c2.foxtrot c2.alpha
498
+ c2.delta do |c3|
499
+ c3.echo true
500
+ c3.golf c3.alpha
501
+ end
388
502
  end
389
503
  end
390
- end
391
- end.to_not raise_error
392
- conf.should_not be_nil
393
- conf.alpha.should be_true
394
- conf.bravo.should be_a Configuration
395
- conf.bravo.alpha should be_true
396
- conf.bravo.charlie should be_true
397
- conf.bravo.delta.should be_a Configuration
398
- conf.bravo.delta.alpha.should be_true
399
- conf.bravo.delta.charlie.should be_true
400
- conf.bravo.delta.echo.should be_true
401
- conf.bravo.delta.golf.should be_true
402
- conf.bravo.foxtrot.should be_true
403
- conf.hotel.should be_true
404
- end
504
+ end.to_not raise_error
505
+ conf.should_not be_nil
506
+ conf.alpha.should be_true
507
+ conf.bravo.should be_a Configuration
508
+ conf.bravo.alpha should be_true
509
+ conf.bravo.charlie should be_true
510
+ conf.bravo.delta.should be_a Configuration
511
+ conf.bravo.delta.alpha.should be_true
512
+ conf.bravo.delta.charlie.should be_true
513
+ conf.bravo.delta.echo.should be_true
514
+ conf.bravo.delta.golf.should be_true
515
+ conf.bravo.foxtrot.should be_true
516
+ conf.hotel.should be_true
517
+ end
518
+
519
+ end # nested configuration
520
+
521
+ context 'can load' do
522
+
523
+ it 'settings into the current configuration from a string' do
524
+ conf = nil
525
+ expect do
526
+ conf = Configuration.new do |c|
527
+ c.alpha true
528
+ c._read "bravo true\ncharlie true"
529
+ end
530
+ end.to_not raise_error
531
+ conf.should_not be_nil
532
+ conf.alpha.should be_true
533
+ conf.bravo.should be_true
534
+ conf.charlie.should be_true
535
+ end
536
+
537
+ it 'settings into the current configuration from a file (StringIO)' do
538
+ io = StringIO.new "bravo true
539
+ charlie true"
540
+ conf = nil
541
+ expect do
542
+ conf = Configuration.new do |c|
543
+ c.alpha true
544
+ c._file io
545
+ end
546
+ end.to_not raise_error
547
+ conf.should_not be_nil
548
+ conf.alpha.should be_true
549
+ conf.bravo.should be_true
550
+ conf.charlie.should be_true
551
+ end
552
+
553
+ it 'settings into a nested configuration from a string' do
554
+ conf = nil
555
+ expect do
556
+ conf = Configuration.new do |c|
557
+ c.alpha true
558
+ c.bravo do |x|
559
+ x._read "charlie true\ndelta true"
560
+ end
561
+ c.echo { |x| x._read "foxtrot true\nhotel true" }
562
+ end
563
+ end.to_not raise_error
564
+ conf.should_not be_nil
565
+ conf.alpha.should be_true
566
+ conf.bravo.should be_a Configuration
567
+ conf.bravo.charlie.should be_true
568
+ conf.bravo.delta.should be_true
569
+ conf.bravo.alpha.should be_true
570
+ conf.echo.should be_a Configuration
571
+ conf.echo.foxtrot.should be_true
572
+ conf.echo.hotel.should be_true
573
+ conf.echo.alpha.should be_true
574
+ end
575
+
576
+ it 'settings into a nested configuration from a file (StringIO)' do
577
+ io1 = StringIO.new "charlie true
578
+ delta true"
579
+ io2 = StringIO.new "foxtrot true
580
+ hotel true"
581
+ conf = nil
582
+ expect do
583
+ conf = Configuration.new do |c|
584
+ c.alpha true
585
+ c.bravo do |x|
586
+ x._file io1
587
+ end
588
+ c.echo { |x| x._file io2 }
589
+ end
590
+ end.to_not raise_error
591
+ conf.should_not be_nil
592
+ conf.alpha.should be_true
593
+ conf.bravo.should be_a Configuration
594
+ conf.bravo.charlie.should be_true
595
+ conf.bravo.delta.should be_true
596
+ conf.bravo.alpha.should be_true
597
+ conf.echo.should be_a Configuration
598
+ conf.echo.foxtrot.should be_true
599
+ conf.echo.hotel.should be_true
600
+ conf.echo.alpha.should be_true
601
+ end
602
+
603
+ end # can load
405
604
 
406
605
  end # yield DSL
407
606
 
@@ -460,243 +659,224 @@ describe Configuration do
460
659
  conf.bravo.should == :value
461
660
  end
462
661
 
463
- it 'supports nested configuration via do..end' do
464
- conf = nil
465
- expect do
466
- conf = Configuration.new do
467
- alpha true
468
- bravo do
469
- charlie true
470
- delta do
471
- echo true
662
+ context 'nested configuration' do
663
+
664
+ it 'supported via do..end' do
665
+ conf = nil
666
+ expect do
667
+ conf = Configuration.new do
668
+ alpha true
669
+ bravo do
670
+ charlie true
671
+ delta do
672
+ echo true
673
+ end
472
674
  end
473
675
  end
474
- end
475
- end.to_not raise_error
476
- conf.should_not be_nil
477
- conf.alpha.should be_true
478
- conf.bravo.should be_a Configuration
479
- conf.bravo.alpha should be_true
480
- conf.bravo.charlie should be_true
481
- conf.bravo.delta.should be_a Configuration
482
- conf.bravo.delta.alpha.should be_true
483
- conf.bravo.delta.charlie.should be_true
484
- conf.bravo.delta.echo.should be_true
485
- end
486
-
487
- it 'supports nested configuration via {..}' do
488
- conf = nil
489
- expect do
490
- conf = Configuration.new { |c1| c1.alpha true ; c1.bravo { |c2| c2.charlie true ; c2.delta { |c3| c3.echo true } } }
491
- end.to_not raise_error
492
- conf.should_not be_nil
493
- conf.alpha.should be_true
494
- conf.bravo.should be_a Configuration
495
- conf.bravo.alpha should be_true
496
- conf.bravo.charlie should be_true
497
- conf.bravo.delta.should be_a Configuration
498
- conf.bravo.delta.alpha.should be_true
499
- conf.bravo.delta.charlie.should be_true
500
- conf.bravo.delta.echo.should be_true
501
- end
502
-
503
- it 'nested configuration can refer to an inherited setting' do
504
- conf = nil
505
- expect do
506
- conf = Configuration.new do
507
- alpha true
508
- hotel alpha
509
- bravo do
510
- charlie true
511
- foxtrot alpha
512
- delta do
513
- echo true
514
- golf alpha
676
+ end.to_not raise_error
677
+ conf.should_not be_nil
678
+ conf.alpha.should be_true
679
+ conf.bravo.should be_a Configuration
680
+ conf.bravo.alpha should be_true
681
+ conf.bravo.charlie should be_true
682
+ conf.bravo.delta.should be_a Configuration
683
+ conf.bravo.delta.alpha.should be_true
684
+ conf.bravo.delta.charlie.should be_true
685
+ conf.bravo.delta.echo.should be_true
686
+ end
687
+
688
+ it 'supported via {..}' do
689
+ conf = nil
690
+ expect do
691
+ conf = Configuration.new { |c1| c1.alpha true ; c1.bravo { |c2| c2.charlie true ; c2.delta { |c3| c3.echo true } } }
692
+ end.to_not raise_error
693
+ conf.should_not be_nil
694
+ conf.alpha.should be_true
695
+ conf.bravo.should be_a Configuration
696
+ conf.bravo.alpha should be_true
697
+ conf.bravo.charlie should be_true
698
+ conf.bravo.delta.should be_a Configuration
699
+ conf.bravo.delta.alpha.should be_true
700
+ conf.bravo.delta.charlie.should be_true
701
+ conf.bravo.delta.echo.should be_true
702
+ end
703
+
704
+ it 'can refer to an inherited setting' do
705
+ conf = nil
706
+ expect do
707
+ conf = Configuration.new do
708
+ alpha true
709
+ hotel alpha
710
+ bravo do
711
+ charlie true
712
+ foxtrot alpha
713
+ delta do
714
+ echo true
715
+ golf alpha
716
+ end
515
717
  end
516
718
  end
517
- end
518
- end.to_not raise_error
519
- conf.should_not be_nil
520
- conf.alpha.should be_true
521
- conf.bravo.should be_a Configuration
522
- conf.bravo.alpha should be_true
523
- conf.bravo.charlie should be_true
524
- conf.bravo.delta.should be_a Configuration
525
- conf.bravo.delta.alpha.should be_true
526
- conf.bravo.delta.charlie.should be_true
527
- conf.bravo.delta.echo.should be_true
528
- conf.bravo.delta.golf.should be_true
529
- conf.bravo.foxtrot.should be_true
530
- conf.hotel.should be_true
531
- end
532
-
533
- it 'dynamic setting name can be a local' do
534
- conf = nil
535
- expect do
536
- conf = Configuration.new do
537
- alpha true
538
- local1 = 'bravo'
539
- self[local1] = true
540
- local2 = 'charlie'
541
- self[local2] = true
542
- end
543
- end.to_not raise_error
544
- conf.should_not be_nil
545
- conf.alpha.should be_true
546
- conf.bravo.should be_true
547
- conf.charlie.should be_true
548
- end
549
-
550
- it 'dynamic setting name can be a setting' do
551
- conf = nil
552
- expect do
553
- conf = Configuration.new do
554
- alpha true
555
- setting1 'bravo'
556
- self[setting1] = true
557
- setting2 'charlie'
558
- self[setting2] = true
559
- end
560
- end.to_not raise_error
561
- conf.should_not be_nil
562
- conf.alpha.should be_true
563
- conf.bravo.should be_true
564
- conf.charlie.should be_true
565
- conf.setting1.should == 'bravo'
566
- conf.setting2.should == 'charlie'
567
- end
568
-
569
- it 'dynamic setting can reference a nested configuration' do
570
- conf = nil
571
- expect do
572
- conf = Configuration.new do
573
- alpha true
574
- local = :bravo
575
- self[local] = Configuration.new do
576
- charlie true
719
+ end.to_not raise_error
720
+ conf.should_not be_nil
721
+ conf.alpha.should be_true
722
+ conf.bravo.should be_a Configuration
723
+ conf.bravo.alpha should be_true
724
+ conf.bravo.charlie should be_true
725
+ conf.bravo.delta.should be_a Configuration
726
+ conf.bravo.delta.alpha.should be_true
727
+ conf.bravo.delta.charlie.should be_true
728
+ conf.bravo.delta.echo.should be_true
729
+ conf.bravo.delta.golf.should be_true
730
+ conf.bravo.foxtrot.should be_true
731
+ conf.hotel.should be_true
732
+ end
733
+
734
+ end # nested configuration
735
+
736
+ context 'dynamic setting' do
737
+
738
+ it 'name can be a local' do
739
+ conf = nil
740
+ expect do
741
+ conf = Configuration.new do
742
+ alpha true
743
+ local1 = 'bravo'
744
+ self[local1] = true
745
+ local2 = 'charlie'
746
+ self[local2] = true
577
747
  end
578
- end
579
- end.to_not raise_error
580
- conf.should_not be_nil
581
- conf.alpha.should be_true
582
- conf.bravo.should be_a Configuration
583
- conf.bravo.alpha should be_true
584
- conf.bravo.charlie should be_true
585
- end
748
+ end.to_not raise_error
749
+ conf.should_not be_nil
750
+ conf.alpha.should be_true
751
+ conf.bravo.should be_true
752
+ conf.charlie.should be_true
753
+ end
754
+
755
+ it 'name can be a setting' do
756
+ conf = nil
757
+ expect do
758
+ conf = Configuration.new do
759
+ alpha true
760
+ setting1 'bravo'
761
+ self[setting1] = true
762
+ setting2 'charlie'
763
+ self[setting2] = true
764
+ end
765
+ end.to_not raise_error
766
+ conf.should_not be_nil
767
+ conf.alpha.should be_true
768
+ conf.bravo.should be_true
769
+ conf.charlie.should be_true
770
+ conf.setting1.should == 'bravo'
771
+ conf.setting2.should == 'charlie'
772
+ end
773
+
774
+ it 'can reference a nested configuration' do
775
+ conf = nil
776
+ expect do
777
+ conf = Configuration.new do
778
+ alpha true
779
+ local = :bravo
780
+ self[local] = Configuration.new do
781
+ charlie true
782
+ end
783
+ end
784
+ end.to_not raise_error
785
+ conf.should_not be_nil
786
+ conf.alpha.should be_true
787
+ conf.bravo.should be_a Configuration
788
+ conf.bravo.alpha should be_true
789
+ conf.bravo.charlie should be_true
790
+ end
791
+
792
+ end # dynamic setting
793
+
794
+ context 'can load' do
795
+
796
+ it 'settings into the current configuration from a string' do
797
+ conf = nil
798
+ expect do
799
+ conf = Configuration.new do
800
+ alpha true
801
+ _read "bravo true\ncharlie true"
802
+ end
803
+ end.to_not raise_error
804
+ conf.should_not be_nil
805
+ conf.alpha.should be_true
806
+ conf.bravo.should be_true
807
+ conf.charlie.should be_true
808
+ end
809
+
810
+ it 'settings into the current configuration from a file (StringIO)' do
811
+ io = StringIO.new "bravo true
812
+ charlie true"
813
+ conf = nil
814
+ expect do
815
+ conf = Configuration.new do
816
+ alpha true
817
+ _file io
818
+ end
819
+ end.to_not raise_error
820
+ conf.should_not be_nil
821
+ conf.alpha.should be_true
822
+ conf.bravo.should be_true
823
+ conf.charlie.should be_true
824
+ end
825
+
826
+ it 'settings into a nested configuration from a string' do
827
+ conf = nil
828
+ expect do
829
+ conf = Configuration.new do
830
+ alpha true
831
+ bravo do
832
+ _read "charlie true\ndelta true"
833
+ end
834
+ echo { _read "foxtrot true\nhotel true" }
835
+ end
836
+ end.to_not raise_error
837
+ conf.should_not be_nil
838
+ conf.alpha.should be_true
839
+ conf.bravo.should be_a Configuration
840
+ conf.bravo.charlie.should be_true
841
+ conf.bravo.delta.should be_true
842
+ conf.bravo.alpha.should be_true
843
+ conf.echo.should be_a Configuration
844
+ conf.echo.foxtrot.should be_true
845
+ conf.echo.hotel.should be_true
846
+ conf.echo.alpha.should be_true
847
+ end
848
+
849
+ it 'settings into a nested configuration from a file (StringIO)' do
850
+ io1 = StringIO.new "charlie true
851
+ delta true"
852
+ io2 = StringIO.new "foxtrot true
853
+ hotel true"
854
+ conf = nil
855
+ expect do
856
+ conf = Configuration.new do
857
+ alpha true
858
+ bravo do
859
+ _file io1
860
+ end
861
+ echo { _file io2 }
862
+ end
863
+ end.to_not raise_error
864
+ conf.should_not be_nil
865
+ conf.alpha.should be_true
866
+ conf.bravo.should be_a Configuration
867
+ conf.bravo.charlie.should be_true
868
+ conf.bravo.delta.should be_true
869
+ conf.bravo.alpha.should be_true
870
+ conf.echo.should be_a Configuration
871
+ conf.echo.foxtrot.should be_true
872
+ conf.echo.hotel.should be_true
873
+ conf.echo.alpha.should be_true
874
+ end
875
+
876
+ end # can load
586
877
 
587
878
  end # instance_eval DSL
588
879
 
589
880
  end # mode of usage
590
881
 
591
- context 'loads' do
592
-
593
- it 'simple instance_eval DSL from string' do
594
- string = "alpha 1
595
- bravo 'two'
596
- charlie 3.0
597
- delta :four"
598
- conf = nil
599
- expect do
600
- conf = Configuration.read string
601
- end.to_not raise_error
602
- conf.should_not be_nil
603
- conf.alpha.should == 1 and conf.alpha.should be_a Fixnum
604
- conf.bravo.should == "two" and conf.bravo.should be_a String
605
- conf.charlie.should == 3.0 and conf.charlie.should be_a Float
606
- conf.delta.should == :four and conf.delta.should be_a Symbol
607
- end
608
-
609
- it 'simple instance_eval DSL from file (by StringIO fake)' do
610
- io = StringIO.new "alpha 1
611
- bravo 'two'
612
- charlie 3.0
613
- delta :four"
614
- conf = nil
615
- expect do
616
- conf = Configuration.file io
617
- end.to_not raise_error
618
- conf.should_not be_nil
619
- conf.alpha.should == 1 and conf.alpha.should be_a Fixnum
620
- conf.bravo.should == "two" and conf.bravo.should be_a String
621
- conf.charlie.should == 3.0 and conf.charlie.should be_a Float
622
- conf.delta.should == :four and conf.delta.should be_a Symbol
623
- end
624
-
625
- it 'simple instance_eval DSL from file (by mock and expected methods)' do
626
- file = mock
627
- file.should_receive( :respond_to? ).with( :read ).and_return true
628
- file.should_receive( :read ).and_return "alpha 1
629
- bravo 'two'
630
- charlie 3.0
631
- delta :four"
632
- conf = nil
633
- expect do
634
- conf = Configuration.file file
635
- end.to_not raise_error
636
- conf.should_not be_nil
637
- conf.alpha.should == 1 and conf.alpha.should be_a Fixnum
638
- conf.bravo.should == "two" and conf.bravo.should be_a String
639
- conf.charlie.should == 3.0 and conf.charlie.should be_a Float
640
- conf.delta.should == :four and conf.delta.should be_a Symbol
641
- end
642
-
643
- it 'simple instance_eval DSL from filename (by expected methods)' do
644
- File.should_receive( :read ).with( "filename" ).and_return "alpha 1
645
- bravo 'two'
646
- charlie 3.0
647
- delta :four"
648
- conf = nil
649
- expect do
650
- conf = Configuration.file "filename"
651
- end.to_not raise_error
652
- conf.should_not be_nil
653
- conf.alpha.should == 1 and conf.alpha.should be_a Fixnum
654
- conf.bravo.should == "two" and conf.bravo.should be_a String
655
- conf.charlie.should == 3.0 and conf.charlie.should be_a Float
656
- conf.delta.should == :four and conf.delta.should be_a Symbol
657
- end
658
-
659
- it 'complex instance_eval DSL from string' do
660
- string = "alpha true
661
- bravo do
662
- charlie true
663
- delta do
664
- echo true
665
- end
666
- end"
667
- conf = nil
668
- expect do
669
- conf = Configuration.read string
670
- end.to_not raise_error
671
- conf.should_not be_nil
672
- conf.alpha.should be_true
673
- conf.bravo.should be_a Configuration
674
- conf.bravo.alpha should be_true
675
- conf.bravo.charlie should be_true
676
- conf.bravo.delta.should be_a Configuration
677
- conf.bravo.delta.alpha.should be_true
678
- conf.bravo.delta.charlie.should be_true
679
- conf.bravo.delta.echo.should be_true
680
- end
681
-
682
- end # loads
683
-
684
- it 'delegates hash methods to internal hash' do
685
- conf = nil
686
- expect do
687
- conf = Configuration.new
688
- conf.alpha 1
689
- conf.bravo 2
690
- conf.charlie 3
691
- conf.delta 4
692
- end.to_not raise_error
693
- conf.should_not be_nil
694
- sum = 0
695
- expect do
696
- conf.each { |k,v| sum += v }
697
- end.to_not raise_error
698
- sum.should == 10
699
- conf.size.should == 4
700
- end
701
-
702
882
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iqeo-conf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-06 00:00:00.000000000 Z
12
+ date: 2012-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.9.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: blankslate
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 2.1.2.4
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.1.2.4
46
62
  description: A configuration DSL
47
63
  email:
48
64
  - gerard.fowley@iqeo.net
@@ -50,7 +66,6 @@ executables: []
50
66
  extensions: []
51
67
  extra_rdoc_files: []
52
68
  files:
53
- - .bundle/config
54
69
  - .gitignore
55
70
  - .rspec
56
71
  - .rvmrc
@@ -71,6 +86,7 @@ files:
71
86
  - pkg/iqeo-conf-0.0.6.gem
72
87
  - pkg/iqeo-conf-0.0.7.gem
73
88
  - pkg/iqeo-conf-0.0.8.gem
89
+ - pkg/iqeo-conf-0.0.9.gem
74
90
  - spec/configuration_spec.rb
75
91
  - spec/spec_helper.rb
76
92
  homepage: http://iqeo.github.com/iqeo-conf
data/.bundle/config DELETED
@@ -1,2 +0,0 @@
1
- ---
2
- BUNDLE_BIN: bin