Class: Json::Streamer::JsonStreamer

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file_io = nil, chunk_size = 1000) ⇒ JsonStreamer

Returns a new instance of JsonStreamer.



12
13
14
15
16
17
# File 'lib/json/streamer/json_streamer.rb', line 12

def initialize(file_io = nil, chunk_size = 1000)
  @event_generator = JSON::Stream::Parser.new

  @file_io = file_io
  @chunk_size = chunk_size
end

Instance Attribute Details

#parserObject (readonly)

Returns the value of attribute parser.



10
11
12
# File 'lib/json/streamer/json_streamer.rb', line 10

def parser
  @parser
end

Instance Method Details

#<<(data) ⇒ Object



19
20
21
# File 'lib/json/streamer/json_streamer.rb', line 19

def <<(data)
  parser << data
end

#aggregatorObject



47
48
49
# File 'lib/json/streamer/json_streamer.rb', line 47

def aggregator
  parser.aggregator
end

#get(nesting_level: -1,, key: nil, yield_values: true, symbolize_keys: false) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/json/streamer/json_streamer.rb', line 23

def get(nesting_level: -1, key: nil, yield_values: true, symbolize_keys: false)
  conditions = Conditions.new(yield_level: nesting_level, yield_key: key)
  conditions.yield_value = ->(aggregator:, value:) { false } unless yield_values

  # TODO: deprecate symbolize_keys and move to initialize
  @parser = Parser.new(@event_generator, symbolize_keys: symbolize_keys)

  parser.get(conditions) do |obj|
    yield obj
  end

  process_io
end

#get_with_conditions(conditions, options = {}) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/json/streamer/json_streamer.rb', line 37

def get_with_conditions(conditions, options = {})
  @parser = Parser.new(@event_generator, symbolize_keys: options[:symbolize_keys])

  parser.get(conditions) do |obj|
    yield obj
  end

  process_io
end