Class: StructuredReader::JSONReader::OneOfReader

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

Defined Under Namespace

Classes: ReaderBuilder

Instance Method Summary collapse

Constructor Details

#initialize(reader_set:, **_) {|ReaderBuilder.new(self, reader_set: reader_set)| ... } ⇒ OneOfReader

Returns a new instance of OneOfReader.

Yields:



275
276
277
278
279
280
281
282
# File 'lib/structured_reader.rb', line 275

def initialize(reader_set:, **_)
  @readers = []
  yield ReaderBuilder.new(self, reader_set: reader_set)
  if @readers.empty?
    raise DeclarationError, "must define at least one option"
  end
  freeze
end

Instance Method Details

#option(reader) ⇒ Object



294
295
296
# File 'lib/structured_reader.rb', line 294

def option(reader)
  @readers << reader
end

#read(fragment, context) ⇒ Object



284
285
286
287
288
289
290
291
292
# File 'lib/structured_reader.rb', line 284

def read(fragment, context)
  @readers.each do |reader|
    if reader.read(fragment, ValidatorContext.new).empty?
      return context.accept(reader.read(fragment, context))
    end
  end

  context.flunk(fragment, "was not any of the expected options")
end