Class: StructuredReader::JSONReader::ReaderSet

Inherits:
Object
  • Object
show all
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

Constructor Details

#initializeReaderSet



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