rails_param 0.11.2 → 1.0.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
  SHA256:
3
- metadata.gz: '08178a96aa23b8bdd933adeed68df920615f3dfd23c3419be3e5a3862daf9110'
4
- data.tar.gz: 8440cb471e4bde464eb3587031c785fff70a1c0072a219d284bb9a35d75359f1
3
+ metadata.gz: d0d3e366d59b97f9e8453e2721f975afe0cbed9b29de26c35e786552707a3586
4
+ data.tar.gz: ed1a7c052cd69b75e2551cce07c2004094b0b95307490d72b88185a0da693c79
5
5
  SHA512:
6
- metadata.gz: eac1db59508ef0c4bf89a59b95ba8685f47c2d55529ce4253581540f7ac0398921651187a203e0c44f9b5416eebf07914a9756918737e344ff499cf728287707
7
- data.tar.gz: b91642011d2d51e82c997cecd2cf8e4d9d72ca01cd1ed0b13d6cfa1e3df5f3acd611325984d516389df85169a2f9bea4ffe9c897b3b106d472c3fe027af25514
6
+ metadata.gz: f70757e8463748ec31be8f61176a80fb1da2460af184c8a096a2abf928cf1c3507d77290e4a7f38f979829bad259e850afc4a1f0c31fd0f5bcd3fccad46834f4
7
+ data.tar.gz: 12074dad3f21ba4d0e1afd8bbc9db9ad827486dbe014f930c89d7fcc07ebed7c192da0aa31fe8b85041947541e1410d600d7ee630a5128522fc4da98b8bfd809
data/README.md CHANGED
@@ -26,6 +26,10 @@ All the credits go to [@mattt](https://twitter.com/mattt).
26
26
 
27
27
  It has all the features of the sinatra-param gem, I used bang methods (like param!) to indicate that they are destructive as they change the controller params object and may raise an exception.
28
28
 
29
+ ## Upgrading
30
+
31
+ Find a list of breaking changes in [UPGRADING](UPGRADING.md).
32
+
29
33
  ## Installation
30
34
 
31
35
  As usual, in your Gemfile...
@@ -67,7 +71,7 @@ By declaring parameter types, incoming parameters will automatically be transfor
67
71
 
68
72
  ### Validations
69
73
 
70
- Encapsulate business logic in a consistent way with validations. If a parameter does not satisfy a particular condition, an exception (RailsParam::Param::InvalidParameterError) is raised.
74
+ Encapsulate business logic in a consistent way with validations. If a parameter does not satisfy a particular condition, an exception (RailsParam::InvalidParameterError) is raised.
71
75
  You may use the [rescue_from](http://api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html#method-i-rescue_from) method in your controller to catch this kind of exception.
72
76
 
73
77
  - `required`
@@ -0,0 +1,18 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class ArrayParam < VirtualParam
4
+ def coerce
5
+ return param if param.is_a?(Array)
6
+
7
+ Array(param.split(options[:delimiter] || ","))
8
+ end
9
+
10
+ private
11
+
12
+ def argument_validation
13
+ raise ArgumentError unless type == Array
14
+ raise ArgumentError unless param.respond_to?(:split)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class BigDecimalParam < VirtualParam
4
+ DEFAULT_PRECISION = 14
5
+
6
+ def coerce
7
+ stripped_param = if param.is_a?(String)
8
+ param.delete('$,').strip.to_f
9
+ else
10
+ param
11
+ end
12
+
13
+ BigDecimal(stripped_param, options[:precision] || DEFAULT_PRECISION)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class BooleanParam < VirtualParam
4
+ FALSEY = /^(false|f|no|n|0)$/i.freeze
5
+ TRUTHY = /^(true|t|yes|y|1)$/i.freeze
6
+
7
+ def coerce
8
+ return false if FALSEY === param.to_s
9
+ return true if TRUTHY === param.to_s
10
+
11
+ raise ArgumentError
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class FloatParam < VirtualParam
4
+ def coerce
5
+ Float(param)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class HashParam < VirtualParam
4
+ def coerce
5
+ return param if param.is_a?(ActionController::Parameters)
6
+ raise ArgumentError unless param.respond_to?(:split)
7
+
8
+ Hash[param.split(options[:delimiter] || ",").map { |c| c.split(options[:separator] || ":") }]
9
+ end
10
+
11
+ private
12
+
13
+ def argument_validation
14
+ raise ArgumentError unless type == Hash
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class IntegerParam < VirtualParam
4
+ def coerce
5
+ Integer(param)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class StringParam < VirtualParam
4
+ def coerce
5
+ String(param)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,17 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class TimeParam < VirtualParam
4
+ def coerce
5
+ return type.strptime(param, options[:format]) if options[:format].present?
6
+
7
+ type.parse(param)
8
+ end
9
+
10
+ private
11
+
12
+ def argument_validation
13
+ raise ArgumentError unless type.respond_to?(:parse)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,24 @@
1
+ module RailsParam
2
+ class Coercion
3
+ class VirtualParam
4
+ attr_reader :param, :options, :type
5
+
6
+ def initialize(param:, options: nil, type: nil)
7
+ @param = param
8
+ @options = options
9
+ @type = type
10
+ argument_validation
11
+ end
12
+
13
+ def coerce
14
+ nil
15
+ end
16
+
17
+ private
18
+
19
+ def argument_validation
20
+ nil
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ module RailsParam
2
+ class Coercion
3
+ attr_reader :coercion, :param
4
+
5
+ PARAM_TYPE_MAPPING = {
6
+ Integer => IntegerParam,
7
+ Float => FloatParam,
8
+ String => StringParam,
9
+ Array => ArrayParam,
10
+ Hash => HashParam,
11
+ BigDecimal => BigDecimalParam,
12
+ Date => TimeParam,
13
+ DateTime => TimeParam,
14
+ Time => TimeParam,
15
+ TrueClass => BooleanParam,
16
+ FalseClass => BooleanParam,
17
+ boolean: BooleanParam
18
+ }.freeze
19
+
20
+ TIME_TYPES = [Date, DateTime, Time].freeze
21
+ BOOLEAN_TYPES = [TrueClass, FalseClass, :boolean].freeze
22
+
23
+ def initialize(param, type, options)
24
+ @param = param
25
+ @coercion = klass_for(type).new(param: param, options: options, type: type)
26
+ end
27
+
28
+ def klass_for(type)
29
+ klass = PARAM_TYPE_MAPPING[type]
30
+ return klass if klass
31
+
32
+ raise TypeError
33
+ end
34
+
35
+ def coerce
36
+ return nil if param.nil?
37
+
38
+ coercion.coerce
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,17 @@
1
+ module RailsParam
2
+ class InvalidParameterError < StandardError
3
+ attr_accessor :param, :options
4
+
5
+ def initialize(message, param: nil, options: {})
6
+ self.param = param
7
+ self.options = options
8
+ super(message)
9
+ end
10
+
11
+ def message
12
+ return options[:message] if options.is_a?(Hash) && options.key?(:message)
13
+
14
+ super
15
+ end
16
+ end
17
+ end
@@ -1,177 +1,5 @@
1
1
  module RailsParam
2
- module Param
3
-
4
- DEFAULT_PRECISION = 14
5
- TIME_TYPES = [Date, DateTime, Time].freeze
6
- STRING_OR_TIME_TYPES = ([String] + TIME_TYPES).freeze
7
-
8
- class InvalidParameterError < StandardError
9
- attr_accessor :param, :options
10
-
11
- def message
12
- return options[:message] if options.is_a?(Hash) && options.key?(:message)
13
- super
14
- end
15
- end
16
-
17
- class MockController
18
- include RailsParam::Param
19
- attr_accessor :params
20
- end
21
-
22
- def param!(name, type, options = {}, &block)
23
- name = name.to_s unless name.is_a? Integer # keep index for validating elements
24
-
25
- return unless params.include?(name) || check_param_presence?(options[:default]) || options[:required]
26
-
27
- begin
28
- params[name] = coerce(params[name], type, options)
29
-
30
- # set default
31
- if params[name].nil? && check_param_presence?(options[:default])
32
- params[name] = options[:default].respond_to?(:call) ? options[:default].call : options[:default]
33
- end
34
-
35
- # validate presence
36
- if params[name].nil? && options[:required]
37
- raise InvalidParameterError, "Parameter #{name} is required"
38
- end
39
-
40
- # apply transformation
41
- if params.include?(name) && options[:transform]
42
- params[name] = options[:transform].to_proc.call(params[name])
43
- end
44
-
45
- # validate
46
- validate!(params[name], name, options)
47
-
48
- if block_given?
49
- if type == Array
50
- params[name].each_with_index do |element, i|
51
- if element.is_a?(Hash) || element.is_a?(ActionController::Parameters)
52
- recurse element, &block
53
- else
54
- params[name][i] = recurse({ i => element }, i, &block) # supply index as key unless value is hash
55
- end
56
- end
57
- else
58
- recurse params[name], &block
59
- end
60
- end
61
- params[name]
62
-
63
- rescue InvalidParameterError => exception
64
- exception.param ||= name
65
- exception.options ||= options
66
- raise exception
67
- end
68
- end
69
-
70
- # TODO: should we reintegrate this method?
71
- # def one_of!(*names)
72
- # count = 0
73
- # names.each do |name|
74
- # if params[name] and params[name].present?
75
- # count += 1
76
- # next unless count > 1
77
- #
78
- # error = "Parameters #{names.join(', ')} are mutually exclusive"
79
- # if content_type and content_type.match(mime_type(:json))
80
- # error = {message: error}.to_json
81
- # end
82
- #
83
- # # do something with error object
84
- # end
85
- # end
86
- # end
87
-
88
- private
89
-
90
- def check_param_presence? param
91
- not param.nil?
92
- end
93
-
94
- def recurse(params, index = nil)
95
- raise InvalidParameterError, 'no block given' unless block_given?
96
- controller = RailsParam::Param::MockController.new
97
- controller.params = params
98
- yield(controller, index)
99
- end
100
-
101
- def coerce(param, type, options = {})
102
- begin
103
- return nil if param.nil?
104
- return param if (param.is_a?(type) rescue false)
105
- if (param.is_a?(Array) && type != Array) || ((param.is_a?(Hash) || param.is_a?(ActionController::Parameters)) && type != Hash)
106
- raise ArgumentError
107
- end
108
- return param if (param.is_a?(ActionController::Parameters) && type == Hash rescue false)
109
- return Integer(param) if type == Integer
110
- return Float(param) if type == Float
111
- return String(param) if type == String
112
- if TIME_TYPES.include? type
113
- if options[:format].present?
114
- return type.strptime(param, options[:format])
115
- else
116
- return type.parse(param)
117
- end
118
- end
119
- raise ArgumentError if (type == Array || type == Hash) && !param.respond_to?(:split)
120
- return Array(param.split(options[:delimiter] || ",")) if type == Array
121
- return Hash[param.split(options[:delimiter] || ",").map { |c| c.split(options[:separator] || ":") }] if type == Hash
122
- if type == TrueClass || type == FalseClass || type == :boolean
123
- return false if /^(false|f|no|n|0)$/i === param.to_s
124
- return true if /^(true|t|yes|y|1)$/i === param.to_s
125
-
126
- raise ArgumentError
127
- end
128
- if type == BigDecimal
129
- param = param.delete('$,').strip.to_f if param.is_a?(String)
130
- return BigDecimal(param, (options[:precision] || DEFAULT_PRECISION))
131
- end
132
- return nil
133
- rescue ArgumentError, TypeError
134
- raise InvalidParameterError, "'#{param}' is not a valid #{type}"
135
- end
136
- end
137
-
138
- def validate!(param, param_name, options)
139
- options.each do |key, value|
140
- case key
141
- when :blank
142
- raise InvalidParameterError, "Parameter #{param_name} cannot be blank" if !value && case param
143
- when String
144
- !(/\S/ === param)
145
- when Array, Hash, ActionController::Parameters
146
- param.empty?
147
- else
148
- param.nil?
149
- end
150
- when :format
151
- raise InvalidParameterError, "Parameter #{param_name} must be a string if using the format validation" unless STRING_OR_TIME_TYPES.any? { |cls| param.kind_of? cls }
152
- raise InvalidParameterError, "Parameter #{param_name} must match format #{value}" if param.kind_of?(String) && param !~ value
153
- when :is
154
- raise InvalidParameterError, "Parameter #{param_name} must be #{value}" unless param === value
155
- when :in, :within, :range
156
- raise InvalidParameterError, "Parameter #{param_name} must be within #{value}" unless param.nil? || case value
157
- when Range
158
- value.include?(param)
159
- else
160
- Array(value).include?(param)
161
- end
162
- when :min
163
- raise InvalidParameterError, "Parameter #{param_name} cannot be less than #{value}" unless param.nil? || value <= param
164
- when :max
165
- raise InvalidParameterError, "Parameter #{param_name} cannot be greater than #{value}" unless param.nil? || value >= param
166
- when :min_length
167
- raise InvalidParameterError, "Parameter #{param_name} cannot have length less than #{value}" unless param.nil? || value <= param.length
168
- when :max_length
169
- raise InvalidParameterError, "Parameter #{param_name} cannot have length greater than #{value}" unless param.nil? || value >= param.length
170
- when :custom
171
- value.call(param)
172
- end
173
- end
174
- end
175
-
2
+ def param!(name, type, options = {}, &block)
3
+ ParamEvaluator.new(params).param!(name, type, options, &block)
176
4
  end
177
5
  end
@@ -0,0 +1,90 @@
1
+ module RailsParam
2
+ class ParamEvaluator
3
+ attr_accessor :params
4
+
5
+ def initialize(params)
6
+ @params = params
7
+ end
8
+
9
+ def param!(name, type, options = {}, &block)
10
+ name = name.is_a?(Integer)? name : name.to_s
11
+ return unless params.include?(name) || check_param_presence?(options[:default]) || options[:required]
12
+
13
+ # coerce value
14
+ coerced_value = coerce(
15
+ params[name],
16
+ type,
17
+ options
18
+ )
19
+ parameter = RailsParam::Parameter.new(
20
+ name: name,
21
+ value: coerced_value,
22
+ type: type,
23
+ options: options,
24
+ &block
25
+ )
26
+
27
+ parameter.set_default if parameter.should_set_default?
28
+
29
+ # validate presence
30
+ if params[name].nil? && options[:required]
31
+ raise InvalidParameterError.new(
32
+ "Parameter #{name} is required",
33
+ param: name,
34
+ options: options
35
+ )
36
+ end
37
+
38
+ recurse_on_parameter(parameter, &block) if block_given?
39
+
40
+ # apply transformation
41
+ parameter.transform if params.include?(name) && options[:transform]
42
+
43
+ # validate
44
+ validate!(parameter)
45
+
46
+ # set params value
47
+ params[name] = parameter.value
48
+ end
49
+
50
+ private
51
+
52
+ def recurse_on_parameter(parameter, &block)
53
+ if parameter.type == Array
54
+ parameter.value.each_with_index do |element, i|
55
+ if element.is_a?(Hash) || element.is_a?(ActionController::Parameters)
56
+ recurse element, &block
57
+ else
58
+ parameter.value[i] = recurse({ i => element }, i, &block) # supply index as key unless value is hash
59
+ end
60
+ end
61
+ else
62
+ recurse parameter.value, &block
63
+ end
64
+ end
65
+
66
+ def recurse(element, index = nil)
67
+ raise InvalidParameterError, 'no block given' unless block_given?
68
+
69
+ yield(ParamEvaluator.new(element), index)
70
+ end
71
+
72
+ def check_param_presence? param
73
+ !param.nil?
74
+ end
75
+
76
+ def coerce(param, type, options = {})
77
+ begin
78
+ return param if (param.is_a?(type) rescue false)
79
+
80
+ Coercion.new(param, type, options).coerce
81
+ rescue ArgumentError, TypeError
82
+ raise InvalidParameterError, "'#{param}' is not a valid #{type}"
83
+ end
84
+ end
85
+
86
+ def validate!(param)
87
+ param.validate
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,37 @@
1
+ module RailsParam
2
+ class Parameter
3
+ attr_accessor :name, :value, :options, :type
4
+
5
+ TIME_TYPES = [Date, DateTime, Time].freeze
6
+ STRING_OR_TIME_TYPES = ([String] + TIME_TYPES).freeze
7
+
8
+ def initialize(name:, value:, options: {}, type: nil)
9
+ @name = name
10
+ @value = value
11
+ @options = options
12
+ @type = type
13
+ end
14
+
15
+ def should_set_default?
16
+ value.nil? && check_param_presence?(options[:default])
17
+ end
18
+
19
+ def set_default
20
+ self.value = options[:default].respond_to?(:call) ? options[:default].call : options[:default]
21
+ end
22
+
23
+ def transform
24
+ self.value = options[:transform].to_proc.call(value)
25
+ end
26
+
27
+ def validate
28
+ Validator.new(self).validate!
29
+ end
30
+
31
+ private
32
+
33
+ def check_param_presence?(param)
34
+ !param.nil?
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,24 @@
1
+ module RailsParam
2
+ class Validator
3
+ class Blank < Validator
4
+ def valid_value?
5
+ return false if parameter.options[:blank]
6
+
7
+ case value
8
+ when String
9
+ (/\S/ === value)
10
+ when Array, Hash, ActionController::Parameters
11
+ !value.empty?
12
+ else
13
+ !value.nil?
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def error_message
20
+ "Parameter #{name} cannot be blank"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,13 @@
1
+ module RailsParam
2
+ class Validator
3
+ class Custom < Validator
4
+ def valid_value?
5
+ !options[:custom].call(value)
6
+ end
7
+
8
+ private
9
+
10
+ def error_message; end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,31 @@
1
+ module RailsParam
2
+ class Validator
3
+ class Format < Validator
4
+ def valid_value?
5
+ matches_time_types? || string_in_format?
6
+ end
7
+
8
+ private
9
+
10
+ TIME_TYPES = [Date, DateTime, Time].freeze
11
+ STRING_OR_TIME_TYPES = ([String] + TIME_TYPES).freeze
12
+
13
+ def error_message
14
+ "Parameter #{name} must be a string if using the format validation" unless matches_string_or_time_types?
15
+ "Parameter #{name} must match format #{options[:format]}" unless string_in_format?
16
+ end
17
+
18
+ def matches_time_types?
19
+ TIME_TYPES.any? { |cls| value.is_a? cls }
20
+ end
21
+
22
+ def matches_string_or_time_types?
23
+ STRING_OR_TIME_TYPES.any? { |cls| value.is_a? cls }
24
+ end
25
+
26
+ def string_in_format?
27
+ value =~ options[:format] && value.kind_of?(String)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,20 @@
1
+ module RailsParam
2
+ class Validator
3
+ class In < Validator
4
+ def valid_value?
5
+ value.nil? || case options[:in]
6
+ when Range
7
+ options[:in].include?(value)
8
+ else
9
+ Array(options[:in]).include?(value)
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def error_message
16
+ "Parameter #{parameter.name} must be within #{parameter.options[:in]}"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ module RailsParam
2
+ class Validator
3
+ class Is < Validator
4
+ def valid_value?
5
+ value === options[:is]
6
+ end
7
+
8
+ private
9
+
10
+ def error_message
11
+ "Parameter #{name} must be #{options[:is]}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module RailsParam
2
+ class Validator
3
+ class Max < Validator
4
+ def valid_value?
5
+ value.nil? || options[:max] >= value
6
+ end
7
+
8
+ private
9
+
10
+ def error_message
11
+ "Parameter #{name} cannot be greater than #{options[:max]}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module RailsParam
2
+ class Validator
3
+ class MaxLength < Validator
4
+ def valid_value?
5
+ value.nil? || options[:max_length] >= value.length
6
+ end
7
+
8
+ private
9
+
10
+ def error_message
11
+ "Parameter #{name} cannot have length greater than #{options[:max_length]}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module RailsParam
2
+ class Validator
3
+ class Min < Validator
4
+ def valid_value?
5
+ value.nil? || options[:min] <= value
6
+ end
7
+
8
+ private
9
+
10
+ def error_message
11
+ "Parameter #{name} cannot be less than #{options[:min]}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module RailsParam
2
+ class Validator
3
+ class MinLength < Validator
4
+ def valid_value?
5
+ value.nil? || options[:min_length] <= value.length
6
+ end
7
+
8
+ private
9
+
10
+ def error_message
11
+ "Parameter #{name} cannot have length less than #{options[:min_length]}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module RailsParam
2
+ class Validator
3
+ class Required < Validator
4
+ private
5
+
6
+ def valid_value?
7
+ value.present? && options[:required]
8
+ end
9
+
10
+ def error_message
11
+ "Parameter #{name} is required"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,63 @@
1
+ require 'forwardable'
2
+
3
+ module RailsParam
4
+ class Validator
5
+ extend Forwardable
6
+
7
+ attr_reader :parameter
8
+
9
+ def_delegators :parameter, :name, :options, :value
10
+
11
+ VALIDATABLE_OPTIONS = [
12
+ :blank,
13
+ :custom,
14
+ :format,
15
+ :in,
16
+ :is,
17
+ :max_length,
18
+ :max,
19
+ :min_length,
20
+ :min,
21
+ :required
22
+ ].freeze
23
+
24
+ def initialize(parameter)
25
+ @parameter = parameter
26
+ end
27
+
28
+ def validate!
29
+ options.each_key do |key|
30
+ next unless VALIDATABLE_OPTIONS.include? key
31
+
32
+ class_name = camelize(key)
33
+ Validator.const_get(class_name).new(parameter).valid!
34
+ end
35
+ end
36
+
37
+ def valid!
38
+ return if valid_value?
39
+
40
+ raise InvalidParameterError.new(
41
+ error_message,
42
+ param: name,
43
+ options: options
44
+ )
45
+ end
46
+
47
+ private
48
+
49
+ def camelize(term)
50
+ string = term.to_s
51
+ string.split('_').collect(&:capitalize).join
52
+ end
53
+
54
+ def error_message
55
+ nil
56
+ end
57
+
58
+ def valid_value?
59
+ # Should be overwritten in subclass
60
+ false
61
+ end
62
+ end
63
+ end
@@ -1,3 +1,3 @@
1
1
  module RailsParam #:nodoc
2
- VERSION = "0.11.2"
2
+ VERSION = "1.0.0"
3
3
  end
data/lib/rails_param.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require 'rails_param/param'
2
+ Dir[File.join(__dir__, 'rails_param/validator', '*.rb')].sort.each { |file| require file }
3
+ Dir[File.join(__dir__, 'rails_param/coercion', '*.rb')].sort.reverse.each { |file| require file }
4
+ Dir[File.join(__dir__, 'rails_param', '*.rb')].sort.each { |file| require file }
2
5
 
3
6
  ActiveSupport.on_load(:action_controller) do
4
- include RailsParam::Param
7
+ include RailsParam
5
8
  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.11.2
4
+ version: 1.0.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: 2021-05-15 00:00:00.000000000 Z
11
+ date: 2021-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -88,7 +88,31 @@ extra_rdoc_files: []
88
88
  files:
89
89
  - README.md
90
90
  - lib/rails_param.rb
91
+ - lib/rails_param/coercion.rb
92
+ - lib/rails_param/coercion/array_param.rb
93
+ - lib/rails_param/coercion/big_decimal_param.rb
94
+ - lib/rails_param/coercion/boolean_param.rb
95
+ - lib/rails_param/coercion/float_param.rb
96
+ - lib/rails_param/coercion/hash_param.rb
97
+ - lib/rails_param/coercion/integer_param.rb
98
+ - lib/rails_param/coercion/string_param.rb
99
+ - lib/rails_param/coercion/time_param.rb
100
+ - lib/rails_param/coercion/virtual_param.rb
101
+ - lib/rails_param/invalid_parameter_error.rb
91
102
  - lib/rails_param/param.rb
103
+ - lib/rails_param/param_evaluator.rb
104
+ - lib/rails_param/parameter.rb
105
+ - lib/rails_param/validator.rb
106
+ - lib/rails_param/validator/blank.rb
107
+ - lib/rails_param/validator/custom.rb
108
+ - lib/rails_param/validator/format.rb
109
+ - lib/rails_param/validator/in.rb
110
+ - lib/rails_param/validator/is.rb
111
+ - lib/rails_param/validator/max.rb
112
+ - lib/rails_param/validator/max_length.rb
113
+ - lib/rails_param/validator/min.rb
114
+ - lib/rails_param/validator/min_length.rb
115
+ - lib/rails_param/validator/required.rb
92
116
  - lib/rails_param/version.rb
93
117
  homepage: http://github.com/nicolasblanco/rails_param
94
118
  licenses: