class JsonTableSchema::Types::DateTime

Public Class Methods

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

Public Instance Methods

cast_any(value) click to toggle source
# File lib/jsontableschema/types/datetime.rb, line 36
def cast_any(value)
  return value if value.is_a?(type)

  begin
    date = ::DateTime._parse(value)
    if date.values.count >= 4
      ::DateTime.parse(value)
    else
      raise JsonTableSchema::InvalidDateTimeType.new("#{value} is not a valid datetime")
    end
  rescue ArgumentError
    raise JsonTableSchema::InvalidDateTimeType.new("#{value} is not a valid datetime")
  end
end
cast_default(value) click to toggle source

raw_formats = ['DD/MM/YYYYThh/mm/ss'] py_formats = ['%Y/%m/%dT%H:%M:%S'] format_map = dict(zip(raw_formats, py_formats))

# File lib/jsontableschema/types/datetime.rb, line 31
def cast_default(value)
  @format_string = iso8601
  cast_fmt(value)
end
cast_fmt(value) click to toggle source
# File lib/jsontableschema/types/datetime.rb, line 51
def cast_fmt(value)
  return value if value.is_a?(type)

  begin
    return ::DateTime.strptime(value, @format_string)
  rescue ArgumentError
    raise JsonTableSchema::InvalidDateTimeType.new("#{value} is not a valid date")
  end
end
iso8601() click to toggle source
# File lib/jsontableschema/types/datetime.rb, line 23
def iso8601
  '%Y-%m-%dT%H:%M:%SZ'
end
name() click to toggle source
# File lib/jsontableschema/types/datetime.rb, line 5
def name
  'datetime'
end
type() click to toggle source
# File lib/jsontableschema/types/datetime.rb, line 19
def type
  ::DateTime
end