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 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
 
@@ -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.3'
7
+ VERSION = '0.2.4'
8
8
  end
@@ -2,7 +2,11 @@ require 'delegate'
2
2
  require 'confstruct/utils'
3
3
 
4
4
  module Confstruct
5
- class Deferred < Proc
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
- hash: 17
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
- date: 2012-05-11 00:00:00 Z
19
- dependencies:
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
- prerelease: false
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
- hash: 3
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
54
41
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id005 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id006 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id007 !ruby/object:Gem::Requirement
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
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
118
  type: :development
119
- version_requirements: *id007
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
- hash: 3
160
- segments:
157
+ requirements:
158
+ - - ! '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ segments:
161
162
  - 0
162
- version: "0"
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
- hash: 3
169
- segments:
166
+ requirements:
167
+ - - ! '>='
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ segments:
170
171
  - 0
171
- version: "0"
172
+ hash: 1650864101667936832
172
173
  requirements: []
173
-
174
174
  rubyforge_project:
175
- rubygems_version: 1.8.21
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