Class: ALineEnding
- Inherits:
-
Object
- Object
- ALineEnding
- Defined in:
- lib/lili.rb
Overview
Parse, model, and print a line ending. Distinct from Ruby’s built-in Encoding class.
Instance Attribute Summary collapse
-
#filename ⇒ Object
Returns the value of attribute filename.
-
#final_eol ⇒ Object
Returns the value of attribute final_eol.
-
#line_ending ⇒ Object
Returns the value of attribute line_ending.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(filename, line_ending, final_eol) ⇒ ALineEnding
constructor
A new instance of ALineEnding.
- #to_s(line_ending_difference = false) ⇒ Object
- #violate?(rules) ⇒ Boolean
Constructor Details
#initialize(filename, line_ending, final_eol) ⇒ ALineEnding
Returns a new instance of ALineEnding.
81 82 83 84 85 |
# File 'lib/lili.rb', line 81 def initialize(filename, line_ending, final_eol) @filename = filename @line_ending = line_ending @final_eol = final_eol end |
Instance Attribute Details
#filename ⇒ Object
Returns the value of attribute filename.
75 76 77 |
# File 'lib/lili.rb', line 75 def filename @filename end |
#final_eol ⇒ Object
Returns the value of attribute final_eol.
75 76 77 |
# File 'lib/lili.rb', line 75 def final_eol @final_eol end |
#line_ending ⇒ Object
Returns the value of attribute line_ending.
75 76 77 |
# File 'lib/lili.rb', line 75 def line_ending @line_ending end |
Class Method Details
.parse(filename, report) ⇒ Object
77 78 79 |
# File 'lib/lili.rb', line 77 def self.parse(filename, report) ALineEnding.new(filename, report.line_ending.to_s, report.final_eol.to_s) end |
Instance Method Details
#to_s(line_ending_difference = false) ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/lili.rb', line 111 def to_s(line_ending_difference = false) if line_ending_difference observed = line_ending_difference[0] preferred = line_ending_difference[1].inspect if observed == NO_SUCH_FILE "#{@filename}: #{NO_SUCH_FILE}" else "#{@filename}: observed #{observed} preferred: #{preferred}" end else "#{@filename}: #{@line_ending}" end end |
#violate?(rules) ⇒ Boolean
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/lili.rb', line 87 def violate?(rules) preferred = rules.select do |rule| Dotsmack::fnmatch?(rule.first, @filename) end.first[1] preferred_line_ending = preferred[0] preferred_final_eol = preferred[1] if ! (@line_ending =~ preferred_line_ending) [@line_ending, preferred_line_ending] elsif ! (@final_eol =~ preferred_final_eol) [ if !final_eol 'with final eol' else 'without final eol' end, preferred_final_eol ] else false end end |