rails_param 0.10.1 → 0.10.2
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/README.md +9 -2
- data/lib/rails_param/param.rb +17 -6
- data/lib/rails_param/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86a75a7469730b59de76372987ffe4a28f4ebfc5f4b2956a0052af6b70c32bf9
|
4
|
+
data.tar.gz: fe6a7b5bf1dd8ba1615243c07dfb215d4714b4236674146333ecf42ce2539f6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0af1329f2b47c1267b87dc3c850760e223c85177202b0a1d2b4c6d2fdb6e8fdaff055b3500182862f3be52ac760679673a879329b4f2fd1b9a1b61155fbfd12
|
7
|
+
data.tar.gz: b1483e1c051a615a6517e93d6209194d1da6911f277acf46163485a8be15b88a1ca6258bf64ae3cc52a9cc732861c02733dc710183da49f6ec020a1abfde3011
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
#
|
1
|
+
# rails_param
|
2
2
|
_Parameter Validation & Type Coercion for Rails_
|
3
3
|
|
4
|
+
[](https://rubygems.org/gems/rails_param)
|
4
5
|
[](https://travis-ci.org/nicolasblanco/rails_param)
|
5
6
|
|
6
7
|
## Introduction
|
@@ -76,6 +77,12 @@ You may use the [rescue_from](http://api.rubyonrails.org/classes/ActiveSupport/R
|
|
76
77
|
- `min` / `max`
|
77
78
|
- `format`
|
78
79
|
|
80
|
+
Customize exception message with option `:message`
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
param! :q, String, required: true, message: "Query not specified"
|
84
|
+
```
|
85
|
+
|
79
86
|
### Defaults and Transformations
|
80
87
|
|
81
88
|
Passing a `default` option will provide a default value for a parameter if none is passed. A `default` can defined as either a default or as a `Proc`:
|
@@ -147,4 +154,4 @@ Nicolas Blanco
|
|
147
154
|
|
148
155
|
## License
|
149
156
|
|
150
|
-
|
157
|
+
rails_param is available under the MIT license. See the LICENSE file for more info.
|
data/lib/rails_param/param.rb
CHANGED
@@ -2,9 +2,16 @@ module RailsParam
|
|
2
2
|
module Param
|
3
3
|
|
4
4
|
DEFAULT_PRECISION = 14
|
5
|
+
TIME_TYPES = [Date, DateTime, Time].freeze
|
6
|
+
STRING_OR_TIME_TYPES = ([String] + TIME_TYPES).freeze
|
5
7
|
|
6
8
|
class InvalidParameterError < StandardError
|
7
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
|
8
15
|
end
|
9
16
|
|
10
17
|
class MockController
|
@@ -28,7 +35,7 @@ module RailsParam
|
|
28
35
|
end
|
29
36
|
|
30
37
|
# apply tranformation
|
31
|
-
if params
|
38
|
+
if params.include?(name) && options[:transform]
|
32
39
|
params[name] = options[:transform].to_proc.call(params[name])
|
33
40
|
end
|
34
41
|
|
@@ -99,9 +106,13 @@ module RailsParam
|
|
99
106
|
return Integer(param) if type == Integer
|
100
107
|
return Float(param) if type == Float
|
101
108
|
return String(param) if type == String
|
102
|
-
|
103
|
-
|
104
|
-
|
109
|
+
if TIME_TYPES.include? type
|
110
|
+
if options[:format].present?
|
111
|
+
return type.strptime(param, options[:format])
|
112
|
+
else
|
113
|
+
return type.parse(param)
|
114
|
+
end
|
115
|
+
end
|
105
116
|
return Array(param.split(options[:delimiter] || ",")) if type == Array
|
106
117
|
return Hash[param.split(options[:delimiter] || ",").map { |c| c.split(options[:separator] || ":") }] if type == Hash
|
107
118
|
if type == TrueClass || type == FalseClass || type == :boolean
|
@@ -135,8 +146,8 @@ module RailsParam
|
|
135
146
|
param.nil?
|
136
147
|
end
|
137
148
|
when :format
|
138
|
-
raise InvalidParameterError, "Parameter #{param_name} must be a string if using the format validation" unless param.kind_of?
|
139
|
-
raise InvalidParameterError, "Parameter #{param_name} must match format #{value}"
|
149
|
+
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 }
|
150
|
+
raise InvalidParameterError, "Parameter #{param_name} must match format #{value}" if param.kind_of?(String) && param !~ value
|
140
151
|
when :is
|
141
152
|
raise InvalidParameterError, "Parameter #{param_name} must be #{value}" unless param === value
|
142
153
|
when :in, :within, :range
|
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.10.
|
4
|
+
version: 0.10.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas Blanco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -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.7.
|
100
|
+
rubygems_version: 2.7.8
|
101
101
|
signing_key:
|
102
102
|
specification_version: 4
|
103
103
|
summary: Parameter Validation and Type Coercion for Rails
|