parameters 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,11 @@
1
+ ### 0.3.1 / 2011-12-16
2
+
3
+ * Do not coerce `nil` values.
4
+ * Instance reader/writer methods for parameters now use
5
+ {Parameters::InstanceParam#value} and {Parameters::InstanceParam#value=}.
6
+ * Renamed the internal `@params` instance variables to `@_params` to avoid
7
+ collisions.
8
+
1
9
  ### 0.3.0 / 2011-12-13
2
10
 
3
11
  * Added {Parameters::ClassMethods#set_param}.
@@ -13,7 +13,7 @@ module Parameters
13
13
  # Parameters for the class.
14
14
  #
15
15
  def params
16
- @params ||= {}
16
+ @_params ||= {}
17
17
  end
18
18
 
19
19
  #
@@ -77,8 +77,15 @@ module Parameters
77
77
  get_param(name).value = value
78
78
  end
79
79
 
80
- # define the getter/setter instance methods for the parameter
81
- attr_accessor(name)
80
+ # define the reader instance methods for the parameter
81
+ define_method(name) do
82
+ get_param(name).value
83
+ end
84
+
85
+ # define the writter instance methods for the parameter
86
+ define_method("#{name}=") do |value|
87
+ get_param(name).value = value
88
+ end
82
89
 
83
90
  # create the new parameter
84
91
  new_param = Parameters::ClassParam.new(
@@ -18,7 +18,7 @@ module Parameters
18
18
  # @param [Symbol, String] name
19
19
  # The name of the parameter.
20
20
  #
21
- # @param [Class] type
21
+ # @param [Class, nil] type
22
22
  # The enforced type of the parameter.
23
23
  #
24
24
  # @param [String, nil] description
@@ -26,15 +26,9 @@ module Parameters
26
26
  #
27
27
  def initialize(name,type=nil,description=nil)
28
28
  @name = name.to_sym
29
- @type = case type
30
- when Types::Type
29
+ @type = if (type.kind_of?(Types::Type)) ||
30
+ (type.kind_of?(Class) && (type < Types::Type))
31
31
  type
32
- when Class
33
- if type < Types::Type
34
- type
35
- else
36
- Types[type]
37
- end
38
32
  else
39
33
  Types[type]
40
34
  end
@@ -54,7 +48,7 @@ module Parameters
54
48
  # The coerced value.
55
49
  #
56
50
  def coerce(value)
57
- if @type === value
51
+ if (value.nil? || (@type === value))
58
52
  value
59
53
  else
60
54
  @type.coerce(value)
@@ -103,7 +103,7 @@ module Parameters
103
103
  # The instance parameters of the object.
104
104
  #
105
105
  def params
106
- @params ||= {}
106
+ @_params ||= {}
107
107
  end
108
108
 
109
109
  #
@@ -35,7 +35,7 @@ module Parameters
35
35
  #
36
36
  def self.coerce(value)
37
37
  case value
38
- when FalseClass, NilClass, 'false', :false
38
+ when FalseClass, 'false', :false
39
39
  false
40
40
  else
41
41
  true
@@ -1,4 +1,4 @@
1
1
  module Parameters
2
2
  # The version of parameters
3
- VERSION = '0.3.0'
3
+ VERSION = '0.3.1'
4
4
  end
@@ -31,10 +31,6 @@ describe Parameters::Types::Boolean do
31
31
  subject.coerce(:false).should == false
32
32
  end
33
33
 
34
- it "should map nil to false" do
35
- subject.coerce(nil).should == false
36
- end
37
-
38
34
  it "should map everything else to true" do
39
35
  subject.coerce(:foo).should == true
40
36
  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.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-14 00:00:00.000000000 Z
12
+ date: 2011-12-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ore-tasks
16
- requirement: &21296660 !ruby/object:Gem::Requirement
16
+ requirement: &14692280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.4'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *21296660
24
+ version_requirements: *14692280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &21296120 !ruby/object:Gem::Requirement
27
+ requirement: &14691740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '2.4'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *21296120
35
+ version_requirements: *14691740
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yard
38
- requirement: &21295620 !ruby/object:Gem::Requirement
38
+ requirement: &14691220 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0.7'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *21295620
46
+ version_requirements: *14691220
47
47
  description: Parameters allows you to add annotated variables to your classes which
48
48
  may have configurable default values.
49
49
  email: postmodern.mod3@gmail.com