class TableSchema::Field

Attributes

constraints[R]

Public

format[R]

Public

name[R]

Public

required[R]

Public

type[R]

Public

Public Class Methods

new(descriptor, missing_values=nil) click to toggle source
# File lib/tableschema/field.rb, line 11
def initialize(descriptor, missing_values=nil)
  self.merge! deep_symbolize_keys(descriptor)
  @name = self[:name]
  @type = self[:type] = self.fetch(:type, TableSchema::DEFAULTS[:type])
  @format = self[:format] = self.fetch(:format, TableSchema::DEFAULTS[:format])
  @constraints = self[:constraints] = self.fetch(:constraints, {})
  @required = @constraints.fetch(:required, false)
  @missing_values = missing_values || default_missing_values
end

Public Instance Methods

cast_type(value) click to toggle source
# File lib/tableschema/field.rb, line 39
def cast_type(value)
  if is_null?(value)
    nil
  else
    type_class.new(self).cast(value)
  end
end
cast_value(value, constraints: true) click to toggle source
# File lib/tableschema/field.rb, line 25
def cast_value(value, constraints: true)
  cast_value = cast_type(value)
  return cast_value if constraints == false
  TableSchema::Constraints.new(self, cast_value).validate!
  cast_value
end
descriptor() click to toggle source
# File lib/tableschema/field.rb, line 21
def descriptor
  self.to_h
end
test_value(value, constraints: true) click to toggle source
# File lib/tableschema/field.rb, line 32
def test_value(value, constraints: true)
  cast_value(value, constraints: constraints)
  true
rescue TableSchema::Exception
  false
end

Private Instance Methods

default_missing_values() click to toggle source

Private

# File lib/tableschema/field.rb, line 51
def default_missing_values
  defaults = TableSchema::DEFAULTS[:missing_values]
  @type == 'string' ? defaults - [''] : defaults
end
is_null?(value) click to toggle source
# File lib/tableschema/field.rb, line 60
def is_null?(value)
  @missing_values.include?(value)
end
type_class() click to toggle source
# File lib/tableschema/field.rb, line 56
def type_class
  Object.const_get get_class_for_type(@type)
end