class ERBLint::Linters::DeprecatedClasses
Checks for deprecated classes in the start tags of HTML elements.
Public Class Methods
new(file_loader, config)
click to toggle source
Calls superclass method
ERBLint::Linter::new
# File lib/erb_lint/linters/deprecated_classes.rb, line 27 def initialize(file_loader, config) super @addendum = @config.addendum end
Public Instance Methods
run(processed_source)
click to toggle source
# File lib/erb_lint/linters/deprecated_classes.rb, line 32 def run(processed_source) process_nested_offenses( source: processed_source, offset: 0, parent_source: processed_source, ) end
Private Instance Methods
class_name_with_loc(processed_source)
click to toggle source
# File lib/erb_lint/linters/deprecated_classes.rb, line 57 def class_name_with_loc(processed_source) Enumerator.new do |yielder| tags(processed_source).each do |tag| class_value = tag.attributes["class"]&.value next unless class_value class_value.split(" ").each do |class_name| yielder.yield(class_name, tag.loc) end end end end
generate_offenses(class_name, range)
click to toggle source
# File lib/erb_lint/linters/deprecated_classes.rb, line 94 def generate_offenses(class_name, range) violated_rules(class_name).each do |violated_rule| suggestion = " #{violated_rule[:suggestion]}".rstrip message = "Deprecated class `%s` detected matching the pattern `%s`.%s #{@addendum}".strip add_offense( range, format(message, class_name, violated_rule[:class_expr], suggestion) ) end end
process_nested_offenses(source:, offset:, parent_source:)
click to toggle source
# File lib/erb_lint/linters/deprecated_classes.rb, line 42 def process_nested_offenses(source:, offset:, parent_source:) class_name_with_loc(source).each do |class_name, loc| range = parent_source.to_source_range(loc).offset(offset) generate_offenses(class_name, range) end text_tags_content(source).each do |content_node| sub_source = ProcessedSource.new(source.filename, content_node.loc.source) process_nested_offenses( source: sub_source, offset: offset + content_node.loc.begin_pos, parent_source: parent_source ) end end
tag_nodes(processed_source)
click to toggle source
# File lib/erb_lint/linters/deprecated_classes.rb, line 90 def tag_nodes(processed_source) processed_source.parser.nodes_with_type(:tag) end
violated_rules(class_name)
click to toggle source
# File lib/erb_lint/linters/deprecated_classes.rb, line 106 def violated_rules(class_name) [].tap do |result| @config.rule_set.each do |rule| rule.deprecated.each do |deprecated| next unless /\A#{deprecated}\z/ =~ class_name result << { suggestion: rule.suggestion, class_expr: deprecated, } end end end end