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, event_generator = :default) ⇒ JsonStreamer

Returns a new instance of JsonStreamer.



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

def initialize(file_io = nil, chunk_size = 1000, event_generator = :default)
  @event_generator = make_event_generator(event_generator)

  @file_io = file_io
  @chunk_size = chunk_size
end

Instance Attribute Details

#parserObject (readonly)

Returns the value of attribute parser.



8
9
10
# File 'lib/json/streamer/json_streamer.rb', line 8

def parser
  @parser
end

Instance Method Details

#<<(data) ⇒ Object



17
18
19
# File 'lib/json/streamer/json_streamer.rb', line 17

def <<(data)
  parser << data
end

#aggregatorObject



60
61
62
# File 'lib/json/streamer/json_streamer.rb', line 60

def aggregator
  parser.aggregator
end

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



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/json/streamer/json_streamer.rb', line 21

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

  @parser = Parser.new(@event_generator, symbolize_keys: symbolize_keys)
  unyielded_items = []

  parser.get(conditions) do |obj|
    if block_given?
      yield obj
    else
      unyielded_items.push(obj)
    end

    obj
  end

  process_io
  
  unyielded_items
end

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



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/json/streamer/json_streamer.rb', line 43

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

  parser.get(conditions) do |obj|
    if block_given?
      yield obj
    else
      unyielded_items.push(obj)
    end
  end

  process_io

  unyielded_items
end