parameters 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ === 0.1.1 / 2008-12-27
2
+
3
+ * Added the require_params helper method.
4
+ * Added print_params methods for displaying parameters of a class or an
5
+ object.
6
+
1
7
  === 0.1.0 / 2008-12-03
2
8
 
3
9
  * Initial release.
data/README.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  = Parameters
2
2
 
3
3
  * http://parameters.rubyforge.org/
4
- * https://github.com/postmodern/parameters/tree
4
+ * https://github.com/postmodern/parameters
5
5
  * Postmodern (postmodern.mod3 at gmail.com)
6
6
 
7
7
  == DESCRIPTION:
@@ -2,3 +2,4 @@ require 'parameters/param'
2
2
  require 'parameters/class_param'
3
3
  require 'parameters/instance_param'
4
4
  require 'parameters/parameters'
5
+ require 'parameters/version'
@@ -10,11 +10,30 @@ module Parameters
10
10
  # Creates a new ClassParam object with the specified _name_,
11
11
  # given _description_ and _value_.
12
12
  #
13
- def initialize(name,description='',value=nil)
13
+ def initialize(name,description=nil,value=nil)
14
14
  super(name,description)
15
15
 
16
16
  @value = value
17
17
  end
18
18
 
19
+ #
20
+ # Returns the String representation of the class param.
21
+ #
22
+ def to_s
23
+ text = " #{@name}"
24
+
25
+ text << " [#{@value}]" if @value
26
+ text << "\t#{@description}" if @description
27
+
28
+ return text
29
+ end
30
+
31
+ #
32
+ # Inspects the class params value.
33
+ #
34
+ def inspect
35
+ @value.inspect
36
+ end
37
+
19
38
  end
20
39
  end
@@ -8,7 +8,7 @@ module Parameters
8
8
  # Creates a new InstanceParam object with the specified _object_ and
9
9
  # _name_, and the given _description_.
10
10
  #
11
- def initialize(object,name,description='')
11
+ def initialize(object,name,description=nil)
12
12
  super(name,description)
13
13
 
14
14
  @object = object
@@ -28,6 +28,18 @@ module Parameters
28
28
  @object.instance_variable_set("@#{@name}",value)
29
29
  end
30
30
 
31
+ #
32
+ # Returns a String representation of the instance param.
33
+ #
34
+ def to_s
35
+ text = " #{@name}"
36
+
37
+ text << " [#{value}]" if value
38
+ text << "\t#{@description}" if @description
39
+
40
+ return text
41
+ end
42
+
31
43
  #
32
44
  # Inspects the instance params value.
33
45
  #
@@ -11,7 +11,7 @@ module Parameters
11
11
  # Creates a new Param object with the specified _name_ and the given
12
12
  # _description_.
13
13
  #
14
- def initialize(name,description='')
14
+ def initialize(name,description=nil)
15
15
  @name = name.to_sym
16
16
  @description = description
17
17
  end
@@ -126,6 +126,15 @@ module Parameters
126
126
  def param_value(name)
127
127
  get_param(name).value
128
128
  end
129
+
130
+ #
131
+ # Print the class parameters to the given _output_ stream.
132
+ #
133
+ def print_params(output=STDOUT)
134
+ each_param do |param|
135
+ output.puts param
136
+ end
137
+ end
129
138
  end
130
139
  end
131
140
 
@@ -147,7 +156,7 @@ module Parameters
147
156
  instance_variable_set("@#{param.name}",value)
148
157
  end
149
158
 
150
- params[param.name] = InstanceParam.new(self,param.name,param.description)
159
+ self.params[param.name] = InstanceParam.new(self,param.name,param.description)
151
160
  end
152
161
  end
153
162
 
@@ -185,7 +194,7 @@ module Parameters
185
194
  instance_variable_set("@#{name}",options[:default])
186
195
 
187
196
  # add the new parameter
188
- params[name] = InstanceParam.new(self,name,options[:description])
197
+ self.params[name] = InstanceParam.new(self,name,options[:description])
189
198
 
190
199
  instance_eval %{
191
200
  # define the reader method for the parameter
@@ -225,11 +234,19 @@ module Parameters
225
234
  def params=(values)
226
235
  values.each do |name,value|
227
236
  if has_param?(name)
228
- instance_variable_set("@#{name}",value)
237
+ self.params[name.to_sym].value = value
229
238
  end
230
239
  end
231
240
  end
232
241
 
242
+ #
243
+ # Iterates over each instance parameter, passing each one to the given
244
+ # _block_.
245
+ #
246
+ def each_param(&block)
247
+ self.params.each_value(&block)
248
+ end
249
+
233
250
  #
234
251
  # Returns +true+ if the a parameter with the specified _name_ exists,
235
252
  # returns +false+ otherwise.
@@ -237,7 +254,7 @@ module Parameters
237
254
  # obj.has_param?('rhost') # => true
238
255
  #
239
256
  def has_param?(name)
240
- params.has_key?(name.to_sym)
257
+ self.params.has_key?(name.to_sym)
241
258
  end
242
259
 
243
260
  #
@@ -253,7 +270,7 @@ module Parameters
253
270
  raise(ParamNotFound,"parameter #{name.to_s.dump} was not found within #{self.to_s.dump}",caller)
254
271
  end
255
272
 
256
- return params[name]
273
+ return self.params[name]
257
274
  end
258
275
 
259
276
  #
@@ -277,14 +294,30 @@ module Parameters
277
294
  end
278
295
 
279
296
  #
280
- # Sets the values of the parameters listed in the specified _values_.
297
+ # Print the instance parameters to the given _output_ stream.
298
+ #
299
+ def print_params(output=STDOUT)
300
+ each_param do |param|
301
+ output.puts param
302
+ end
303
+ end
304
+
305
+ protected
306
+
281
307
  #
282
- # obj.set_params(:rhost => 'www.example.com', :rport => 80)
283
- # # => {:rhost=>"www.example.com", :rport=>80}
308
+ # Requires that the parameters with the specified _names_ have
309
+ # non +nil+ values. If a parameter with a +nil+ value is found
310
+ # a MissingParam exception will be raised.
284
311
  #
285
- def set_params(values={})
286
- values.each do |name,value|
287
- get_param(name).value = value
312
+ def require_params(*names)
313
+ names.each do |name|
314
+ name = name.to_s
315
+
316
+ unless instance_variable_get("@#{name}")
317
+ raise(MissingParam,"parameter #{name.dump} has no value",caller)
318
+ end
288
319
  end
320
+
321
+ return true
289
322
  end
290
323
  end
@@ -1,3 +1,3 @@
1
1
  module Parameters
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -13,6 +13,8 @@ describe Parameters do
13
13
  :default => 'thing',
14
14
  :description => 'This parameter has a default value'
15
15
 
16
+ parameter :var_without_default,
17
+ :description => 'This parameter does not have a default value'
16
18
  end
17
19
 
18
20
  class InheritedParameters < TestParameters
@@ -116,7 +118,7 @@ describe Parameters do
116
118
  end
117
119
 
118
120
  it "should allow for setting parameters en-mass" do
119
- @test.set_params(:var => 3, :var_with_default => 7)
121
+ @test.params = {:var => 3, :var_with_default => 7}
120
122
 
121
123
  @test.param_value(:var).should == 3
122
124
  @test.param_value(:var_with_default).should == 7
@@ -125,5 +127,11 @@ describe Parameters do
125
127
  it "should provide descriptions for parameters" do
126
128
  @test.describe_param(:var).should_not be_empty
127
129
  end
130
+
131
+ it "should require that certain parameters have non nil values" do
132
+ lambda {
133
+ @test.instance_eval { require_params(:var_without_default) }
134
+ }.should raise_error(Parameters::MissingParam)
135
+ end
128
136
  end
129
137
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-03 00:00:00 -08:00
12
+ date: 2008-12-27 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency