lib/tailor/rulers/allow_trailing_line_spaces_ruler.rb
require_relative '../ruler'
class Tailor
module Rulers
class AllowTrailingLineSpacesRuler < Tailor::Ruler
def initialize(config, options)
super(config, options)
add_lexer_observers :ignored_nl, :nl
end
def ignored_nl_update(lexed_line, lineno, column)
log "Last event: #{lexed_line.last_non_line_feed_event}"
log "Line ends with space: #{lexed_line.ends_with_sp?}"
measure(lexed_line, lineno, column)
end
def nl_update(lexed_line, lineno, column)
ignored_nl_update(lexed_line, lineno, column)
end
# Checks to see if the line contains trailing spaces.
#
# @param [LexedLine] lexed_line The line to check for trailing spaces.
# @param [Fixnum] lineno Line the potential problem is on.
# @param [Fixnum] column Column the potential problem is on.
def measure(lexed_line, lineno, column)
if lexed_line.ends_with_sp?
actual = lexed_line.last_non_line_feed_event.last.size
problem_message = "Line has #{actual} trailing spaces."
@problems << Problem.new(problem_type, lineno, column,
problem_message, @options[:level])
end
end
end
end
end