lib/haml_lint/linter/multiline_pipe.rb
# frozen_string_literal: true module HamlLint # Checks for uses of the multiline pipe character. class Linter::MultilinePipe < Linter include LinterRegistry MESSAGE = "Don't use the `|` character to split up lines. " \ 'Wrap on commas or extract code into helper.' def visit_tag(node) check(node) end def visit_script(node) check(node) end def visit_silent_script(node) check(node) end def visit_plain(node) line = line_text_for_node(node) # Plain text nodes are allowed to consist of a single pipe return if line.strip == '|' record_lint(node, MESSAGE) if line.match(MULTILINE_PIPE_REGEX) end private MULTILINE_PIPE_REGEX = /\s+\|\s*$/ def line_text_for_node(node) document.source_lines[node.line - 1] end def check(node) line = line_text_for_node(node) record_lint(node, MESSAGE) if line.match(MULTILINE_PIPE_REGEX) end end end