| 
									
										
										
										
											2023-02-14 19:19:37 -08:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  | module RuboCop | 
					
						
							|  |  |  |   module Cop | 
					
						
							|  |  |  |     module Cask | 
					
						
							| 
									
										
										
										
											2020-11-05 17:17:03 -05:00
										 |  |  |       # Common functionality for cops checking casks. | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |       module CaskHelp | 
					
						
							| 
									
										
										
										
											2024-02-04 05:53:24 -08:00
										 |  |  |         prepend CommentsHelp # Update the rbi file if changing this: https://github.com/sorbet/sorbet/issues/259 | 
					
						
							| 
									
										
										
										
											2023-04-24 19:14:04 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-07 08:23:19 +02:00
										 |  |  |         sig { overridable.params(cask_block: RuboCop::Cask::AST::CaskBlock).void } | 
					
						
							| 
									
										
										
										
											2023-02-14 19:19:37 -08:00
										 |  |  |         def on_cask(cask_block); end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-07 08:23:19 +02:00
										 |  |  |         sig { overridable.params(cask_stanza_block: RuboCop::Cask::AST::StanzaBlock).void } | 
					
						
							| 
									
										
										
										
											2023-04-22 04:00:04 +02:00
										 |  |  |         def on_cask_stanza_block(cask_stanza_block); end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-07 08:23:19 +02:00
										 |  |  |         sig { params(block_node: RuboCop::AST::BlockNode).void } | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         def on_block(block_node) | 
					
						
							|  |  |  |           super if defined? super | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-07 08:23:19 +02:00
										 |  |  |           return if !block_node.cask_block? && !block_node.cask_on_system_block? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           comments = comments_in_range(block_node).to_a | 
					
						
							|  |  |  |           stanza_block = RuboCop::Cask::AST::StanzaBlock.new(block_node, comments) | 
					
						
							|  |  |  |           on_cask_stanza_block(stanza_block) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           return unless block_node.cask_block? | 
					
						
							| 
									
										
										
										
											2023-04-22 04:00:04 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-07 08:23:19 +02:00
										 |  |  |           cask_block = RuboCop::Cask::AST::CaskBlock.new(block_node, comments) | 
					
						
							|  |  |  |           on_cask(cask_block) | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2023-04-15 22:55:12 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         def on_system_methods(cask_stanzas) | 
					
						
							| 
									
										
										
										
											2023-05-07 08:23:19 +02:00
										 |  |  |           cask_stanzas.select(&:on_system_block?) | 
					
						
							| 
									
										
										
										
											2023-04-15 22:55:12 +01:00
										 |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def inner_stanzas(block_node, comments) | 
					
						
							|  |  |  |           block_contents = block_node.child_nodes.select(&:begin_type?) | 
					
						
							|  |  |  |           inner_nodes = block_contents.map(&:child_nodes).flatten.select(&:send_type?) | 
					
						
							|  |  |  |           inner_nodes.map { |n| RuboCop::Cask::AST::Stanza.new(n, comments) } | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |