Class: StructuredReader::JSONReader::OneOfReader
- Inherits:
-
Object
- Object
- StructuredReader::JSONReader::OneOfReader
- Defined in:
- lib/structured_reader.rb
Defined Under Namespace
Classes: ReaderBuilder
Instance Method Summary collapse
-
#initialize(reader_set:, **_) {|ReaderBuilder.new(self, reader_set: reader_set)| ... } ⇒ OneOfReader
constructor
A new instance of OneOfReader.
- #option(reader) ⇒ Object
- #read(fragment, context) ⇒ Object
Constructor Details
#initialize(reader_set:, **_) {|ReaderBuilder.new(self, reader_set: reader_set)| ... } ⇒ OneOfReader
Returns a new instance of OneOfReader.
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 |