Sha256: a4e897ee5ea1435d26c48ef872ac166554642ad9edbdd7d9f7dff9f72b53c12d
Contents?: true
Size: 1.03 KB
Versions: 1
Compression:
Stored size: 1.03 KB
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 DataCoercionError < StandardError; end class Coercer attr_reader :data, :index, :type, :formats def initialize(data:, index:, type: 'String', formats: {}) @data = data @index = index @type = type @formats = formats end def build target_coercer.coerce rescue StandardError => error unless allow_empty? raise DataCoercionError, "Error when coercing #{data} on line #{index}, raising: #{error.message}" end end def target_coercer Object.const_get("Estratto::Data::#{type}").new(data, formats) rescue NameError raise InvalidCoercionType, "Does not exists coercer class for #{type}" end def allow_empty? formats.dig(:allow_empty?) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
estratto-1.0.4 | lib/estratto/data/coercer.rb |