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