Class: Babl::Schema::Object

Inherits:
Object
  • Object
show all
Defined in:
lib/babl/schema/object.rb

Defined Under Namespace

Classes: Property

Constant Summary collapse

EMPTY =
new(Utils::Array::EMPTY, false)
EMPTY_WITH_ADDITIONAL =
new(Utils::Array::EMPTY, true)

Instance Method Summary collapse

Constructor Details

#initialize(properties, additional) ⇒ Object

Returns a new instance of Object.



8
9
10
# File 'lib/babl/schema/object.rb', line 8

def initialize(properties, additional)
    super(properties.to_set.freeze, additional)
end

Instance Method Details

#jsonObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/babl/schema/object.rb', line 21

def json
    { type: 'object' }.tap { |out|
        next if property_set.empty?
        out[:properties] = property_set.map { |property| [property.name, property.value.json] }.to_h
        out[:additionalProperties] = additional
        required_properties = property_set.select(&:required)
        next if required_properties.empty?
        out[:required] = property_set.select(&:required).map(&:name).map(&:to_s)
    }
end