lib/slim_lint/linter/control_statement_spacing.rb
# frozen_string_literal: true
module SlimLint
# Checks for missing or superfluous spacing before and after control statements.
class Linter::ControlStatementSpacing < Linter
include LinterRegistry
MESSAGE = 'Please add a space before and after the `=`'
on [:html, :tag, anything, [],
[:slim, :output, anything, capture(:ruby, anything)]] do |sexp|
# Fetch original Slim code that contains an element with a control statement.
line = document.source_lines[sexp.line - 1]
# Remove any Ruby code, because our regexp below must not match inside Ruby.
ruby = captures[:ruby]
line = line.sub(ruby, 'x')
next if line =~ /[^ ] ==?<?>? [^ ]/
report_lint(sexp, MESSAGE)
end
end
end