Class: StructuredReader::JSONReader::ArrayReader

Inherits:
Object
  • Object
show all
Defined in:
lib/structured_reader.rb

Direct Known Subclasses

CollectionReader

Defined Under Namespace

Classes: ReaderBuilder

Instance Method Summary collapse

Constructor Details

#initialize(of: nil, reader_set:, &blk) ⇒ ArrayReader

Returns a new instance of ArrayReader.



122
123
124
125
126
127
128
129
130
131
132
# File 'lib/structured_reader.rb', line 122

def initialize(of: nil, reader_set:, &blk)
  if block_given?
    yield ReaderBuilder.new(self, reader_set: reader_set)
  elsif of
    ReaderBuilder.new(self, reader_set: reader_set).send(of)
  end

  unless @member_reader
    raise DeclarationError, "array must have a member type"
  end
end

Instance Method Details

#member(reader) ⇒ Object



134
135
136
# File 'lib/structured_reader.rb', line 134

def member(reader)
  @member_reader = reader
end

#read(fragment, context) ⇒ Object



138
139
140
141
142
143
144
145
146
147
148
# File 'lib/structured_reader.rb', line 138

def read(fragment, context)
  if fragment.kind_of?(Array)
    context.accept(fragment.map.with_index do |member, idx|
      context.push("[#{idx}]") do |sub_context|
        @member_reader.read(member, sub_context)
      end
    end)
  else
    context.flunk(fragment, "expected an Array")
  end
end