loquacious 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,8 @@
1
+ == 1.5.1 / 2010-04-06
2
+
3
+ * 1 bug fix
4
+ * Private methods were accessible in the configuration objects
5
+
1
6
  == 1.5.0 / 2010-03-11
2
7
 
3
8
  * 2 minor enhancements
@@ -49,8 +49,12 @@ module Loquacious
49
49
  alias :help :help_for
50
50
  end
51
51
 
52
+ # Internal alias for the respond_to? method.
53
+ #
54
+ alias :__respond_to? :respond_to?
55
+
52
56
  Keepers = %r/^__|^object_id$|^instance_of\?$|^kind_of\?$|^equal\?$/
53
- instance_methods.each do |m|
57
+ instance_methods(true).each do |m|
54
58
  next if m[Keepers]
55
59
  undef_method m
56
60
  end
@@ -106,8 +110,18 @@ module Loquacious
106
110
  CODE
107
111
 
108
112
  __desc[m]
109
- self.__send__("#{m}=", nil)
110
- self.__send__("#{m}", *args, &block)
113
+ self.__send("#{m}=", nil)
114
+ self.__send("#{m}", *args, &block)
115
+ end
116
+
117
+ # Only invoke public methods on the Configuration instances.
118
+ #
119
+ def __send( symbol, *args, &block )
120
+ if self.__respond_to? symbol
121
+ self.__send__(symbol, *args, &block)
122
+ else
123
+ self.method_missing(symbol, *args, &block)
124
+ end
111
125
  end
112
126
 
113
127
  # Evaluate the given _code_ string in the context of this object's
@@ -132,11 +146,11 @@ module Loquacious
132
146
  Kernel.raise Error, "can only merge another Configuration" unless other.kind_of?(Configuration)
133
147
 
134
148
  other.__desc.each do |key,desc|
135
- value = other.__send__(key)
136
- if self.__send__(key).kind_of?(Configuration)
137
- self.__send__(key).merge! value
149
+ value = other.__send(key)
150
+ if self.__send(key).kind_of?(Configuration)
151
+ self.__send(key).merge! value
138
152
  else
139
- self.__send__("#{key}=", value)
153
+ self.__send("#{key}=", value)
140
154
  end
141
155
  __desc[key] = desc
142
156
  end
@@ -153,7 +167,7 @@ module Loquacious
153
167
  # config.port #=> 1234
154
168
  #
155
169
  def []( key )
156
- self.__send__(key)
170
+ self.__send(key)
157
171
  end
158
172
 
159
173
  # Provides hash accessor notation for configuration values.
@@ -163,7 +177,7 @@ module Loquacious
163
177
  # config.port #=> 8808
164
178
  #
165
179
  def []=( key, value )
166
- self.__send__(key, value)
180
+ self.__send(key, value)
167
181
  end
168
182
 
169
183
  # Implementation of a doman specific language for creating configuration
@@ -172,7 +186,11 @@ module Loquacious
172
186
  #
173
187
  class DSL
174
188
  Keepers = %r/^__|^object_id$/
175
- instance_methods.each do |m|
189
+ instance_methods(true).each do |m|
190
+ next if m[Keepers]
191
+ undef_method m
192
+ end
193
+ private_instance_methods(true).each do |m|
176
194
  next if m[Keepers]
177
195
  undef_method m
178
196
  end
@@ -219,7 +237,7 @@ module Loquacious
219
237
  self.desc(opts[:desc]) if opts.has_key? :desc
220
238
  end
221
239
 
222
- __config.__send__(m, *args, &block)
240
+ __config.__send(m, *args, &block)
223
241
  __config.__desc[m] = @description
224
242
 
225
243
  @description = nil
@@ -95,6 +95,18 @@ describe Loquacious::Configuration do
95
95
  cfg.puts.should == 'not what you think'
96
96
  end
97
97
 
98
+ it 'should not be affected by loading other modules like timeout' do
99
+ require 'timeout'
100
+ cfg = Loquacious::Configuration.new {
101
+ timeout 10
102
+ foo 'bar'
103
+ baz 'buz'
104
+ }
105
+ cfg.timeout.should == 10
106
+ cfg.foo.should == 'bar'
107
+ cfg.baz.should == 'buz'
108
+ end
109
+
98
110
  it 'should evaluate Proc objects when fetching values' do
99
111
  obj = Loquacious::Configuration.new {
100
112
  first 'foo'
@@ -1 +1 @@
1
- 1.5.0
1
+ 1.5.1
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 5
8
- - 0
9
- version: 1.5.0
8
+ - 1
9
+ version: 1.5.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tim Pease
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-11 00:00:00 -07:00
17
+ date: 2010-04-06 00:00:00 -06:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency