parameters 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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