param_check 0.1.0 → 0.2.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: 229dac1713acddecb143dbe935c1ed71b64e81a2
4
- data.tar.gz: cb1df9cbe44a477b03e54ee31ebb1893911fa7d7
3
+ metadata.gz: d98a6fa8c72c459888f417ac75fe6a2f9ff5167a
4
+ data.tar.gz: 341fa70017a064a1b5046f21d2d7b1dd3697fd2a
5
5
  SHA512:
6
- metadata.gz: f77219d9cceb435d165ec969900d6f95d9ffc9d079031b8ab400f2d25b9841377aac23a0793fae2504ba9a920c756d144b40b83d940c4f7d7d6ad02db26db275
7
- data.tar.gz: 2fcd88053f1fa18b55e4d0901409b7c16b0a4c0e3347ae1024a33703fb8e8272f197dd2af3e8f072501d5c43adbbade2ee0f1ae735068751c7607148922d381c
6
+ metadata.gz: f9a92099a2944dbe2889ce787cbaacb1e65a46808967e738f8e03be5197e595ce3cb760d7ab3f79b7b2f29773be9b3b61a150903c57ef76e8c21f1186ea40671
7
+ data.tar.gz: f66096a368a3e10b300d1da425f988dbe9753fb498e6abf3cba26977b0646945540fec8305975fa7a35e1ccc39c9f1e75beb46991406cf7cb7a6f1c1b052a635
data/README.md CHANGED
@@ -68,6 +68,20 @@ params[:foo] = {
68
68
  params[:foo] = 'bar'
69
69
  ```
70
70
 
71
+ ### Validating range
72
+ ```ruby
73
+ def index
74
+ param! :foo, min: 1, max: 3
75
+ end
76
+ ```
77
+
78
+ ### Validating inclusion
79
+ ```ruby
80
+ def index
81
+ param! :foo, in: ['foo', 'bar']
82
+ end
83
+ ```
84
+
71
85
  By default, ParamCheck throws a `ParameterError` exception. You can rescue from this exception in order to
72
86
  respond with JSON for example:
73
87
 
@@ -1,4 +1,7 @@
1
1
  en:
2
2
  param_check:
3
3
  missing_required_parameter: "Missing required parameter: %{parameter}"
4
- invalid_parameter: "Parameter %{parameter} is invalid. Expected %{expected} got %{got}"
4
+ invalid_parameter: "Parameter %{parameter} is invalid. Expected %{expected}, got %{got}"
5
+ invalid_minimum: "Parameter %{parameter} must be at least %{min}, got %{got}"
6
+ invalid_maximum: "Parameter %{parameter} must not be more than %{max}, got %{got}"
7
+ invalid_inclusion: "Parameter %{parameter} is not in the list. Expected inclusion in %{expected}, got %{got}"
@@ -1,3 +1,3 @@
1
1
  module ParamCheck
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/param_check.rb CHANGED
@@ -28,16 +28,26 @@ module ParamCheck
28
28
  yield controller, index
29
29
  end
30
30
 
31
- def validate! name, param, options
31
+ def validate! name, value, options
32
32
  if options[:required]
33
- validate_presence name, param
33
+ validate_presence name, value
34
34
  end
35
35
 
36
- validate_type name, param, options[:type]
36
+ if options[:type].present?
37
+ validate_type name, value, options[:type]
38
+ end
39
+
40
+ if options[:min].present? || options[:max].present?
41
+ validate_range name, value, options[:min], options[:max]
42
+ end
43
+
44
+ if options[:in].present?
45
+ validate_inclusion name, value, options[:in]
46
+ end
37
47
  end
38
48
 
39
- def validate_presence name, param
40
- if param.nil?
49
+ def validate_presence name, value
50
+ if value.nil?
41
51
  raise ParameterError, I18n.t(
42
52
  'param_check.missing_required_parameter',
43
53
  parameter: name,
@@ -45,25 +55,60 @@ module ParamCheck
45
55
  end
46
56
  end
47
57
 
48
- def validate_type name, param, type
49
- return if param.nil?
58
+ def validate_type name, value, type
59
+ return if value.nil?
50
60
 
51
61
  if type.in?([Integer, Fixnum])
52
- is_numeric = Float(param) rescue nil
62
+ is_numeric = Float(value) rescue nil
53
63
  if ! is_numeric
54
64
  raise ParameterError, I18n.t(
55
65
  'param_check.invalid_parameter',
56
66
  parameter: name,
57
67
  expected: type,
58
- got: param.class.name
68
+ got: value.class.name
59
69
  )
60
70
  end
61
- elsif ! param.is_a? type
71
+ elsif ! value.is_a? type
62
72
  raise ParameterError, I18n.t(
63
73
  'param_check.invalid_parameter',
64
74
  parameter: name,
65
75
  expected: type,
66
- got: param.class.name
76
+ got: value.class.name
77
+ )
78
+ end
79
+ end
80
+
81
+ def validate_range name, value, min = nil, max = nil
82
+ if min.present?
83
+ if value.nil? || value.to_i < min.to_i
84
+ raise ParameterError, I18n.t(
85
+ 'param_check.invalid_minimum',
86
+ parameter: name,
87
+ min: min,
88
+ got: value,
89
+ )
90
+ end
91
+ end
92
+
93
+ if max.present?
94
+ if value.nil? || value.to_i > max.to_i
95
+ raise ParameterError, I18n.t(
96
+ 'param_check.invalid_maximum',
97
+ parameter: name,
98
+ max: max,
99
+ got: value,
100
+ )
101
+ end
102
+ end
103
+ end
104
+
105
+ def validate_inclusion name, value, inclusion = []
106
+ if ! value.in?(inclusion)
107
+ raise ParameterError, I18n.t(
108
+ 'param_check.invalid_inclusion',
109
+ parameter: name,
110
+ expected: inclusion,
111
+ got: value,
67
112
  )
68
113
  end
69
114
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: param_check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - cjmarkham