Sha256: 4a1ee6bdc1c08ace26b8594e699202bd037ae0f3c996869d1c09fb39303e7508

Contents?: true

Size: 668 Bytes

Versions: 1

Compression:

Stored size: 668 Bytes

Contents

# frozen_string_literal: true

require_relative "types/string"
require_relative "types/integer"
require_relative "types/float"
require_relative "types/boolean"
require_relative "types/time"

module Attribeauty
  # base cast for types
  class Cast
    BASE_TYPES = {
      float: Types::Float,
      integer: Types::Integer,
      boolean: Types::Boolean,
      time: Types::Time,
      string: Types::String
    }.freeze

    def self.cast(value, type)
      return nil if value.nil?

      all_types = Attribeauty.configuration.types

      raise ArgumentError, "#{type} not supported" if all_types[type].nil?

      all_types[type].new.cast(value)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
attribeauty-0.1.0 lib/attribeauty/cast.rb