confstruct 0.2.3 → 0.2.4
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 +1 -0
- data/lib/confstruct.rb +1 -1
- data/lib/confstruct/hash_with_struct_access.rb +7 -3
- data/spec/confstruct/hash_with_struct_access_spec.rb +7 -2
- metadata +116 -116
data/README.md
CHANGED
@@ -192,6 +192,7 @@ The pattern `add_$key!` can be used to add to or create an array.
|
|
192
192
|
- <b>v0.2.1</b> - Initialize properly from a nested hash with string (non-symbol) keys
|
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
|
+
- <b>v0.2.4</b> - Fix deferreds under Ruby 1.9.x
|
195
196
|
|
196
197
|
## Contributing to confstruct
|
197
198
|
|
data/lib/confstruct.rb
CHANGED
@@ -2,7 +2,11 @@ require 'delegate'
|
|
2
2
|
require 'confstruct/utils'
|
3
3
|
|
4
4
|
module Confstruct
|
5
|
-
class Deferred
|
5
|
+
class Deferred
|
6
|
+
attr_reader :block
|
7
|
+
def initialize &block
|
8
|
+
@block = block
|
9
|
+
end
|
6
10
|
def inspect(full=false)
|
7
11
|
if full
|
8
12
|
super
|
@@ -77,7 +81,7 @@ module Confstruct
|
|
77
81
|
def [] key
|
78
82
|
result = structurize! super(symbolize!(key))
|
79
83
|
if result.is_a?(Deferred)
|
80
|
-
result = eval_or_yield self, &result
|
84
|
+
result = eval_or_yield self, &result.block
|
81
85
|
end
|
82
86
|
result
|
83
87
|
end
|
@@ -236,4 +240,4 @@ module Confstruct
|
|
236
240
|
end
|
237
241
|
|
238
242
|
end
|
239
|
-
end
|
243
|
+
end
|
@@ -181,7 +181,8 @@ describe Confstruct::HashWithStructAccess do
|
|
181
181
|
:default_branch => 'master',
|
182
182
|
:regular_proc => lambda { |a,b,c| puts "#{a}: #{b} #{c}" },
|
183
183
|
:reverse_url => Confstruct.deferred { self.url.reverse },
|
184
|
-
:upcase_url => Confstruct.deferred { |c| c.url.upcase }
|
184
|
+
:upcase_url => Confstruct.deferred { |c| c.url.upcase },
|
185
|
+
:introspective => Confstruct.deferred { |c| c }
|
185
186
|
}
|
186
187
|
}
|
187
188
|
end
|
@@ -239,6 +240,10 @@ describe Confstruct::HashWithStructAccess do
|
|
239
240
|
@hwsa.github.local_hello.should == 'Bonjour, Monde!'
|
240
241
|
@hwsa.github.local_time.should == 'French Time!'
|
241
242
|
end
|
243
|
+
|
244
|
+
it "should send the confstruct object as a parameter when evaluating the deferred" do
|
245
|
+
@hwsa.github.introspective.should be_a_kind_of(Confstruct::HashWithStructAccess)
|
246
|
+
end
|
242
247
|
|
243
248
|
end
|
244
249
|
|
@@ -264,4 +269,4 @@ describe Confstruct::HashWithStructAccess do
|
|
264
269
|
end
|
265
270
|
end
|
266
271
|
|
267
|
-
end
|
272
|
+
end
|
metadata
CHANGED
@@ -1,132 +1,135 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: confstruct
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.4
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 3
|
10
|
-
version: 0.2.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Michael Klein
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-08-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: active_support
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: rake
|
36
23
|
prerelease: false
|
37
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
38
33
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
hash: 49
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
- 8
|
46
|
-
- 7
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
47
37
|
version: 0.8.7
|
48
38
|
type: :development
|
49
|
-
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: simplecov
|
52
39
|
prerelease: false
|
53
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
41
|
none: false
|
55
|
-
requirements:
|
56
|
-
- -
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.8.7
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: simplecov
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
62
54
|
type: :development
|
63
|
-
version_requirements: *id003
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
name: rdiscount
|
66
55
|
prerelease: false
|
67
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rdiscount
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
68
65
|
none: false
|
69
|
-
requirements:
|
70
|
-
- -
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
segments:
|
74
|
-
- 0
|
75
|
-
version: "0"
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
76
70
|
type: :development
|
77
|
-
version_requirements: *id004
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rdoc
|
80
71
|
prerelease: false
|
81
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rdoc
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
82
81
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
90
86
|
type: :development
|
91
|
-
version_requirements: *id005
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: rspec
|
94
87
|
prerelease: false
|
95
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rspec
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
96
97
|
none: false
|
97
|
-
requirements:
|
98
|
-
- -
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
version: "0"
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
104
102
|
type: :development
|
105
|
-
version_requirements: *id006
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
|
-
name: yard
|
108
103
|
prerelease: false
|
109
|
-
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: yard
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
110
113
|
none: false
|
111
|
-
requirements:
|
112
|
-
- -
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
|
115
|
-
segments:
|
116
|
-
- 0
|
117
|
-
version: "0"
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
|
-
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
120
126
|
description: A simple, hash/struct-based configuration object
|
121
|
-
email:
|
127
|
+
email:
|
122
128
|
- mbklein@gmail.com
|
123
129
|
executables: []
|
124
|
-
|
125
130
|
extensions: []
|
126
|
-
|
127
131
|
extra_rdoc_files: []
|
128
|
-
|
129
|
-
files:
|
132
|
+
files:
|
130
133
|
- .gitignore
|
131
134
|
- .travis.yml
|
132
135
|
- Gemfile
|
@@ -143,40 +146,37 @@ files:
|
|
143
146
|
- spec/confstruct/hash_with_struct_access_spec.rb
|
144
147
|
- spec/confstruct/utils_spec.rb
|
145
148
|
- spec/spec_helper.rb
|
146
|
-
homepage:
|
149
|
+
homepage: ''
|
147
150
|
licenses: []
|
148
|
-
|
149
151
|
post_install_message:
|
150
152
|
rdoc_options: []
|
151
|
-
|
152
|
-
require_paths:
|
153
|
+
require_paths:
|
153
154
|
- lib
|
154
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
155
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
155
156
|
none: false
|
156
|
-
requirements:
|
157
|
-
- -
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
|
160
|
-
segments:
|
157
|
+
requirements:
|
158
|
+
- - ! '>='
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
segments:
|
161
162
|
- 0
|
162
|
-
|
163
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
|
+
hash: 1650864101667936832
|
164
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
165
|
none: false
|
165
|
-
requirements:
|
166
|
-
- -
|
167
|
-
- !ruby/object:Gem::Version
|
168
|
-
|
169
|
-
segments:
|
166
|
+
requirements:
|
167
|
+
- - ! '>='
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
segments:
|
170
171
|
- 0
|
171
|
-
|
172
|
+
hash: 1650864101667936832
|
172
173
|
requirements: []
|
173
|
-
|
174
174
|
rubyforge_project:
|
175
|
-
rubygems_version: 1.8.
|
175
|
+
rubygems_version: 1.8.24
|
176
176
|
signing_key:
|
177
177
|
specification_version: 3
|
178
178
|
summary: A simple, hash/struct-based configuration object
|
179
|
-
test_files:
|
179
|
+
test_files:
|
180
180
|
- spec/confstruct/configuration_spec.rb
|
181
181
|
- spec/confstruct/hash_with_struct_access_spec.rb
|
182
182
|
- spec/confstruct/utils_spec.rb
|