Class: Magritte::LineBuffer
- Inherits:
-
Object
- Object
- Magritte::LineBuffer
- Includes:
- Enumerable
- Defined in:
- lib/magritte/line_buffer.rb
Instance Attribute Summary collapse
-
#buffer ⇒ Object
readonly
Returns the value of attribute buffer.
Instance Method Summary collapse
- #each_line(&block) ⇒ Object (also: #each)
-
#initialize(record_separator = "\n") ⇒ LineBuffer
constructor
A new instance of LineBuffer.
- #write(data) ⇒ Object
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
#buffer ⇒ Object (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
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 |