# frozen_string_literal: true module SlimLint # Searches for more than an allowed number of consecutive control code # statements that could be condensed into a :ruby filter. class Linter::ConsecutiveControlStatements < Linter include LinterRegistry on [:multi] do |sexp| max = config["max_consecutive"] + 1 Utils.for_consecutive_items(sexp, method(:flat_control_statement?), max) do |group| report_lint( group.first, "#{group.count} consecutive control statements can be " \ "merged into a single `ruby:` filter" ) end end private def flat_control_statement?(sexp) sexp.match?([:slim, :control]) && sexp[3] == [:multi] end end end