util-params 0.1.3 → 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: 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