36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								# frozen_string_literal: true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require "rubocops/extend/formula"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module RuboCop
							 | 
						||
| 
								 | 
							
								  module Cop
							 | 
						||
| 
								 | 
							
								    module FormulaAudit
							 | 
						||
| 
								 | 
							
								      # This cop audits deprecate!
							 | 
						||
| 
								 | 
							
								      class Deprecate < FormulaCop
							 | 
						||
| 
								 | 
							
								        def audit_formula(_node, _class_node, _parent_class_node, body_node)
							 | 
						||
| 
								 | 
							
								          deprecate_node = find_node_method_by_name(body_node, :deprecate!)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          return if deprecate_node.nil? || deprecate_node.children.length < 3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          date_node = find_strings(deprecate_node).first
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          begin
							 | 
						||
| 
								 | 
							
								            Date.iso8601(string_content(date_node))
							 | 
						||
| 
								 | 
							
								          rescue ArgumentError
							 | 
						||
| 
								 | 
							
								            fixed_date_string = Date.parse(string_content(date_node)).iso8601
							 | 
						||
| 
								 | 
							
								            offending_node(date_node)
							 | 
						||
| 
								 | 
							
								            problem "Use `#{fixed_date_string}` to comply with ISO 8601"
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        def autocorrect(node)
							 | 
						||
| 
								 | 
							
								          lambda do |corrector|
							 | 
						||
| 
								 | 
							
								            fixed_fixed_date_string = Date.parse(string_content(node)).iso8601
							 | 
						||
| 
								 | 
							
								            corrector.replace(node.source_range, "\"#{fixed_fixed_date_string}\"")
							 | 
						||
| 
								 | 
							
								          end
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								      end
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |