class Seria::DefaultConverter

Attributes

type[R]
value[R]

Public Class Methods

new(value, type) click to toggle source
# File lib/seria/converters.rb, line 4
def initialize(value, type)
  @value, @type = value, type
end

Public Instance Methods

conversions() click to toggle source
# File lib/seria/converters.rb, line 16
def conversions
  @conversions ||=
      {
          'Fixnum' => lambda { value.to_i },
          'BigDecimal' => lambda { value.to_d },
          'Float' => lambda { value.to_f },
          'NilClass' => nil,
          'FalseClass' => false,
          'TrueClass' => true,
          'String' => lambda { value.to_s },
          'Time' => lambda { Time.parse(value) },
          'DateTime' => lambda { DateTime.parse(value) },
          'Date' => lambda { Date.parse(value) },
          'ActiveSupport::TimeWithZone' => lambda { Time.zone.parse(value) }
      }
end
convert() click to toggle source
# File lib/seria/converters.rb, line 33
def convert
  if value.class.to_s != klass
    conversion = conversions[klass]
    if conversion.is_a?(Proc)
      conversion.call
    else
      conversion
    end
  else
    value
  end
end
klass() click to toggle source
# File lib/seria/converters.rb, line 8
def klass
  if type.present?
    type
  else
    value.class.to_s
  end
end
to_db() click to toggle source
# File lib/seria/converters.rb, line 46
def to_db
  value
end