class StructuredReader::JSONReader::OneOfReader

Public Class Methods

new(reader_set:, **_) { |reader_builder(self, reader_set: reader_set)| ... } click to toggle source
# File lib/structured_reader.rb, line 281
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

Public Instance Methods

option(reader) click to toggle source
# File lib/structured_reader.rb, line 303
def option(reader)
  @readers << reader
end
read(fragment, context) click to toggle source
# File lib/structured_reader.rb, line 290
def read(fragment, context)
  @readers.each do |reader|
    result = ValidatorContext.new.open do |context|
      reader.read(fragment, context)
    end
    if result.ok?
      return context.accept(result.object)
    end
  end

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