Class: JSON::SchemaBuilder::Entity
- Inherits:
-
Object
- Object
- JSON::SchemaBuilder::Entity
- Includes:
- Attribute, DSL, Helpers, Validation
- Defined in:
- lib/json/schema_builder/entity.rb
Instance Attribute Summary collapse
-
#children ⇒ Object
Returns the value of attribute children.
-
#error ⇒ Object
Returns the value of attribute error.
-
#fragment ⇒ Object
Returns the value of attribute fragment.
-
#fragments ⇒ Object
Returns the value of attribute fragments.
-
#name ⇒ Object
Returns the value of attribute name.
-
#options ⇒ Object
Returns the value of attribute options.
-
#parent ⇒ Object
Returns the value of attribute parent.
Class Method Summary collapse
Instance Method Summary collapse
- #add_fragment(child) ⇒ Object
- #as_json ⇒ Object
-
#initialize(name, opts = { }, &block) ⇒ Entity
constructor
A new instance of Entity.
- #inspect ⇒ Object
- #merge_children! ⇒ Object
- #method_missing(method_name, *args, &block) ⇒ Object
- #required ⇒ Object
- #required=(*values) ⇒ Object
- #reset_fragment ⇒ Object
- #respond_to?(method_name, include_all = false) ⇒ Boolean
- #schema ⇒ Object
Methods included from Helpers
#empty_string, #id, #object_or_array
Methods included from Validation
#fully_validate, #validate, #validate!
Methods included from DSL
Constructor Details
#initialize(name, opts = { }, &block) ⇒ Entity
Returns a new instance of Entity.
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/json/schema_builder/entity.rb', line 37 def initialize(name, opts = { }, &block) @name = name @children = [] @fragments = Hash.new { |hash, key| hash[key] = ::Array.new } @fragments["#/"] << self if opts[:root] self.type = self.class.registered_type initialize_parent_with opts initialize_with opts eval_block &block extract_types end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
96 97 98 99 100 101 102 |
# File 'lib/json/schema_builder/entity.rb', line 96 def method_missing(method_name, *args, &block) if @parent_context && respond_to?(method_name, true) @parent_context.send method_name, *args, &block else super end end |
Instance Attribute Details
#children ⇒ Object
Returns the value of attribute children.
15 16 17 |
# File 'lib/json/schema_builder/entity.rb', line 15 def children @children end |
#error ⇒ Object
Returns the value of attribute error.
15 16 17 |
# File 'lib/json/schema_builder/entity.rb', line 15 def error @error end |
#fragment ⇒ Object
Returns the value of attribute fragment.
15 16 17 |
# File 'lib/json/schema_builder/entity.rb', line 15 def fragment @fragment end |
#fragments ⇒ Object
Returns the value of attribute fragments.
15 16 17 |
# File 'lib/json/schema_builder/entity.rb', line 15 def fragments @fragments end |
#name ⇒ Object
Returns the value of attribute name.
15 16 17 |
# File 'lib/json/schema_builder/entity.rb', line 15 def name @name end |
#options ⇒ Object
Returns the value of attribute options.
15 16 17 |
# File 'lib/json/schema_builder/entity.rb', line 15 def @options end |
#parent ⇒ Object
Returns the value of attribute parent.
15 16 17 |
# File 'lib/json/schema_builder/entity.rb', line 15 def parent @parent end |
Class Method Details
.disable_attributes!(*attributes) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/json/schema_builder/entity.rb', line 30 def self.disable_attributes!(*attributes) attributes.each do |attr| undef_method attr rescue NameError undef_method "#{attr}=" rescue NameError end end |
Instance Method Details
#add_fragment(child) ⇒ Object
49 50 51 52 |
# File 'lib/json/schema_builder/entity.rb', line 49 def add_fragment(child) @fragments[child.fragment] << child parent.add_fragment(child) if @parent end |
#as_json ⇒ Object
80 81 82 |
# File 'lib/json/schema_builder/entity.rb', line 80 def as_json schema.as_json end |
#inspect ⇒ Object
84 85 86 |
# File 'lib/json/schema_builder/entity.rb', line 84 def inspect "#<#{self.class.name}:#{object_id} @schema=#{schema.as_json}>" end |
#merge_children! ⇒ Object
73 74 75 76 77 78 |
# File 'lib/json/schema_builder/entity.rb', line 73 def merge_children! return if any_of.present? children.each do |child| schema.merge! child.schema end end |
#required ⇒ Object
64 65 66 |
# File 'lib/json/schema_builder/entity.rb', line 64 def required schema["required"] || [] end |
#required=(*values) ⇒ Object
68 69 70 71 |
# File 'lib/json/schema_builder/entity.rb', line 68 def required=(*values) @parent.schema["required"] ||= [] @parent.schema["required"] << @name end |
#reset_fragment ⇒ Object
54 55 56 57 58 |
# File 'lib/json/schema_builder/entity.rb', line 54 def reset_fragment @fragment = [@parent.fragment, name].compact.join("/").gsub(%r(//), "/") root._reset_fragments root.fragments["#/"] << root end |
#respond_to?(method_name, include_all = false) ⇒ Boolean
88 89 90 91 92 93 94 |
# File 'lib/json/schema_builder/entity.rb', line 88 def respond_to?(method_name, include_all = false) if @parent_context @parent_context.respond_to? method_name, include_all else super end end |