class StructuredReader::JSONReader::ReaderSet

Constants

READERS

Public Class Methods

new() click to toggle source
# File lib/structured_reader.rb, line 427
def initialize
  @readers = READERS.dup
end

Public Instance Methods

add_reader(type, reader) click to toggle source
# File lib/structured_reader.rb, line 431
def add_reader(type, reader)
  @readers[type.to_sym] = reader
end
custom(type, &blk) click to toggle source
# File lib/structured_reader.rb, line 435
def custom(type, &blk)
  add_reader type, BuilderDeriver.new(CustomReader, &blk)
end
has_reader?(type) click to toggle source
# File lib/structured_reader.rb, line 456
def has_reader?(type)
  @readers.has_key?(type)
end
object(type, &blk) click to toggle source
# File lib/structured_reader.rb, line 439
def object(type, &blk)
  add_reader type, BuilderDeriver.new(ObjectReader, &blk)
end
reader(type, *args, **kwargs, &blk) click to toggle source
# 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