 867e982300
			
		
	
	
		867e982300
		
			
		
	
	
	
	
		
			
			- In these cases we've already checked it's not a BlockNode, so we can safely cast to a SendNode and use `SendNode` methods.
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			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
 |