Module: SafeType
Defined Under Namespace
Modules: Boolean, Default, HashHelper, Required
Classes: CoercionError, Converter, Rule
Instance Method Summary
collapse
Instance Method Details
#coerce(input, params) ⇒ Object
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
# File 'lib/safe_type.rb', line 198
def coerce(input, params)
return params.apply(input) if params.class == Rule
if params.class == ::Hash
result = {}
params.each do |key, val|
result[key] = coerce(input[key], val)
end
return result
end
if params.class == ::Array
return [] if input.nil?
result = Array.new(input.length)
i = 0
while i < input.length
result[i] = coerce(input[i], params[i % params.length])
i += 1
end
return result
end
raise ArgumentError, "invalid coercion rule"
end
|
#coerce!(input, params) ⇒ Object
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
# File 'lib/safe_type.rb', line 220
def coerce!(input, params)
if params.class == ::Hash
params.each do |key, val|
if val.class == ::Hash
coerce!(input[key], val)
else
input[key] = coerce(input[key], val)
end
end
return nil
end
if params.class == ::Array
i = 0
while i < input.length
input[i] = coerce(input[i], params[i % params.length])
i += 1
end
return nil
end
raise ArgumentError, "invalid coercion rule"
end
|