confstruct 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.
data/README.md CHANGED
@@ -193,6 +193,7 @@ The pattern `add_$key!` can be used to add to or create an array.
193
193
  - <b>v0.2.2</b> - Fix ArgumentError on #respond_to?(sym, true)
194
194
  - <b>v0.2.3</b> - Don't evaluate Deferreds during #inspect
195
195
  - <b>v0.2.4</b> - Fix deferreds under Ruby 1.9.x
196
+ - <b>v0.2.5</b> - #14 #configure loses nested hashes somehow
196
197
 
197
198
  ## Contributing to confstruct
198
199
 
@@ -4,5 +4,5 @@ module Confstruct
4
4
  autoload :HashWithStructAccess, 'confstruct/hash_with_struct_access'
5
5
  autoload :Configuration, 'confstruct/configuration'
6
6
 
7
- VERSION = '0.2.4'
7
+ VERSION = '0.2.5'
8
8
  end
@@ -6,7 +6,7 @@ module Confstruct
6
6
 
7
7
  def initialize hash=@@hash_class.new, &block
8
8
  super({})
9
- @default_values = hash.is_a?(HashWithStructAccess) ? hash : HashWithStructAccess.from_hash(hash)
9
+ @default_values = HashWithStructAccess.from_hash(hash)
10
10
  eval_or_yield @default_values, &block
11
11
  reset_defaults!
12
12
  end
@@ -16,7 +16,7 @@ module Confstruct
16
16
 
17
17
  def configure *args, &block
18
18
  if args[0].respond_to?(:each_pair)
19
- self.deep_merge!(args[0])
19
+ self.deep_merge!(HashWithStructAccess.from_hash(args[0]))
20
20
  end
21
21
  eval_or_yield self, &block
22
22
  after_config! self
@@ -46,6 +46,7 @@ module Confstruct
46
46
 
47
47
  class << self
48
48
  def from_hash hash
49
+ return hash if hash.is_a?(self)
49
50
  symbolized_hash = symbolize_hash hash
50
51
  self.new(symbolized_hash)
51
52
  end
@@ -127,6 +127,12 @@ describe Confstruct::Configuration do
127
127
  mock postconfigurator
128
128
  end
129
129
  end
130
+
131
+ it "should be initializable with a string-keyed hash" do
132
+ conf = Confstruct::Configuration.new
133
+ conf.configure(:top=>{:middle=>{"one"=>"two"}})
134
+ conf.top.middle.one.should == 'two'
135
+ end
130
136
  end
131
137
 
132
138
  end
metadata CHANGED
@@ -1,128 +1,128 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confstruct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
5
4
  prerelease:
5
+ version: 0.2.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Michael Klein
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-23 00:00:00.000000000 Z
12
+ date: 2012-12-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: active_support
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
15
+ version_requirements: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
20
+ none: false
21
+ name: active_support
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
24
+ requirement: !ruby/object:Gem::Requirement
26
25
  requirements:
27
26
  - - ! '>='
28
27
  - !ruby/object:Gem::Version
29
28
  version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: rake
32
- requirement: !ruby/object:Gem::Requirement
33
29
  none: false
30
+ - !ruby/object:Gem::Dependency
31
+ version_requirements: !ruby/object:Gem::Requirement
34
32
  requirements:
35
33
  - - ! '>='
36
34
  - !ruby/object:Gem::Version
37
35
  version: 0.8.7
36
+ none: false
37
+ name: rake
38
38
  type: :development
39
39
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
40
+ requirement: !ruby/object:Gem::Requirement
42
41
  requirements:
43
42
  - - ! '>='
44
43
  - !ruby/object:Gem::Version
45
44
  version: 0.8.7
46
- - !ruby/object:Gem::Dependency
47
- name: simplecov
48
- requirement: !ruby/object:Gem::Requirement
49
45
  none: false
46
+ - !ruby/object:Gem::Dependency
47
+ version_requirements: !ruby/object:Gem::Requirement
50
48
  requirements:
51
49
  - - ! '>='
52
50
  - !ruby/object:Gem::Version
53
51
  version: '0'
52
+ none: false
53
+ name: simplecov
54
54
  type: :development
55
55
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
56
+ requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - ! '>='
60
59
  - !ruby/object:Gem::Version
61
60
  version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: rdiscount
64
- requirement: !ruby/object:Gem::Requirement
65
61
  none: false
62
+ - !ruby/object:Gem::Dependency
63
+ version_requirements: !ruby/object:Gem::Requirement
66
64
  requirements:
67
65
  - - ! '>='
68
66
  - !ruby/object:Gem::Version
69
67
  version: '0'
68
+ none: false
69
+ name: rdiscount
70
70
  type: :development
71
71
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
72
+ requirement: !ruby/object:Gem::Requirement
74
73
  requirements:
75
74
  - - ! '>='
76
75
  - !ruby/object:Gem::Version
77
76
  version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: rdoc
80
- requirement: !ruby/object:Gem::Requirement
81
77
  none: false
78
+ - !ruby/object:Gem::Dependency
79
+ version_requirements: !ruby/object:Gem::Requirement
82
80
  requirements:
83
81
  - - ! '>='
84
82
  - !ruby/object:Gem::Version
85
83
  version: '0'
84
+ none: false
85
+ name: rdoc
86
86
  type: :development
87
87
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
88
+ requirement: !ruby/object:Gem::Requirement
90
89
  requirements:
91
90
  - - ! '>='
92
91
  - !ruby/object:Gem::Version
93
92
  version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: rspec
96
- requirement: !ruby/object:Gem::Requirement
97
93
  none: false
94
+ - !ruby/object:Gem::Dependency
95
+ version_requirements: !ruby/object:Gem::Requirement
98
96
  requirements:
99
97
  - - ! '>='
100
98
  - !ruby/object:Gem::Version
101
99
  version: '0'
100
+ none: false
101
+ name: rspec
102
102
  type: :development
103
103
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
104
+ requirement: !ruby/object:Gem::Requirement
106
105
  requirements:
107
106
  - - ! '>='
108
107
  - !ruby/object:Gem::Version
109
108
  version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: yard
112
- requirement: !ruby/object:Gem::Requirement
113
109
  none: false
110
+ - !ruby/object:Gem::Dependency
111
+ version_requirements: !ruby/object:Gem::Requirement
114
112
  requirements:
115
113
  - - ! '>='
116
114
  - !ruby/object:Gem::Version
117
115
  version: '0'
116
+ none: false
117
+ name: yard
118
118
  type: :development
119
119
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
120
+ requirement: !ruby/object:Gem::Requirement
122
121
  requirements:
123
122
  - - ! '>='
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
125
+ none: false
126
126
  description: A simple, hash/struct-based configuration object
127
127
  email:
128
128
  - mbklein@gmail.com
@@ -153,26 +153,20 @@ rdoc_options: []
153
153
  require_paths:
154
154
  - lib
155
155
  required_ruby_version: !ruby/object:Gem::Requirement
156
- none: false
157
156
  requirements:
158
157
  - - ! '>='
159
158
  - !ruby/object:Gem::Version
160
159
  version: '0'
161
- segments:
162
- - 0
163
- hash: 1650864101667936832
164
- required_rubygems_version: !ruby/object:Gem::Requirement
165
160
  none: false
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
166
162
  requirements:
167
163
  - - ! '>='
168
164
  - !ruby/object:Gem::Version
169
165
  version: '0'
170
- segments:
171
- - 0
172
- hash: 1650864101667936832
166
+ none: false
173
167
  requirements: []
174
168
  rubyforge_project:
175
- rubygems_version: 1.8.24
169
+ rubygems_version: 1.8.23
176
170
  signing_key:
177
171
  specification_version: 3
178
172
  summary: A simple, hash/struct-based configuration object