Class: Magritte::LineBuffer

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/magritte/line_buffer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(record_separator = "\n") ⇒ LineBuffer

Returns a new instance of LineBuffer.



7
8
9
10
# File 'lib/magritte/line_buffer.rb', line 7

def initialize(record_separator="\n")
  @buffer = ""
  @record_separator = record_separator
end

Instance Attribute Details

#bufferObject (readonly)

Returns the value of attribute buffer.



5
6
7
# File 'lib/magritte/line_buffer.rb', line 5

def buffer
  @buffer
end

Instance Method Details

#each_line(&block) ⇒ Object Also known as: each

Raises:

  • (ArgumentError)


21
22
23
24
25
26
27
28
# File 'lib/magritte/line_buffer.rb', line 21

def each_line(&block)
  raise ArgumentError.new("No block passed to each_line!") unless block_given?
  return if buffer.empty?

  lines = @buffer.split(@record_separator)
  lines.each(&block)
  @buffer = ""
end

#write(data) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/magritte/line_buffer.rb', line 12

def write(data)
  last_eol = data.rindex(@record_separator)
  return 0 unless last_eol

  data = data[0..(last_eol + @record_separator.size - 1)]
  @buffer += data
  data.size
end