class Reflekt::MetaBuilder

Public Class Methods

create(value) click to toggle source

Create meta type for matching data type.

@logic

1. First return basic type
2. Then return custom type
3. Then return "nil" type

@param value [Dynamic] Any input or output.

# File lib/meta_builder.rb, line 25
def self.create(value)

  meta = nil
  data_type = value.class.to_s

  case data_type
  when "Array"
    meta = ArrayMeta.new()
  when "TrueClass", "FalseClass"
    meta = BooleanMeta.new()
  when "Float"
    meta = FloatMeta.new()
  when "Integer"
    meta = IntegerMeta.new()
  when "String"
    meta = StringMeta.new()
  else
    unless value.nil?
      meta = ObjectMeta.new()
    end
  end

  unless meta.nil?
    meta.load(value)
  end

  return meta

end
create_many(values) click to toggle source

Create meta for multiple values.

@param values

# File lib/meta_builder.rb, line 60
def self.create_many(values)

  meta = []

  values.each do |value|
    meta << self.create(value)
  end

  return meta

end
data_type_to_meta_type(value) click to toggle source

@param data_type [Type]

# File lib/meta_builder.rb, line 75
def self.data_type_to_meta_type(value)

  data_type = value.class

  meta_types = {
    Array      => :array,
    TrueClass  => :bool,
    FalseClass => :bool,
    Float      => :float,
    Integer    => :int,
    NilClass   => :null,
    String     => :string
  }

  if meta_types.key? data_type
    return meta_types[data_type]
  elsif value.nil?
    return nil
  else
    return :object
  end

end