rails_param 0.9.0 → 0.10.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 372c36387af839acafd00fac76073bcdd666b19e
4
- data.tar.gz: 2d9d467a8352bf7f0e671ab8324af3993fcc64f1
3
+ metadata.gz: 8cbf1f2bda303ead2066ddf49597a4af8b276ced
4
+ data.tar.gz: c403d8ad4dafd5a1e014e8e8a0b10417e69badcc
5
5
  SHA512:
6
- metadata.gz: c616739e789c723637b6f1b545ecf261a957645f8d92c7bafe456850e49d99420be36d775c3b1af7727ed4d1eac307658390215d94e6e49cfdfec01ee0c66849
7
- data.tar.gz: 5079e1ba2ff3c5f1b634ad8cc0e9760633a07fa449d601030e079eeb7505512293de6a45559303885e8ae2e9708bb105e609b89fe132916ef1b2e07ecbfc9cf2
6
+ metadata.gz: 9c509598a1dda1c1fe0a1276fe957c3259862ac9430b3b6302926ab4aecf26636eb6de0d07f3901e8f7ca6aa8ab1c3b1ea61c75af341a4a495bf6c6554b63505
7
+ data.tar.gz: 7b2c56eff184db82d4497a46b203155c077bfb625178de27b6b38a5a8bc9947a088d29468d889d0ec0fccbeda28ebdfc853f73b4f4023d7170a0eb34dba68e86
@@ -14,19 +14,31 @@ module RailsParam
14
14
 
15
15
  def param!(name, type, options = {}, &block)
16
16
  name = name.to_s unless name.is_a? Integer # keep index for validating elements
17
-
18
- return unless params.member?(name) || check_param_presence?(options[:default]) || options[:required]
17
+
18
+ return unless params.include?(name) || check_param_presence?(options[:default]) || options[:required]
19
19
 
20
20
  begin
21
21
  params[name] = coerce(params[name], type, options)
22
- params[name] = (options[:default].call if options[:default].respond_to?(:call)) || options[:default] if params[name].nil? and check_param_presence?(options[:default])
23
- params[name] = options[:transform].to_proc.call(params[name]) if params[name] and options[:transform]
24
- validate!(params[name], options)
22
+
23
+ # set default
24
+ if options[:default].respond_to?(:call)
25
+ params[name] = options[:default].call
26
+ elsif params[name].nil? && check_param_presence?(options[:default])
27
+ params[name] = options[:default]
28
+ end
29
+
30
+ # apply tranformation
31
+ if params[name] && options[:transform]
32
+ params[name] = options[:transform].to_proc.call(params[name])
33
+ end
34
+
35
+ # validate
36
+ validate!(params[name], name, options)
25
37
 
26
38
  if block_given?
27
39
  if type == Array
28
40
  params[name].each_with_index do |element, i|
29
- if element.is_a?(Hash)
41
+ if element.is_a?(Hash) || element.is_a?(ActionController::Parameters)
30
42
  recurse element, &block
31
43
  else
32
44
  params[name][i] = recurse({ i => element }, i, &block) # supply index as key unless value is hash
@@ -80,6 +92,7 @@ module RailsParam
80
92
  begin
81
93
  return nil if param.nil?
82
94
  return param if (param.is_a?(type) rescue false)
95
+ return param if (param.is_a?(ActionController::Parameters) && type == Hash rescue false)
83
96
  return Integer(param) if type == Integer
84
97
  return Float(param) if type == Float
85
98
  return String(param) if type == String
@@ -99,13 +112,13 @@ module RailsParam
99
112
  end
100
113
  end
101
114
 
102
- def validate!(param, options)
115
+ def validate!(param, param_name, options)
103
116
  options.each do |key, value|
104
117
  case key
105
118
  when :required
106
- raise InvalidParameterError, "Parameter is required" if value && param.nil?
119
+ raise InvalidParameterError, "Parameter #{param_name} is required" if value && param.nil?
107
120
  when :blank
108
- raise InvalidParameterError, "Parameter cannot be blank" if !value && case param
121
+ raise InvalidParameterError, "Parameter #{param_name} cannot be blank" if !value && case param
109
122
  when String
110
123
  !(/\S/ === param)
111
124
  when Array, Hash
@@ -114,25 +127,25 @@ module RailsParam
114
127
  param.nil?
115
128
  end
116
129
  when :format
117
- raise InvalidParameterError, "Parameter must be a string if using the format validation" unless param.kind_of?(String)
118
- raise InvalidParameterError, "Parameter must match format #{value}" unless param =~ value
130
+ raise InvalidParameterError, "Parameter #{param_name} must be a string if using the format validation" unless param.kind_of?(String)
131
+ raise InvalidParameterError, "Parameter #{param_name} must match format #{value}" unless param =~ value
119
132
  when :is
120
- raise InvalidParameterError, "Parameter must be #{value}" unless param === value
133
+ raise InvalidParameterError, "Parameter #{param_name} must be #{value}" unless param === value
121
134
  when :in, :within, :range
122
- raise InvalidParameterError, "Parameter must be within #{value}" unless param.nil? || case value
135
+ raise InvalidParameterError, "Parameter #{param_name} must be within #{value}" unless param.nil? || case value
123
136
  when Range
124
137
  value.include?(param)
125
138
  else
126
139
  Array(value).include?(param)
127
140
  end
128
141
  when :min
129
- raise InvalidParameterError, "Parameter cannot be less than #{value}" unless param.nil? || value <= param
142
+ raise InvalidParameterError, "Parameter #{param_name} cannot be less than #{value}" unless param.nil? || value <= param
130
143
  when :max
131
- raise InvalidParameterError, "Parameter cannot be greater than #{value}" unless param.nil? || value >= param
144
+ raise InvalidParameterError, "Parameter #{param_name} cannot be greater than #{value}" unless param.nil? || value >= param
132
145
  when :min_length
133
- raise InvalidParameterError, "Parameter cannot have length less than #{value}" unless param.nil? || value <= param.length
146
+ raise InvalidParameterError, "Parameter #{param_name} cannot have length less than #{value}" unless param.nil? || value <= param.length
134
147
  when :max_length
135
- raise InvalidParameterError, "Parameter cannot have length greater than #{value}" unless param.nil? || value >= param.length
148
+ raise InvalidParameterError, "Parameter #{param_name} cannot have length greater than #{value}" unless param.nil? || value >= param.length
136
149
  end
137
150
  end
138
151
  end
@@ -1,3 +1,3 @@
1
1
  module RailsParam #:nodoc
2
- VERSION = "0.9.0"
2
+ VERSION = "0.10.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_param
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Blanco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-02 00:00:00.000000000 Z
11
+ date: 2017-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.11'
19
+ version: '3.4'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.11'
26
+ version: '3.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.11'
33
+ version: '3.4'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.11'
40
+ version: '3.4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: actionpack
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  version: 1.3.6
98
98
  requirements: []
99
99
  rubyforge_project:
100
- rubygems_version: 2.4.8
100
+ rubygems_version: 2.5.1
101
101
  signing_key:
102
102
  specification_version: 4
103
103
  summary: Parameter Validation and Type Coercion for Rails