class DataKit::Dataset::Field

Constants

Types

Attributes

key[RW]
name[RW]
type[RW]

Public Class Methods

convert(value, type) click to toggle source
# File lib/data_kit/dataset/field.rb, line 58
def convert(value, type)
  return nil if type == :null || value.nil?
  reformatted = Converters::Number.reformat(value)

  case type
  when :integer  then Converters::Integer.convert(reformatted)
  when :number   then Converters::Number.convert(reformatted)
  when :boolean  then Converters::Boolean.convert(value)
  when :datetime then Converters::DateTime.convert(value)
  else value.to_s
  end
end
is_type?(value, type) click to toggle source
# File lib/data_kit/dataset/field.rb, line 48
def is_type?(value, type)
  case type
  when :integer  then Converters::Integer.match?(Converters::Number.reformat(value))
  when :number   then Converters::Number.match?(Converters::Number.reformat(value))
  when :boolean  then Converters::Boolean.match?(value)
  when :datetime then Converters::DateTime.match?(value)
  when :string   then false
  end
end
new(name, options = {}) click to toggle source
# File lib/data_kit/dataset/field.rb, line 11
def initialize(name, options = {})
  @name = name
  @key = options[:key] || false
  @type = (options[:type] || :string).to_sym
end
type?(value, hint_type = nil) click to toggle source
# File lib/data_kit/dataset/field.rb, line 26
def type?(value, hint_type = nil)
  return :null if value.nil?

  if hint_type && is_type?(value, hint_type)
    return hint_type
  end

  reformatted = Converters::Number.reformat(value)

  if Converters::Integer.match?(reformatted)
    :integer
  elsif Converters::Number.match?(reformatted)
    :number
  elsif Converters::Boolean.match?(value)
    :boolean
  elsif Converters::DateTime.match?(value)
    :datetime
  else
    :string
  end
end

Public Instance Methods

key?() click to toggle source
# File lib/data_kit/dataset/field.rb, line 17
def key?
  key == true
end
to_hash() click to toggle source
# File lib/data_kit/dataset/field.rb, line 21
def to_hash
  { 'name' => name, 'type' => type.to_s, 'key' => key?}
end