Class: JsonModel::TypeSpec::Composition

Inherits:
JsonModel::TypeSpec show all
Defined in:
lib/json_model/type_spec/composition.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

Direct Known Subclasses

AllOf, AnyOf, OneOf

Defined Under Namespace

Classes: AllOf, AnyOf, OneOf

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from JsonModel::TypeSpec

#register_validations, resolve

Constructor Details

#initialize(modifier, *types, discriminator: nil) ⇒ Composition

Returns a new instance of Composition.

Parameters:

  • modifier (Symbol)
  • types (::Array<TypeSpec>)


10
11
12
13
14
15
# File 'lib/json_model/type_spec/composition.rb', line 10

def initialize(modifier, *types, discriminator: nil)
  super()
  @types = types
  @modifier = modifier
  @discriminator = discriminator
end

Instance Attribute Details

#discriminatorObject (readonly)

Returns the value of attribute discriminator.



6
7
8
# File 'lib/json_model/type_spec/composition.rb', line 6

def discriminator
  @discriminator
end

#modifierObject (readonly)

Returns the value of attribute modifier.



6
7
8
# File 'lib/json_model/type_spec/composition.rb', line 6

def modifier
  @modifier
end

#typesObject (readonly)

Returns the value of attribute types.



6
7
8
# File 'lib/json_model/type_spec/composition.rb', line 6

def types
  @types
end

Instance Method Details

#as_schema(**options) ⇒ Hash

Parameters:

  • options (Hash)

Returns:

  • (Hash)


19
20
21
22
23
# File 'lib/json_model/type_spec/composition.rb', line 19

def as_schema(**options)
  {
    modifier => types.map { |type| type.as_schema(**options) },
  }
end

#cast(json) ⇒ ::Object?

Parameters:

  • json (::Object)

Returns:

  • (::Object, nil)

Raises:

  • (NotImplementedError)


32
33
34
# File 'lib/json_model/type_spec/composition.rb', line 32

def cast(json)
  raise(NotImplementedError)
end

#referenced_schemasArray<TypeSpec>

Returns:



26
27
28
# File 'lib/json_model/type_spec/composition.rb', line 26

def referenced_schemas
  types.flat_map(&:referenced_schemas)
end