class Json::Streamer::JsonStreamer
Attributes
parser[R]
Public Class Methods
new(file_io = nil, chunk_size = 1000, event_generator = :default)
click to toggle source
# 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
Public Instance Methods
<<(data)
click to toggle source
# File lib/json/streamer/json_streamer.rb, line 17 def <<(data) parser << data end
aggregator()
click to toggle source
# 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) { |obj| ... }
click to toggle source
# 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 = {}) { |obj| ... }
click to toggle source
# 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
Private Instance Methods
make_event_generator(generator)
click to toggle source
# File lib/json/streamer/json_streamer.rb, line 70 def make_event_generator(generator) case generator when :default require 'json/stream' JSON::Stream::Parser.new else generator end end
process_io()
click to toggle source
# File lib/json/streamer/json_streamer.rb, line 66 def process_io @file_io.each(@chunk_size) { |chunk| parser << chunk } if @file_io end