class SugarCane::EncodingAwareIterator

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

Attributes

lines[R]

Public Class Methods

new(lines) click to toggle source
# File lib/sugarcane/encoding_aware_iterator.rb, line 7
def initialize(lines)
  @lines = lines
end

Public Instance Methods

each(&block) click to toggle source
# File lib/sugarcane/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