Class: Cane::EncodingAwareIterator

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/cane/encoding_aware_iterator.rb

Overview

Provides iteration over lines (from a file), correctly handling encoding.

Instance Method Summary collapse

Constructor Details

#initialize(lines) ⇒ EncodingAwareIterator

Returns a new instance of EncodingAwareIterator.



7
8
9
# File 'lib/cane/encoding_aware_iterator.rb', line 7

def initialize(lines)
  @lines = lines
end

Instance Method Details

#each(&block) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/cane/encoding_aware_iterator.rb', line 11

def each(&block)
  return self.to_enum unless block

  lines.each do |line|
    begin
      line =~ /\s/
    rescue ArgumentError
      line.encode!('UTF-8', 'binary', invalid: :replace, undef: :replace)
    end

    block.call(line)
  end
end