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:



281
282
283
284
285
286
287
288
# 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

Instance Method Details

#option(reader) ⇒ Object



303
304
305
# File 'lib/structured_reader.rb', line 303

def option(reader)
  @readers << reader
end

#read(fragment, context) ⇒ Object



290
291
292
293
294
295
296
297
298
299
300
301
# 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