class Json::Streamer::Parser

Public Class Methods

new(event_generator, options = {}) click to toggle source
# File lib/json/streamer/parser.rb, line 7
def initialize(event_generator, options = {})
  @event_generator = event_generator
  @symbolize_keys = options[:symbolize_keys]

  @aggregator = Aggregator.new
  @event_consumer = Callbacks.new(@aggregator)
end

Public Instance Methods

<<(data) click to toggle source
# File lib/json/streamer/parser.rb, line 42
def <<(data)
  @event_generator << data
end
aggregator() click to toggle source
# File lib/json/streamer/parser.rb, line 46
def aggregator
  @aggregator.get
end
get(conditions) { |value| ... } click to toggle source
# File lib/json/streamer/parser.rb, line 15
def get(conditions)
  @event_generator.start_object { @event_consumer.start_object }
  @event_generator.start_array { @event_consumer.start_array }

  @event_generator.key do |k|
    @event_consumer.key(k, @symbolize_keys)
  end

  @event_generator.value do |v|
    @event_consumer.value(v) do |value|
      yield value if conditions.yield_value.call(aggregator: @aggregator, value: value)
    end
  end

  @event_generator.end_object do
    @event_consumer.end_object do |object|
      yield object if conditions.yield_object.call(aggregator: @aggregator, object: object)
    end
  end

  @event_generator.end_array do
    @event_consumer.end_array do |array|
      yield array if conditions.yield_array.call(aggregator: @aggregator, array: array)
    end
  end
end