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