class ALineEnding

Parse, model, and print a line ending. Distinct from Ruby's built-in Encoding class.

Attributes

filename[RW]
final_eol[RW]
line_ending[RW]

Public Class Methods

new(filename, line_ending, final_eol) click to toggle source
# File lib/lili.rb, line 81
def initialize(filename, line_ending, final_eol)
  @filename = filename
  @line_ending = line_ending
  @final_eol = final_eol
end
parse(filename, report) click to toggle source
# 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

Public Instance Methods

to_s(line_ending_difference = false) click to toggle source
# 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) click to toggle source
# 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