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