confstruct 0.2.3 → 0.2.4

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