Class: ALineEnding

Inherits:
Object
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

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

#filenameObject

Returns the value of attribute filename.



75
76
77
# File 'lib/lili.rb', line 75

def filename
  @filename
end

#final_eolObject

Returns the value of attribute final_eol.



75
76
77
# File 'lib/lili.rb', line 75

def final_eol
  @final_eol
end

#line_endingObject

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

Returns:

  • (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