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

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

Returns:

  • (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