Class: StructuredReader::JSONReader::ArrayReader
- Inherits:
-
Object
- Object
- StructuredReader::JSONReader::ArrayReader
- Defined in:
- lib/structured_reader.rb
Direct Known Subclasses
Defined Under Namespace
Classes: ReaderBuilder
Instance Method Summary collapse
-
#initialize(of: nil, reader_set:, &blk) ⇒ ArrayReader
constructor
A new instance of ArrayReader.
- #member(reader) ⇒ Object
- #read(fragment, context) ⇒ Object
Constructor Details
#initialize(of: nil, reader_set:, &blk) ⇒ ArrayReader
Returns a new instance of ArrayReader.
116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/structured_reader.rb', line 116 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
128 129 130 |
# File 'lib/structured_reader.rb', line 128 def member(reader) @member_reader = reader end |
#read(fragment, context) ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/structured_reader.rb', line 132 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 |