lib/haml_lint/linter/unnecessary_interpolation.rb
# frozen_string_literal: true module HamlLint # Checks for unnecessary uses of string interpolation. # # For example, the following two code snippets are equivalent, but the latter # is more concise (and thus preferred): # # %tag #{expression} # %tag= expression class Linter::UnnecessaryInterpolation < Linter include LinterRegistry def visit_tag(node) return if node.script.length <= 2 count = 0 chars = 2 # Include surrounding quote chars HamlLint::Utils.extract_interpolated_values(node.script) do |interpolated_code, _line| count += 1 return if count > 1 # rubocop:disable Lint/NonLocalExitFromIterator chars += interpolated_code.length + 3 end if chars == node.script.length record_lint(node, '`%... \#{expression}` can be written without ' \ 'interpolation as `%...= expression`') end end end end