class RuboCop::Cop::Primer::DeprecatedComponents

Primer::Alpha::Tooltip.new(:foo)
good
Primer::Tooltip.new(:foo)
bad
Primer::Beta::Blankslate.new(:foo)
good
Primer::BlankslateComponent.new(:foo)
bad
This cop ensures that components marked as “deprecated” in ‘static/statuses.json` are discouraged from use.

def on_send(node)

def on_send(node)
  return unless node.source.include?("Primer::")
  deprecated_components.each do |component|
    pattern = NodePattern.new("(send #{pattern(component)} :new ...)")
    add_offense(node, message: message(component)) if pattern.match(node)
  end
end

def pattern(component)

Converts a string to acceptable rubocop-ast pattern syntax
def pattern(component)
  Parser::CurrentRuby.parse(component)
                     .to_s
                     .gsub("nil", "nil?")
                     .delete("\n")
                     .gsub("  ", " ")
end