class Openapi3Parser::NodeFactory::Array

Attributes

context[R]
data[R]
default[R]
use_default_on_empty[R]
validation[R]
value_factory[R]
value_input_type[R]

Public Class Methods

new( context, default: [], use_default_on_empty: false, value_input_type: nil, value_factory: nil, validate: nil ) click to toggle source

rubocop:disable Metrics/ParameterLists

# File lib/openapi3_parser/node_factory/array.rb, line 10
def initialize(
  context,
  default: [],
  use_default_on_empty: false,
  value_input_type: nil,
  value_factory: nil,
  validate: nil
)
  @context = context
  @default = default
  @use_default_on_empty = use_default_on_empty
  @value_input_type = value_input_type
  @value_factory = value_factory
  @validation = validate
  @data = build_data(context.input)
end

Public Instance Methods

errors() click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 44
def errors
  @errors ||= ValidNodeBuilder.errors(self)
end
inspect() click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 53
def inspect
  %{#{self.class.name}(#{context.source_location.inspect})}
end
nil_input?() click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 36
def nil_input?
  context.input.nil?
end
node(node_context) click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 48
def node(node_context)
  data = ValidNodeBuilder.data(self, node_context)
  data.nil? ? nil : build_node(data, node_context)
end
raw_input() click to toggle source

rubocop:enable Metrics/ParameterLists

# File lib/openapi3_parser/node_factory/array.rb, line 28
def raw_input
  context.input
end
resolved_input() click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 32
def resolved_input
  @resolved_input ||= build_resolved_input
end
use_default?() click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 57
def use_default?
  return true if nil_input? || !raw_input.is_a?(::Array)
  return false unless use_default_on_empty

  raw_input.empty?
end
valid?() click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 40
def valid?
  errors.empty?
end

Private Instance Methods

build_data(raw_input) click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 66
def build_data(raw_input)
  return if use_default? && default.nil?

  process_data(use_default? ? default : raw_input)
end
build_node(data, node_context) click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 90
def build_node(data, node_context)
  Node::Array.new(data, node_context) if data
end
build_resolved_input() click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 94
def build_resolved_input
  return unless data

  data.map do |value|
    value.respond_to?(:resolved_input) ? value.resolved_input : value
  end
end
initialize_value_factory(field_context) click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 82
def initialize_value_factory(field_context)
  if value_factory.is_a?(Class)
    value_factory.new(field_context)
  else
    value_factory.call(field_context)
  end
end
process_data(data) click to toggle source
# File lib/openapi3_parser/node_factory/array.rb, line 72
def process_data(data)
  data.each_with_index.map do |value, i|
    if value_factory
      initialize_value_factory(Context.next_field(context, i, value))
    else
      value
    end
  end
end