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 +4 -4
- data/lib/rails_param/param.rb +30 -17
- data/lib/rails_param/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8cbf1f2bda303ead2066ddf49597a4af8b276ced
|
4
|
+
data.tar.gz: c403d8ad4dafd5a1e014e8e8a0b10417e69badcc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c509598a1dda1c1fe0a1276fe957c3259862ac9430b3b6302926ab4aecf26636eb6de0d07f3901e8f7ca6aa8ab1c3b1ea61c75af341a4a495bf6c6554b63505
|
7
|
+
data.tar.gz: 7b2c56eff184db82d4497a46b203155c077bfb625178de27b6b38a5a8bc9947a088d29468d889d0ec0fccbeda28ebdfc853f73b4f4023d7170a0eb34dba68e86
|
data/lib/rails_param/param.rb
CHANGED
@@ -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.
|
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
|
-
|
23
|
-
|
24
|
-
|
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
|
data/lib/rails_param/version.rb
CHANGED
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.
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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.
|
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
|