Class: JsonModel::TypeSpec
- Inherits:
-
Object
- Object
- JsonModel::TypeSpec
show all
- Defined in:
- lib/json_model/type_spec.rb,
lib/json_model/type_spec/enum.rb,
lib/json_model/type_spec/array.rb,
lib/json_model/type_spec/const.rb,
lib/json_model/type_spec/object.rb,
lib/json_model/type_spec/castable.rb,
lib/json_model/type_spec/primitive.rb,
lib/json_model/type_spec/composition.rb,
lib/json_model/type_spec/primitive/null.rb,
lib/json_model/type_spec/primitive/number.rb,
lib/json_model/type_spec/primitive/string.rb,
lib/json_model/type_spec/primitive/boolean.rb,
lib/json_model/type_spec/primitive/integer.rb,
lib/json_model/type_spec/primitive/numeric.rb,
lib/json_model/type_spec/composition/all_of.rb,
lib/json_model/type_spec/composition/any_of.rb,
lib/json_model/type_spec/composition/one_of.rb
Defined Under Namespace
Classes: Array, Castable, Composition, Const, Enum, Object, Primitive
Constant Summary
collapse
- TYPE_MAP =
{
Date => Castable.new(format: 'date') { |v| ::DateTime.iso8601(v) },
DateTime => Castable.new(format: 'date-time') { |v| ::DateTime.iso8601(v) },
FalseClass => Primitive::Boolean.new,
Float => Primitive::Number.new,
Integer => Primitive::Integer.new,
NilClass => Primitive::Null.new,
Regexp => Castable.new(format: 'regex') { |v| Regexp.new(v) },
String => Primitive::String.new,
Time => Castable.new(format: 'time') { |v| ::Time.iso8601(v) },
TrueClass => Primitive::Boolean.new,
URI => Castable.new(format: 'uri') { |v| URI.parse(v) },
}.freeze
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.resolve(type) ⇒ TypeSpec
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/json_model/type_spec.rb', line 51
def resolve(type)
if type.is_a?(TypeSpec)
return type
end
if TYPE_MAP.key?(type)
TYPE_MAP[type]
elsif type.respond_to?(:to_type_spec)
type.to_type_spec
elsif type.is_a?(Class) && type < Schema
TypeSpec::Object.new(type)
else
raise(ArgumentError, "Unsupported type: #{type}")
end
end
|
Instance Method Details
#as_schema(**options) ⇒ Hash
29
30
31
|
# File 'lib/json_model/type_spec.rb', line 29
def as_schema(**options)
raise(NotImplementedError)
end
|
#cast(json) ⇒ ::Object?
44
45
46
|
# File 'lib/json_model/type_spec.rb', line 44
def cast(json)
json
end
|
38
39
40
|
# File 'lib/json_model/type_spec.rb', line 38
def referenced_schemas
[]
end
|
#register_validations(name, klass) ⇒ Object
35
|
# File 'lib/json_model/type_spec.rb', line 35
def register_validations(name, klass) end
|