Class: JSON::SchemaBuilder::Object

Inherits:
Entity
  • Object
show all
Defined in:
lib/json/schema_builder/object.rb

Instance Attribute Summary

Attributes inherited from Entity

#children, #error, #fragment, #fragments, #name, #options, #parent

Instance Method Summary collapse

Methods inherited from Entity

#add_fragment, #as_json, disable_attributes!, #extend, #initialize, #initialized?, #inspect, #merge_children!, #method_missing, #reset_fragment, #respond_to?, #schema

Methods included from Helpers

#empty_string, #id, #object_or_array

Methods included from Validation

#fully_validate, #validate, #validate!

Methods included from DSL

#entity

Constructor Details

This class inherits a constructor from JSON::SchemaBuilder::Entity

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class JSON::SchemaBuilder::Entity

Instance Method Details

#extract_typesObject



28
29
30
31
# File 'lib/json/schema_builder/object.rb', line 28

def extract_types
  initialize_children
  super
end

#initialize_childrenObject



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/json/schema_builder/object.rb', line 14

def initialize_children
  self.properties = { }

  children.select(&:name).each do |child|
    case child.name
    when Regexp
      self.pattern_properties ||= { }
      self.pattern_properties[child.name.source] = child.as_json
    else
      self.properties[child.name] = child.as_json
    end
  end
end

#reinitializeObject



33
34
35
36
# File 'lib/json/schema_builder/object.rb', line 33

def reinitialize
  return unless initialized?
  extract_types
end

#required(*values) ⇒ Object Also known as: required=



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/json/schema_builder/object.rb', line 38

def required(*values)
  case values
  when []
    @schema[:required]
  when [true]
    @parent.required ||= []
    @parent.required << @name
  else
    @schema[:required] = values.flatten
  end
end