parameters 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ ����)u�Dȍj�3���rO�)B</�(�*yB��0 ��(����d���ݑ��H>����e�_bف�B�
2
+ Z
3
+ ��`��:F�a=�@�o
@@ -1,3 +1,18 @@
1
+ === 0.1.7 / 2009-07-19
2
+
3
+ * Renamed Parameters#initialize_parameters to
4
+ Parameters#initialize_params.
5
+ * Adjust spacing in the output of ClassParam#to_s
6
+ and InstanceParam#to_s.
7
+ * Specifically check if the instance variable is nil
8
+ before initializing it to the default value of the parameter.
9
+ * Handle default value callbacks in Parameters#parameter.
10
+ * Check the arity of all default value callbacks, before
11
+ passing self to them.
12
+ * Parameters#require_params now specifically tests if
13
+ the instance variable of the parameter is nil.
14
+ * Added more specs.
15
+
1
16
  === 0.1.6 / 2009-05-11
2
17
 
3
18
  * Fixed a bug in Parameters.params= and Parameters#params=, where they
@@ -18,6 +18,7 @@ lib/parameters/version.rb
18
18
  tasks/spec.rb
19
19
  spec/spec_helper.rb
20
20
  spec/classes/test_parameters.rb
21
+ spec/classes/custom_parameters.rb
21
22
  spec/classes/inherited_parameters.rb
22
23
  spec/classes/other_parameters.rb
23
24
  spec/parser_spec.rb
data/Rakefile CHANGED
@@ -2,13 +2,14 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'hoe'
5
+ require 'hoe/signing'
5
6
  require './tasks/spec.rb'
6
7
  require './lib/parameters/version.rb'
7
8
 
8
- Hoe.new('parameters', Parameters::VERSION) do |p|
9
- p.rubyforge_name = 'parameters'
10
- p.developer('Postmodern','postmodern.mod3@gmail.com')
11
- p.remote_rdoc_dir = '/'
9
+ Hoe.spec('parameters') do
10
+ self.rubyforge_name = 'parameters'
11
+ self.developer('Postmodern','postmodern.mod3@gmail.com')
12
+ self.remote_rdoc_dir = '/'
12
13
  end
13
14
 
14
15
  # vim: syntax=Ruby
@@ -23,7 +23,7 @@ module Parameters
23
23
  text = " #{@name}"
24
24
 
25
25
  text << " [#{@value.inspect}]" if @value
26
- text << "\t#{@description}" if @description
26
+ text << "\t\t#{@description}" if @description
27
27
 
28
28
  return text
29
29
  end
@@ -35,7 +35,7 @@ module Parameters
35
35
  text = " #{@name}"
36
36
 
37
37
  text << " [#{value.inspect}]" if value
38
- text << "\t#{@description}" if @description
38
+ text << "\t\t#{@description}" if @description
39
39
 
40
40
  return text
41
41
  end
@@ -148,13 +148,17 @@ module Parameters
148
148
  # _values_, which can override the default values of
149
149
  # parameters.
150
150
  #
151
- def initialize_parameters
151
+ def initialize_params(values={})
152
152
  self.class.each_param do |param|
153
153
  # do not override existing instance value if present
154
- unless instance_variable_get("@#{param.name}".to_sym)
154
+ if instance_variable_get("@#{param.name}".to_sym).nil?
155
155
  begin
156
156
  if param.value.kind_of?(Proc)
157
- value = param.value.call()
157
+ value = if param.value.arity > 0
158
+ param.value.call(self)
159
+ else
160
+ param.value.call()
161
+ end
158
162
  else
159
163
  value = param.value.clone
160
164
  end
@@ -167,21 +171,17 @@ module Parameters
167
171
 
168
172
  self.params[param.name] = InstanceParam.new(self,param.name,param.description)
169
173
  end
174
+
175
+ self.params = values if values.kind_of?(Hash)
170
176
  end
171
177
 
172
178
  #
173
- # Initializes the parameters using initialize_parameters. If a +Hash+
179
+ # Initializes the parameters using initialize_params. If a +Hash+
174
180
  # is passed in as the first argument, it will be used to set the values
175
181
  # of parameters described within the Hash.
176
182
  #
177
183
  def initialize(*args,&block)
178
- initialize_parameters
179
-
180
- values = args.first
181
-
182
- if values.kind_of?(Hash)
183
- self.params = values
184
- end
184
+ initialize_params(args.first)
185
185
  end
186
186
 
187
187
  #
@@ -198,12 +198,25 @@ module Parameters
198
198
  #
199
199
  def parameter(name,options={})
200
200
  name = name.to_sym
201
+ default = options[:default]
202
+ description = options[:description]
203
+
204
+ # resolve the default value
205
+ if default.kind_of?(Proc)
206
+ value = if default.arity > 0
207
+ default.call(self)
208
+ else
209
+ default.call()
210
+ end
211
+ else
212
+ value = default
213
+ end
201
214
 
202
215
  # set the instance variable
203
- instance_variable_set("@#{name}".to_sym,options[:default])
216
+ instance_variable_set("@#{name}".to_sym,value)
204
217
 
205
218
  # add the new parameter
206
- self.params[name] = InstanceParam.new(self,name,options[:description])
219
+ self.params[name] = InstanceParam.new(self,name,description)
207
220
 
208
221
  instance_eval %{
209
222
  # define the reader method for the parameter
@@ -328,7 +341,7 @@ module Parameters
328
341
  names.each do |name|
329
342
  name = name.to_s
330
343
 
331
- unless instance_variable_get("@#{name}".to_sym)
344
+ if instance_variable_get("@#{name}".to_sym).nil?
332
345
  raise(Parameters::MissingParam,"parameter #{name.dump} has no value",caller)
333
346
  end
334
347
  end
@@ -1,3 +1,3 @@
1
1
  module Parameters
2
- VERSION = '0.1.6'
2
+ VERSION = '0.1.7'
3
3
  end
@@ -0,0 +1,20 @@
1
+ require 'parameters'
2
+
3
+ class CustomParameters
4
+
5
+ include Parameters
6
+
7
+ parameter :var, :description => 'A basic parameter'
8
+
9
+ parameter :var_with_default,
10
+ :default => 10,
11
+ :description => 'A parameter with a default value'
12
+
13
+ def initialize(var=nil,var_with_default=nil)
14
+ @var = var
15
+ @var_with_default = var_with_default
16
+
17
+ initialize_params()
18
+ end
19
+
20
+ end
@@ -4,7 +4,7 @@ class OtherParameters
4
4
  parameter :var, :description => 'Test parameter'
5
5
 
6
6
  parameter :var_with_default,
7
- :default => 'other',
8
- :description => 'This parameter has a default value'
7
+ :default => 'other',
8
+ :description => 'This parameter has a default value'
9
9
 
10
10
  end
@@ -4,13 +4,13 @@ class TestParameters
4
4
  parameter :var, :description => 'Test parameter'
5
5
 
6
6
  parameter :var_with_default,
7
- :default => 'thing',
8
- :description => 'This parameter has a default value'
7
+ :default => 'thing',
8
+ :description => 'This parameter has a default value'
9
9
 
10
10
  parameter :var_without_default,
11
- :description => 'This parameter does not have a default value'
11
+ :description => 'This parameter does not have a default value'
12
12
 
13
13
  parameter :var_with_lambda,
14
- :default => lambda { rand },
15
- :description => 'This parameter uses a lambda instead of a default value'
14
+ :default => lambda { rand },
15
+ :description => 'This parameter uses a lambda instead of a default value'
16
16
  end
@@ -3,6 +3,7 @@ require 'parameters/parameters'
3
3
  require 'spec_helper'
4
4
 
5
5
  require 'classes/test_parameters'
6
+ require 'classes/custom_parameters'
6
7
  require 'classes/inherited_parameters'
7
8
  require 'classes/other_parameters'
8
9
 
@@ -41,6 +42,32 @@ describe Parameters do
41
42
  TestParameters.describe_param(:var).should_not be_empty
42
43
  end
43
44
 
45
+ it "should be able to initialize parameters" do
46
+ obj = TestParameters.new
47
+
48
+ obj.params.should_not be_empty
49
+ end
50
+
51
+ it "should set initialize parameters with initial nil values" do
52
+ obj = CustomParameters.new
53
+
54
+ obj.var_with_default.should == 10
55
+ end
56
+
57
+ it "should not override previous parameter values" do
58
+ obj = CustomParameters.new(:test,5)
59
+
60
+ obj.var.should == :test
61
+ obj.var_with_default.should == 5
62
+ end
63
+
64
+ it "should not override previous 'false' values of parameters" do
65
+ obj = CustomParameters.new(false,false)
66
+
67
+ obj.var.should == false
68
+ obj.var_with_default.should == false
69
+ end
70
+
44
71
  it "should be able to create an object with initial parameter values" do
45
72
  obj = TestParameters.new(:var => 2, :var_with_default => 'stuff')
46
73
 
@@ -130,4 +157,50 @@ describe Parameters do
130
157
  }.should raise_error(Parameters::MissingParam)
131
158
  end
132
159
  end
160
+
161
+ describe "runtime" do
162
+ before(:each) do
163
+ @test = TestParameters.new
164
+
165
+ @test.parameter :new_param
166
+ @test.parameter :new_param_with_default,
167
+ :default => 5
168
+ @test.parameter :new_param_with_lambda,
169
+ :default => lambda { |obj| obj.new_param_with_default + 2 }
170
+ end
171
+
172
+ it "should allow for the addition of parameters" do
173
+ @test.has_param?(:new_param).should == true
174
+ end
175
+
176
+ it "should provide direct access to all parameters" do
177
+ @test.params[:new_param].should_not be_nil
178
+ @test.params[:new_param_with_default].should_not be_nil
179
+ @test.params[:new_param_with_lambda].should_not be_nil
180
+ end
181
+
182
+ it "should add reader methods for parameters" do
183
+ @test.new_param.should be_nil
184
+ end
185
+
186
+ it "should add writer methods for parameters" do
187
+ @test.new_param = 10
188
+ @test.new_param.should == 10
189
+ end
190
+
191
+ it "should set the instance variables of parameters" do
192
+ @test.instance_variable_get(:@new_param_with_default).should == 5
193
+
194
+ @test.new_param_with_default = 10
195
+ @test.instance_variable_get(:@new_param_with_default).should == 10
196
+ end
197
+
198
+ it "should initialize parameters with default values" do
199
+ @test.new_param_with_default.should == 5
200
+ end
201
+
202
+ it "should initialize pamareters with default lambda values" do
203
+ @test.new_param_with_lambda.should == 7
204
+ end
205
+ end
133
206
  end
metadata CHANGED
@@ -1,15 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain: []
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDQDCCAiigAwIBAgIBADANBgkqhkiG9w0BAQUFADBGMRgwFgYDVQQDDA9wb3N0
14
+ bW9kZXJuLm1vZDMxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixk
15
+ ARkWA2NvbTAeFw0wOTA2MDMwNDU5MDNaFw0xMDA2MDMwNDU5MDNaMEYxGDAWBgNV
16
+ BAMMD3Bvc3Rtb2Rlcm4ubW9kMzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYK
17
+ CZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
18
+ 1wvANkTDHFgVih5XLjuTwTZjgBq1lBGybXJiH6Id1lY2JOMqM5FB1DDHVvvij94i
19
+ mJabN0zkzu6VKWC70y0IwOxY7CPokr0eFdK/D0y7mCq1P8QITv76i2YqAl0eYqIt
20
+ W+IhIkANQ7E6uMZIZcdnfadC6lPAtlKkqtd9crvRbFgr6e3kyflmohbRnTEJHoRd
21
+ 7SHHsybE6DSn7oTDs6XBTNrNIn5VfZA0z01eeos/+zBm1zKJOK2+/7xtLLDuDU9G
22
+ +Rd+ltUBbvxUrMNZmDG29pnmN2xTRH+Q8HxD2AxlvM5SRpK6OeZaHV7PaCCAVZ4L
23
+ T9BFl1sfMvRlABeGEkSyuQIDAQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
+ sDAdBgNVHQ4EFgQUKwsd+PqEYmBvyaTyoL+uRuk+PhEwDQYJKoZIhvcNAQEFBQAD
25
+ ggEBAB4TvHsrlbcXcKg6gX5BIb9tI+zGkpzo0Z7jnxMEcNO7NGGwmzafDBI/xZYv
26
+ xkRH3/HXbGGYDOi6Q6gWt5GujSx0bOImDtYTJTH8jnzN92HzEK5WdScm1QpZKF1e
27
+ cezArMbxbSPaosxTCtG6LQTkE28lFQsmFZ5xzouugS4h5+LVJiVMmiP+l3EfkjFa
28
+ GOURU+rNEMPWo8MCWivGW7jes6BMzWHcW7DQ0scNVmIcCIgdyMmpscuAEOSeghy9
29
+ /fFs57Ey2OXBL55nDOyvN/ZQ2Vab05UH4t+GCxjAPeirzL/29FBtePT6VD44c38j
30
+ pDj+ws7QjtH/Qcrr1l9jfN0ehDs=
31
+ -----END CERTIFICATE-----
11
32
 
12
- date: 2009-05-11 00:00:00 -07:00
33
+ date: 2009-07-19 00:00:00 -07:00
13
34
  default_executable:
14
35
  dependencies:
15
36
  - !ruby/object:Gem::Dependency
@@ -20,9 +41,11 @@ dependencies:
20
41
  requirements:
21
42
  - - ">="
22
43
  - !ruby/object:Gem::Version
23
- version: 1.12.2
44
+ version: 2.3.2
24
45
  version:
25
- description: Parameters allows you to add annotated variables to your classes which may have configurable default values.
46
+ description: |-
47
+ Parameters allows you to add annotated variables to your classes which may
48
+ have configurable default values.
26
49
  email:
27
50
  - postmodern.mod3@gmail.com
28
51
  executables: []
@@ -54,12 +77,15 @@ files:
54
77
  - tasks/spec.rb
55
78
  - spec/spec_helper.rb
56
79
  - spec/classes/test_parameters.rb
80
+ - spec/classes/custom_parameters.rb
57
81
  - spec/classes/inherited_parameters.rb
58
82
  - spec/classes/other_parameters.rb
59
83
  - spec/parser_spec.rb
60
84
  - spec/parameters_spec.rb
61
85
  has_rdoc: true
62
86
  homepage: http://parameters.rubyforge.org/
87
+ licenses: []
88
+
63
89
  post_install_message:
64
90
  rdoc_options:
65
91
  - --main
@@ -81,9 +107,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
107
  requirements: []
82
108
 
83
109
  rubyforge_project: parameters
84
- rubygems_version: 1.3.1
110
+ rubygems_version: 1.3.4
85
111
  signing_key:
86
- specification_version: 2
112
+ specification_version: 3
87
113
  summary: Parameters allows you to add annotated variables to your classes which may have configurable default values.
88
114
  test_files: []
89
115
 
@@ -0,0 +1,2 @@
1
+ ~���p�0�0w���(g@�Fm��ؘ`�U�%ӡ#�Dҍen��_$�ϊAq�T3���A�m�d$Ś8��qa
2
+ �k���Az��5`��kebEy�H6�� �w) }uѧ��9�6E���=#^����Ki���3^�u��W���s�ٜ5�L�d j�d��V�3�sDS���V��-���� ����U0ؐ6���L�o(Y��9����%��)"���X�T'Q���۴�ȏ�Ё%@�y��t���z��N>�N[