Class: Lederhosen::Buffer

Inherits:
Object
  • Object
show all
Defined in:
lib/lederhosen/buffer.rb

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Buffer

Create a new buffer



9
10
11
12
# File 'lib/lederhosen/buffer.rb', line 9

def initialize(args={})
  @buffer = Hash.new { |h, k| h[k] = Array.new }
  @buffer_max = args[:buffer_max] || 100_000
end

Instance Method Details

#[](k) ⇒ Object



34
35
36
# File 'lib/lederhosen/buffer.rb', line 34

def [] k
  @buffer[k]
end

#add_to(bucket, obj) ⇒ Object

Add an object to the buffer



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/lederhosen/buffer.rb', line 17

def add_to bucket, obj

  @buffer[bucket] << obj.to_s

  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

#finalizeObject

Writes out leftover objects



41
42
43
44
45
46
47
48
49
50
# File 'lib/lederhosen/buffer.rb', line 41

def finalize
  @buffer.each_key do |bucket|
    File.open(bucket, 'a+') do |out|
      @buffer[bucket].each do |v|
        out.puts v
      end
    end
  end
  @buffer = Hash.new { |h, k| h[k] = Array.new }
end