util-params 0.1.3 → 0.2.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: 5c3a8f3f96de0a41c9b895831f9cf8ac798b514e
4
- data.tar.gz: 7798f50c0c5f38cb25616cdd93f3cdc56bb4c068
3
+ metadata.gz: 0fd1ab494a27202fc9796355ecaebcf9b9c67943
4
+ data.tar.gz: 496d08fbd05d12cd70a112f4c73bf2f214f55b12
5
5
  SHA512:
6
- metadata.gz: f4e5083fb3c436148c44f48255eb68595dc9d55a085323dab2a8f7cca26b1f17ebd4cc2243222726102184135fdc7e90579f2651303a56b6d7c5d3ffac7bc31d
7
- data.tar.gz: 81c97e94fcffc6c3b217cc903d700fed4010808499f7cb449e6be1e7f3696af895b053675aab1831d1c1588dff87fea9b87d8e2a16fc18a5e91a806b7ecad5c7
6
+ metadata.gz: 4a6749be2796880c8e1698d23171f560cb9e3cfdfc8f7d84202e627a84a99d1d0c911c3f69f469a69b224709838aaec1b492ba80dd5f852eb607c94efa304e1d
7
+ data.tar.gz: 0f1a24934ac17c7854d8165fc5be1107309a28afee87a412495f4512425f107bc58ea8c56219adf0fbea23de3e3897f9138de13cfb37fa8c1f50829baf4fe931
@@ -8,125 +8,185 @@ module Util
8
8
  # エラーリスト
9
9
  @errors = []
10
10
  end
11
-
12
- # パラメーター取得
13
- # param[in] name
14
- # param[in] default
15
- # param[in] isRequire
16
- # param[in] params (min_length, max_length, reg)
17
- def get_param_str name, default = nil, is_require = false, params = {}
18
-
19
- val = get_param_val name, default, is_require
20
-
11
+
12
+ module Type
13
+ INTEGER = 1
14
+ STRING = 2
15
+ FLOAT = 3
16
+ FILE = 4
17
+ BOOLEAN = 5
18
+ OBJECT = 6
19
+ ARRAY = 7
20
+ end
21
+
22
+ def get_params options
23
+ options = _symbolize_keys options
24
+
25
+ key = options[:key]
26
+ val = _load_val params, key, options[:default], options[:require]
27
+
21
28
  return nil if val.nil?
22
- v = val.to_s
29
+
30
+ _validate key, options[:type], val, options
31
+ end
32
+
33
+ def get_int_params key, options
34
+ get_params options.merge(key: key, type: Type::INTEGER)
35
+ end
36
+
37
+ def get_str_params key, options
38
+ get_params options.merge(key: key, type: Type::STRING)
39
+ end
40
+
41
+ def get_float_params key, options
42
+ get_params options.merge(key: key, type: Type::FLOAT)
43
+ end
44
+
45
+ def get_file_params key, options
46
+ get_params options.merge(key: key, type: Type::FILE)
47
+ end
48
+
49
+ def get_bool_params key, options
50
+ get_params options.merge(key: key, type: Type::BOOLEAN)
51
+ end
52
+
53
+ def get_array_params key, options
54
+ get_params options.merge(key: key, type: Type::ARRAY)
55
+ end
56
+
57
+ def get_object_params key, options
58
+ get_params options.merge(key: key, type: Type::OBJECT)
59
+ end
60
+
61
+
62
+ # エラーがあるか
63
+ def has_params_error?
64
+ @is_error
65
+ end
66
+ # エラーメッセージ入りスト
67
+ def get_params_error
68
+ @errors.join ', '
69
+ end
23
70
 
24
- if params.key? :enum
25
- for e in params[:enum]
26
- return v if e === v
71
+ protected
72
+
73
+ def _load_val vals, key, default, is_require
74
+
75
+ unless vals.has_key? key
76
+ push_error "#{key.to_s} == nil" if is_require
77
+ return default
78
+ end
79
+
80
+ vals[key]
81
+ end
82
+
83
+ def _validate key_label, type, val, options
84
+ options ||= {}
85
+
86
+ case type
87
+ when Type::INTEGER
88
+ _validate_int key_label, val, options[:min], options[:max], options[:enum]
89
+ when Type::STRING
90
+ _validate_str key_label, val, options[:min], options[:max], options[:enum], options[:reg]
91
+ when Type::FLOAT
92
+ _validate_float key_label, val, options[:min], options[:max]
93
+ when Type::BOOLEAN
94
+ _validate_bool key_label, val
95
+ when Type::FILE
96
+ _validate_file key_label, val
97
+ when Type::OBJECT
98
+ _validate_object key_label, val, options[:elements]
99
+ when Type::ARRAY
100
+ vals = _validate_array key_label, val, options[:min], options[:max]
101
+ return nil if vals.nil?
102
+ elem_options = options[:element] || {}
103
+ elem_type = elem_options[:type] || Type::STRING
104
+
105
+ vals.map.with_index do |_, i|
106
+ elem_val = vals[i]
107
+ _validate "#{key_label}[#{i}]", elem_type, elem_val, elem_options
27
108
  end
28
- push_error "#{name.to_s} == unknone val [#{v.to_s}]"
109
+ else
110
+ # do nothing
29
111
  end
30
-
31
- if params.key?(:min_length) && (v.length < params[:min_length])
32
- push_error "#{name.to_s} len [#{v.to_s}] < #{params[:min_length].to_s}"
112
+
113
+ end
114
+
115
+ def _validate_int key, val, min, max, enum
116
+ return nil if val.blank?
117
+
118
+ if /[^\d]/ =~ val.to_s
119
+ push_error "#{key.to_s} type [#{val.to_s}] != integer"
33
120
  end
34
-
35
- if params.key?(:max_length) && (v.length > params[:max_length])
36
- push_error "#{name.to_s} len [#{v.to_s}] > #{params[:max_length].to_s}"
121
+
122
+ v = val.to_i
123
+
124
+ if enum
125
+ for e in enum
126
+ return v if e === v
127
+ end
128
+ push_error "#{key.to_s} == unknone val [#{v.to_s}]"
37
129
  end
38
-
39
- if params.key?(:reg) && !(/#{params[:reg]}/ =~ val)
40
- push_error "#{name.to_s} unmatch /#{params[:reg].to_s}/ =~ [#{v.to_s}]"
130
+
131
+ if min && (v < min)
132
+ push_error "#{key.to_s} val [#{v.to_s}] < #{min.to_s}"
41
133
  end
42
-
134
+
135
+ if max && (v > max)
136
+ push_error "#{key.to_s} val [#{v.to_s}] > #{max.to_s}"
137
+ end
138
+
43
139
  v
44
140
  end
45
- #
46
- def get_param_strs name, default = [], is_require = false
47
- vals = get_param_val name, default, is_require
48
-
49
- return nil if vals.nil?
50
-
51
- vals
52
- end
53
141
 
54
- # パラメーター取得
55
- def get_param_int name, default = nil, is_require = false, params = {}
56
-
57
- val = get_param_val name, default, is_require
58
-
142
+ def _validate_str key, val, min, max, enum, reg
59
143
  return nil if val.nil?
60
- return val if val.kind_of? Integer
61
-
62
- if /[^\d]/ =~ val
63
- push_error "#{name.to_s} type [#{val.to_s}] != integer"
64
- end
65
-
66
- v = val.to_i
67
-
68
- if params.key? :enum
69
- for e in params[:enum]
70
- logger.debug e
144
+
145
+ v = val.to_s
146
+
147
+ if enum
148
+ enum.each do |e|
71
149
  return v if e === v
72
150
  end
73
- push_error "#{name.to_s} == unknone val [#{v.to_s}]"
151
+ push_error "#{key.to_s} == unknone val [#{v.to_s}]"
74
152
  end
75
-
76
- if params.key?(:min) && (v.length < params[:min])
77
- push_error "#{name.to_s} val [#{v.to_s}] < #{params[:min].to_s}"
153
+
154
+ if min && (v.length < min)
155
+ push_error "#{key.to_s}.length < #{min.to_s} ('#{v.to_s}')"
78
156
  end
79
-
80
- if params.key?(:max) && (v.length > params[:max])
81
- push_error "#{name.to_s} val [#{v.to_s}] > #{params[:max].to_s}"
157
+
158
+ if max && (v.length > max)
159
+ push_error "#{key.to_s}.length > #{max.to_s} ('#{v.to_s}')"
82
160
  end
161
+
162
+ if reg && !(/#{reg}/ =~ val)
163
+ push_error "#{key.to_s} unmatch /#{reg.to_s}/ =~ [#{v.to_s}]"
164
+ end
165
+
83
166
  v
84
167
  end
85
168
 
86
- def get_param_ints name, default = [], is_require = false
87
- vals = get_param_val name, default, is_require
88
- return nil if vals.nil?
89
-
90
- rs = []
91
-
92
- vals.each do |v|
93
-
94
- if params.key? :enum
95
- for e in params[:enum]
96
- next rs << v.to_i if e === v
97
- end
98
- push_error "#{name.to_s} == unknone val [#{v.to_s}]"
99
- end
100
-
101
- if params.key?(:min) && (v.length < params[:min])
102
- push_error "#{name.to_s} val [#{v.to_s}] < #{params[:min].to_s}"
103
- end
104
-
105
- if params.key?(:max) && (v.length > params[:max])
106
- push_error "#{name.to_s} val [#{v.to_s}] > #{params[:max].to_s}"
107
- end
108
-
109
- rs << v.to_i
169
+ def _validate_float key, val, min, max
170
+ return nil if val.blank?
171
+
172
+ if /[^\d.]/ =~ val
173
+ push_error "#{key.to_s} type [#{val.to_s}] != float"
110
174
  end
111
-
112
- rs
113
- end
114
-
115
- def get_param_objects name, default = [], is_require = false
116
- vals = get_param_val name, default, is_require
117
- vals.map do |v|
118
- v.permit!.to_h.deep_symbolize_keys
175
+
176
+ v = val.to_f
177
+
178
+ if min && (v < min)
179
+ push_error "#{key.to_s} val [#{v.to_s}] < #{min.to_s}"
119
180
  end
181
+
182
+ if max && (v > max)
183
+ push_error "#{key.to_s} val [#{v.to_s}] > #{max.to_s}"
184
+ end
185
+
186
+ v
120
187
  end
121
-
122
- def get_param_object name, default = {}, is_require = false
123
- val = get_param_val name, default, is_require
124
- val.permit!.to_h.deep_symbolize_keys
125
- end
126
-
127
- #
128
- def get_param_bool name, default = nil, is_require = false
129
- val = get_param_val name, default, is_require
188
+
189
+ def _validate_bool key, val
130
190
  return false if val.kind_of? FalseClass
131
191
  return true if val.kind_of? TrueClass
132
192
  return nil if val.blank?
@@ -134,59 +194,67 @@ module Util
134
194
  return true if val == 'true'
135
195
  val.to_i > 0
136
196
  end
137
-
138
- # ファイル受け取り
139
- def get_file name, is_require = false
140
-
141
- f = params[name]
142
-
143
- if is_require
144
-
145
- if f.nil?
146
- push_error "#{name.to_s} == nil"
147
- return nil
148
- end
149
- if f.size.blank?
150
- push_error "#{name.to_s} == nil"
151
- return nil
152
- end
197
+
198
+ def _validate_file key, val
199
+ return nil if val.nil?
200
+
201
+ if f.size.blank?
202
+ push_error "#{key.to_s} == nil"
203
+ return nil
153
204
  end
154
-
155
- return nil if f.nil?
156
- return nil if f.size.blank?
157
-
158
- f
205
+
206
+ return nil if val.nil?
207
+ return nil if val.size.blank?
208
+
209
+ val
159
210
  end
160
- #
161
- def has_param? name
162
- params.include? name
211
+
212
+ def _validate_array key, val, min, max
213
+ return nil if val.nil?
214
+
215
+ unless val.kind_of? Array
216
+ push_error "#{key.to_s}.type != Array"
217
+ return nil
218
+ end
219
+
220
+ v = val
221
+
222
+ if min && (v.length < min)
223
+ push_error "#{key.to_s} val [#{v.to_s}.length] < #{min.to_s}"
224
+ end
225
+
226
+ if max && (v.length > max)
227
+ push_error "#{key.to_s} val [#{v.to_s}.length] > #{max.to_s}"
228
+ end
229
+
230
+ v
163
231
  end
164
- # エラーがあるか
165
- def has_param_error?
166
- @is_error
232
+
233
+ def _validate_object key, val, elements
234
+ return nil if val.nil?
235
+
236
+ elements.map do |options|
237
+ options ||= {}
238
+ elem_key = options[:key]
239
+ elem_type = options[:type]
240
+ elem_default = options[:default]
241
+ elem_require = options[:require]
242
+ elem_val = _load_val val, elem_key, elem_default, elem_require
243
+
244
+ _validate "#{key}[#{elem_key}]", elem_type, elem_val, options
245
+ end
167
246
  end
168
- # エラーメッセージ入りスト
169
- def get_error
170
- @errors.join ', '
247
+
248
+ def _symbolize_keys hash
249
+ hash.map{|k,v| [k.to_sym, v] }.to_h
171
250
  end
172
-
173
- protected
174
-
251
+
175
252
  # エラー追加
176
253
  def push_error message
177
254
  @is_error |= true
178
255
  @errors.push message
179
256
  end
180
257
 
181
- # パラメーター取得
182
- def get_param_val name, default, is_require
183
- unless params.include? name
184
- push_error "#{name.to_s} == nil" if is_require
185
- return default
186
- end
187
- params[name]
188
- end
189
-
190
258
  end
191
259
 
192
260
  end
@@ -1,5 +1,5 @@
1
1
  module Util
2
2
  module Params
3
- VERSION = "0.1.3"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: util-params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - unchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-19 00:00:00.000000000 Z
11
+ date: 2016-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler