brew/Library/Homebrew/rubocops/cask/url_legacy_comma_separators.rb
Issy Long 867e982300
T.cast some Nodes to SendNodes
- In these cases we've already checked it's not a BlockNode,
  so we can safely cast to a SendNode and use `SendNode` methods.
2025-01-25 22:34:10 +00:00

37 lines
1.1 KiB
Ruby

# typed: strict
# frozen_string_literal: true
module RuboCop
module Cop
module Cask
# This cop checks for `version.before_comma` and `version.after_comma`.
class UrlLegacyCommaSeparators < Url
include OnUrlStanza
extend AutoCorrector
MSG_CSV = "Use `version.csv.first` instead of `version.before_comma` " \
"and `version.csv.second` instead of `version.after_comma`."
sig { override.params(stanza: RuboCop::Cask::AST::Stanza).void }
def on_url_stanza(stanza)
return if stanza.stanza_node.block_type?
url_node = T.cast(stanza.stanza_node, RuboCop::AST::SendNode).first_argument
legacy_comma_separator_pattern = /version\.(before|after)_comma/
url = url_node.source
return unless url.match?(legacy_comma_separator_pattern)
corrected_url = url.sub("before_comma", "csv.first")&.sub("after_comma", "csv.second")
add_offense(url_node.loc.expression, message: format(MSG_CSV, url:)) do |corrector|
corrector.replace(url_node.source_range, corrected_url)
end
end
end
end
end
end