class TableSchema::Types::Date

Public Class Methods

supported_constraints() click to toggle source
# File lib/tableschema/types/date.rb, line 9
def self.supported_constraints
  [
    'required',
    'unique',
    'pattern',
    'enum',
    'minimum',
    'maximum',
  ]
end

Public Instance Methods

cast_any(value) click to toggle source
# File lib/tableschema/types/date.rb, line 33
def cast_any(value)
  return value if value.is_a?(type)

  date = ::Date._parse(value)
  if date.values.count == 3
    ::Date.parse(value)
  else
    raise TableSchema::InvalidDateType.new("#{value} is not a valid date")
  end
end
cast_default(value) click to toggle source
# File lib/tableschema/types/date.rb, line 28
def cast_default(value)
  @format_string = iso8601
  cast_fmt(value)
end
cast_fmt(value) click to toggle source
# File lib/tableschema/types/date.rb, line 44
def cast_fmt(value)
  return value if value.is_a?(type)

  begin
    return ::Date.strptime(value, @format_string)
  rescue ArgumentError
    raise TableSchema::InvalidDateType.new("#{value} is not a valid date")
  end
end
iso8601() click to toggle source
# File lib/tableschema/types/date.rb, line 24
def iso8601
  '%Y-%m-%d'
end
name() click to toggle source
# File lib/tableschema/types/date.rb, line 5
def name
  'date'
end
type() click to toggle source
# File lib/tableschema/types/date.rb, line 20
def type
  ::Date
end