Class: Json::Streamer::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/json/streamer/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(event_generator, options = {}) ⇒ Parser

Returns a new instance of Parser.



7
8
9
10
11
12
13
# 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

Instance Method Details

#<<(data) ⇒ Object



42
43
44
# File 'lib/json/streamer/parser.rb', line 42

def <<(data)
  @event_generator << data
end

#aggregatorObject



46
47
48
# File 'lib/json/streamer/parser.rb', line 46

def aggregator
  @aggregator.get
end

#get(conditions) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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