Class: Openapi3Parser::Node::Array

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/openapi3_parser/node/array.rb

Overview

An array within a OpenAPI document. Very similar to a normal Ruby array, however this is read only and knows the context of where it sits in an OpenAPI document

The contents of the data will be dependent on where this document is in the document hierachy.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, context) ⇒ Array

Returns a new instance of Array.

Parameters:

  • data (::Array)

    data used to populate this node

  • context (Context)

    The context of this node in the document



22
23
24
25
# File 'lib/openapi3_parser/node/array.rb', line 22

def initialize(data, context)
  @node_data = data
  @node_context = context
end

Instance Attribute Details

#node_contextObject (readonly)

Returns the value of attribute node_context.



18
19
20
# File 'lib/openapi3_parser/node/array.rb', line 18

def node_context
  @node_context
end

#node_dataObject (readonly)

Returns the value of attribute node_data.



18
19
20
# File 'lib/openapi3_parser/node/array.rb', line 18

def node_data
  @node_data
end

Instance Method Details

#==(other) ⇒ Boolean

Parameters:

  • other (Any)

Returns:

  • (Boolean)


41
42
43
44
# File 'lib/openapi3_parser/node/array.rb', line 41

def ==(other)
  other.instance_of?(self.class) &&
    node_context.same_data_and_source?(other.node_context)
end

#[](index) ⇒ Object



27
28
29
# File 'lib/openapi3_parser/node/array.rb', line 27

def [](index)
  Placeholder.resolve(node_data[index])
end

#eachObject

Iterates through the data of this node, used by Enumerable

Returns:



34
35
36
# File 'lib/openapi3_parser/node/array.rb', line 34

def each(&)
  Placeholder.each(node_data, &)
end

#inspectString

Returns:

  • (String)


55
56
57
58
# File 'lib/openapi3_parser/node/array.rb', line 55

def inspect
  fragment = node_context.document_location.pointer.fragment
  %{#{self.class.name}(#{fragment})}
end

#node_at(pointer_like) ⇒ Object

Used to access a node relative to this node

Parameters:

Returns:

  • anything



49
50
51
52
# File 'lib/openapi3_parser/node/array.rb', line 49

def node_at(pointer_like)
  current_pointer = node_context.document_location.pointer
  node_context.document.node_at(pointer_like, current_pointer)
end