class Parqueteur::TypeResolver

Public Class Methods

register_type(type, klass) click to toggle source
# File lib/parqueteur/type_resolver.rb, line 32
def self.register_type(type, klass)
  registered_types[type] = klass
end
registered_types() click to toggle source
# File lib/parqueteur/type_resolver.rb, line 7
def self.registered_types
  @registered_types ||= {
    array: Parqueteur::Types::ArrayType,
    bigdecimal: Parqueteur::Types::Decimal256Type,
    bigint: Parqueteur::Types::Int64Type,
    boolean: Parqueteur::Types::BooleanType,
    date: Parqueteur::Types::Date32Type,
    date32: Parqueteur::Types::Date32Type,
    date64: Parqueteur::Types::Date64Type,
    decimal: Parqueteur::Types::Decimal128Type,
    decimal128: Parqueteur::Types::Decimal128Type,
    decimal256: Parqueteur::Types::Decimal256Type,
    int32: Parqueteur::Types::Int32Type,
    int64: Parqueteur::Types::Int64Type,
    integer: Parqueteur::Types::Int32Type,
    map: Parqueteur::Types::MapType,
    string: Parqueteur::Types::StringType,
    struct: Parqueteur::Types::StructType,
    time: Parqueteur::Types::Time32Type,
    time32: Parqueteur::Types::Time32Type,
    time64: Parqueteur::Types::Time64Type,
    timestamp: Parqueteur::Types::TimestampType
  }
end
resolve(*args, &block) click to toggle source
# File lib/parqueteur/type_resolver.rb, line 36
def self.resolve(*args, &block)
  instance.resolve(*args, &block)
end

Public Instance Methods

resolve(type, options = {}, &block) click to toggle source
# File lib/parqueteur/type_resolver.rb, line 40
def resolve(type, options = {}, &block)
  if type.is_a?(Symbol)
    resolve_from_symbol(type, options, &block)
  else
    type.new(options, &block)
  end
end

Private Instance Methods

resolve_from_symbol(type, options, &block) click to toggle source
# File lib/parqueteur/type_resolver.rb, line 50
def resolve_from_symbol(type, options, &block)
  type_klass = self.class.registered_types.fetch(type.to_sym, nil)
  raise Parqueteur::TypeNotFound, type if type_klass.nil?

  type_klass.new(options, &block)
end