Class: StructuredReader::JSONReader::ReaderSet
- Inherits:
-
Object
- Object
- StructuredReader::JSONReader::ReaderSet
- Defined in:
- lib/structured_reader.rb
Constant Summary collapse
- READERS =
{ array: ArrayReader, collection: CollectionReader, string: StringReader, time: TimeReader, object: ObjectReader, number: NumberReader, one_of: OneOfReader, null: NullReader, raw: RawReader, literal: LiteralReader, custom: CustomReader, }
Instance Method Summary collapse
- #add_reader(type, reader) ⇒ Object
- #custom(type, &blk) ⇒ Object
- #has_reader?(type) ⇒ Boolean
-
#initialize ⇒ ReaderSet
constructor
A new instance of ReaderSet.
- #object(type, &blk) ⇒ Object
- #reader(type, *args, **kwargs, &blk) ⇒ Object
Constructor Details
#initialize ⇒ ReaderSet
Returns a new instance of ReaderSet.
427 428 429 |
# File 'lib/structured_reader.rb', line 427 def initialize @readers = READERS.dup end |
Instance Method Details
#add_reader(type, reader) ⇒ Object
431 432 433 |
# File 'lib/structured_reader.rb', line 431 def add_reader(type, reader) @readers[type.to_sym] = reader end |
#custom(type, &blk) ⇒ Object
435 436 437 |
# File 'lib/structured_reader.rb', line 435 def custom(type, &blk) add_reader type, BuilderDeriver.new(CustomReader, &blk) end |
#has_reader?(type) ⇒ Boolean
456 457 458 |
# File 'lib/structured_reader.rb', line 456 def has_reader?(type) @readers.has_key?(type) end |
#object(type, &blk) ⇒ Object
439 440 441 |
# File 'lib/structured_reader.rb', line 439 def object(type, &blk) add_reader type, BuilderDeriver.new(ObjectReader, &blk) end |
#reader(type, *args, **kwargs, &blk) ⇒ Object
443 444 445 446 447 448 449 450 451 452 453 454 |
# File 'lib/structured_reader.rb', line 443 def reader(type, *args, **kwargs, &blk) if kwargs[:nullable] kwargs = kwargs.dup kwargs.delete :nullable OneOfReader.new(reader_set: self) do |o| o.null o.send(type, *args, **kwargs, &blk) end else @readers.fetch(type).new(*args, reader_set: self, **kwargs, &blk) end end |