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
 | 
