class Structured::List

Attributes

member_klass[R]

Private Class Methods

[](member_klass) click to toggle source
# File lib/structured/list.rb, line 11
def self.[](member_klass)
  new(member_klass)
end
new(member_klass) click to toggle source
# File lib/structured/list.rb, line 7
def initialize(member_klass)
  @member_klass = member_klass
end

Private Instance Methods

default_value() click to toggle source
# File lib/structured/list.rb, line 37
def default_value
  [].freeze
end
format_stack_frame_element(index) click to toggle source
# File lib/structured/list.rb, line 33
def format_stack_frame_element(index)
  "[#{index}]"
end
parse(parsed_yaml, stack:, context: nil) click to toggle source
# File lib/structured/list.rb, line 15
def parse(parsed_yaml, stack:, context: nil)
  unless parsed_yaml.is_a?(Array)
    raise Structured::Errors::InvalidValue.new(stack, "#{stack} expects an array")
  end

  errors = []
  result = parsed_yaml.map.with_index do |value, index|
    begin
      member_klass.parse(value, stack: stack.push(index, member_klass), context: context)
    rescue Structured::Errors::Base => exception
      errors << exception
    end
  end

  raise Structured::Errors::MultipleErrors.union(stack, errors) unless errors.empty?
  result
end
type_name() click to toggle source
# File lib/structured/list.rb, line 41
def type_name
  "List[#{member_klass.type_name}]"
end