class ERBLint::Linters::DisallowComponentCssCounter

Counts the number of times a class reserved for ViewComponents is used

def format_message(class_name)

def format_message(class_name)
  "DisallowComponentCssCounter:HTML class \"#{class_name}\" is reserved for Primer ViewComponents. It might disappear or have different styles in the future. You might want to use #{ruby_classes_sentence_string(class_name)} from Primer ViewComponents instead."
end

def ruby_classes_sentence_string(class_name)

def ruby_classes_sentence_string(class_name)
  CLASSES[class_name].join(" / ")
end

def run(processed_source)

def run(processed_source)
  @total_offenses = 0
  @offenses_not_corrected = 0
  processed_source
    .parser
    .nodes_with_type(:tag)
    .each do |node|
      tag = BetterHtml::Tree::Tag.from_node(node)
      tag.attributes["class"]&.value&.split(/\s+/)&.each do |class_name|
        if CLASSES.key? class_name
          @total_offenses += 1
          @offenses_not_corrected += 1
          add_offense(
            processed_source.to_source_range(tag.loc),
            format_message(class_name)
          )
        end
      end
    end
  counter_correct?(processed_source)
  dump_data(processed_source) if ENV["DUMP_LINT_DATA"] == "1"
end