Class: AnEncoding
- Inherits:
-
Object
- Object
- AnEncoding
- Defined in:
- lib/enlint.rb
Overview
Parse, model, and print an encoding. Distinct from Ruby’s built-in Encoding class.
Instance Attribute Summary collapse
-
#empty ⇒ Object
Returns the value of attribute empty.
-
#encoding ⇒ Object
Returns the value of attribute encoding.
-
#filename ⇒ Object
Returns the value of attribute filename.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(filename, empty, encoding) ⇒ AnEncoding
constructor
A new instance of AnEncoding.
- #to_s(encoding_difference = false) ⇒ Object
- #violate?(rules) ⇒ Boolean
Constructor Details
#initialize(filename, empty, encoding) ⇒ AnEncoding
Returns a new instance of AnEncoding.
110 111 112 113 114 |
# File 'lib/enlint.rb', line 110 def initialize(filename, empty, encoding) @filename = filename @empty = empty @encoding = encoding end |
Instance Attribute Details
#empty ⇒ Object
Returns the value of attribute empty.
95 96 97 |
# File 'lib/enlint.rb', line 95 def empty @empty end |
#encoding ⇒ Object
Returns the value of attribute encoding.
95 96 97 |
# File 'lib/enlint.rb', line 95 def encoding @encoding end |
#filename ⇒ Object
Returns the value of attribute filename.
95 96 97 |
# File 'lib/enlint.rb', line 95 def filename @filename end |
Class Method Details
.parse(filename, file_line) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 |
# 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 |
Instance Method Details
#to_s(encoding_difference = false) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# 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) ⇒ Boolean
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# 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 |