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
404 405 406 |
# File 'lib/structured_reader.rb', line 404 def initialize @readers = READERS.dup end |
Instance Method Details
#add_reader(type, reader) ⇒ Object
408 409 410 |
# File 'lib/structured_reader.rb', line 408 def add_reader(type, reader) @readers[type.to_sym] = reader end |
#custom(type, &blk) ⇒ Object
412 413 414 |
# File 'lib/structured_reader.rb', line 412 def custom(type, &blk) add_reader type, BuilderDeriver.new(CustomReader, &blk) end |
#has_reader?(type) ⇒ Boolean
433 434 435 |
# File 'lib/structured_reader.rb', line 433 def has_reader?(type) @readers.has_key?(type) end |
#object(type, &blk) ⇒ Object
416 417 418 |
# File 'lib/structured_reader.rb', line 416 def object(type, &blk) add_reader type, BuilderDeriver.new(ObjectReader, &blk) end |
#reader(type, *args, **kwargs, &blk) ⇒ Object
420 421 422 423 424 425 426 427 428 429 430 431 |
# File 'lib/structured_reader.rb', line 420 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 |