Class: EncodingChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/encoding_checker.rb,
lib/encoding_checker/version.rb

Overview

checker = EncodingChecker.new(“utf-8”) checker.check!(“some string with wrongxA0symbol”)

Defined Under Namespace

Classes: CharacterMatch, Error, LineMatch, Match

Constant Summary collapse

VERSION =
"0.0.4"

Instance Method Summary collapse

Constructor Details

#initialize(encoding) ⇒ EncodingChecker

Returns a new instance of EncodingChecker.



8
9
10
# File 'lib/encoding_checker.rb', line 8

def initialize(encoding)
  @encoding = encoding
end

Instance Method Details

#check(string) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/encoding_checker.rb', line 12

def check(string)
  string = string.dup
  string.force_encoding(@encoding)
  return Match.new(@encoding, []) if string.valid_encoding?
  errors = []
  string.each_line.with_index do |line, line_index|
    unless line.valid_encoding?
      line_errors = []
      line.each_char.with_index do |char, index|
        unless char.valid_encoding?
          line_errors << CharacterMatch.new(index, char)
        end
      end
      stripped_line = line.force_encoding('utf-8').strip rescue line
      errors << LineMatch.new(line_index, stripped_line, line_errors)
    end
  end
  Match.new(@encoding, errors)
end

#check!(string) ⇒ Object



32
33
34
35
36
# File 'lib/encoding_checker.rb', line 32

def check!(string)
  check(string).tap do |match|
    raise Error, match unless match.empty?
  end
end