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