Sha256: e97f6dfe6f9a5e7e5bcf1c0dc71f9199195fef2456de3a4506d265754513f2ac

Contents?: true

Size: 648 Bytes

Versions: 3

Compression:

Stored size: 648 Bytes

Contents

require_relative 'integer'
require_relative 'float'
require_relative 'datetime'
require_relative 'date'
require_relative 'string'

module Estratto
  module Data
    class InvalidCoercionType < StandardError; end

    class Coercer
      attr_reader :data, :type, :formats

      def initialize(data:, type: 'String', formats: {})
        @data = data
        @type = type
        @formats = formats
      end

      def build
        target_coercer.coerce
      end

      def target_coercer
        Object.const_get("Estratto::Data::#{type}").new(data, formats)
      rescue NameError
        raise InvalidCoercionType
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
estratto-1.0.2 lib/estratto/data/coercer.rb
estratto-1.0.1 lib/estratto/data/coercer.rb
estratto-1.0.0 lib/estratto/data/coercer.rb