class Basil::Buffer

Public Class Methods

new(args={}) click to toggle source

Create a new buffer

# File lib/basil/buffer.rb, line 7
def initialize(args={})
  @buffer = Hash.new { |h, k| h[k] = Array.new }
  @buffer_max = args[:buffer_max] || 100_000
end

Public Instance Methods

[](k) click to toggle source
# File lib/basil/buffer.rb, line 32
def [](k)
  @buffer[k]
end
add_to(bucket, obj) click to toggle source

Add an object to the buffer

# File lib/basil/buffer.rb, line 15
def add_to(bucket, obj)

  @buffer[bucket] << obj

  if @buffer[bucket].length > @buffer_max
    # write out
    File.open(bucket, 'a+') do |out|
      @buffer[bucket].each do |v|
        out.puts v
      end
    end

    # clear that bucket
    @buffer[bucket].clear
  end
end
finalize() click to toggle source

Writes out leftover objects

# File lib/basil/buffer.rb, line 39
def finalize
  @buffer.each_key do |bucket|
    File.open(bucket, 'a+') do |out|
      @buffer[bucket].each do |v|
        out.puts v
      end
    end
  end
end