class ShallowAttributes::Type::Float

This class is needed to change object type to Float.

@abstract

@since 0.1.0

Public Instance Methods

coerce(value, options = {}) click to toggle source

Convert value to Float type

@private

@param [Object] value @param [Hash] options @option options [boolean] :allow_nil cast `nil` to integer or float

@example Convert string to float value

ShallowAttributes::Type::Float.new.coerce('2001')
  # => 2001.0

@raise [InvalidValueError] if value is invalid

@return [Float]

@since 0.1.0

# File lib/shallow_attributes/type/float.rb, line 26
def coerce(value, options = {})
  case value
  when nil then options[:allow_nil] ? nil : 0.0
  when ::TrueClass then 1.0
  when ::FalseClass then 0.0
  else
    value.respond_to?(:to_f) ? value.to_f
      : raise(ShallowAttributes::Type::InvalidValueError, %(Invalid value "#{value}" for type "Float"))
  end
end