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