class AnEncoding

Parse, model, and print an encoding. Distinct from Ruby’s built-in Encoding class.

Attributes

empty[RW]
encoding[RW]
filename[RW]

Public Class Methods

new(filename, empty, encoding) click to toggle source
# File lib/enlint.rb, line 110
def initialize(filename, empty, encoding)
  @filename = filename
  @empty = empty
  @encoding = encoding
end
parse(filename, file_line) click to toggle source
# File lib/enlint.rb, line 97
def self.parse(filename, file_line)
  if file_line =~ DNE
    AnEncoding.new(filename, false, NO_SUCH_FILE)
  else
    match = file_line.match(PARSER)

    empty = match[1] == 'inode/x-empty' || match[2] == 'binary'
    encoding = match[2]

    AnEncoding.new(filename, empty, encoding)
  end
end

Public Instance Methods

to_s(encoding_difference = false) click to toggle source
# File lib/enlint.rb, line 133
def to_s(encoding_difference = false)
  if encoding_difference
    observed = encoding_difference[0]
    preferred = encoding_difference[1].inspect

    if observed == NO_SUCH_FILE
      "#{@filename}: #{NO_SUCH_FILE}"
    else
      "#{@filename}: observed #{observed} preferred: #{preferred}"
    end
  else
    "#{@filename}: #{@encoding}"
  end
end
violate?(rules) click to toggle source
# File lib/enlint.rb, line 116
def violate?(rules)
  # Ignore empty files, which are considered binary.
  if @empty
    false
  else
    preferred = rules.select do |rule|
      Dotsmack::fnmatch?(rule.first, filename)
    end.first[1]

    if ! (encoding =~ preferred)
      [encoding, preferred]
    else
      false
    end
  end
end