rails_param 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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