module MyData::TypeCaster

Constants

ALLOWED_TYPES

Public Instance Methods

cast(value:, type:, resource: nil) click to toggle source
# File lib/my_data/type_caster.rb, line 21
def cast(value:, type:, resource: nil)
  return type_cast_resource(value, resource) if type == :resource

  send("type_cast_#{type}", value)
end
valid_type?(type) click to toggle source
# File lib/my_data/type_caster.rb, line 17
def valid_type?(type)
  ALLOWED_TYPES.include?(type)
end

Private Instance Methods

type_cast_boolean(value) click to toggle source
# File lib/my_data/type_caster.rb, line 49
def type_cast_boolean(value)
  return value if value.nil?

  value.is_a?(String) ? value.downcase == "true" : value == true
end
type_cast_date(value) click to toggle source
# File lib/my_data/type_caster.rb, line 41
def type_cast_date(value)
  value.present? ? value.to_date : nil
end
type_cast_float(value) click to toggle source
# File lib/my_data/type_caster.rb, line 37
def type_cast_float(value)
  value.present? ? value.to_f : nil
end
type_cast_integer(value) click to toggle source
# File lib/my_data/type_caster.rb, line 33
def type_cast_integer(value)
  value.present? ? value.to_i : nil
end
type_cast_resource(value, resource) click to toggle source
# File lib/my_data/type_caster.rb, line 55
def type_cast_resource(value, resource)
  value.present? ? resource.new(value) : nil
end
type_cast_string(value) click to toggle source
# File lib/my_data/type_caster.rb, line 29
def type_cast_string(value)
  value ? value.to_s.strip : nil
end
type_cast_time(value) click to toggle source
# File lib/my_data/type_caster.rb, line 45
def type_cast_time(value)
  value.present? ? value.to_time : nil
end