class Reasonable::Value::Coercer
Public Class Methods
call(types, value)
click to toggle source
# File lib/reasonable/value.rb, line 89 def call(types, value) coerced = Array(types).reduce(nil) do |memo, type| memo || built_in(type, value) || custom(type, value) end coerced.nil? and raise(TypeError) or coerced end
Private Class Methods
built_in(type, value)
click to toggle source
# File lib/reasonable/value.rb, line 99 def built_in(type, value) return unless Kernel.respond_to?(type.to_s) Kernel.public_send(type.to_s, value) rescue ArgumentError, TypeError nil end
custom(type, value)
click to toggle source
# File lib/reasonable/value.rb, line 107 def custom(type, value) return value if value.is_a?(type) Try.(MethodName.(type), value) || reasonable(type, value) end
reasonable(type, value)
click to toggle source
# File lib/reasonable/value.rb, line 113 def reasonable(type, value) return unless type.ancestors.include?(Reasonable::Value) return unless value.is_a?(Hash) type.new(value) end