class RuboCop::Cop::AliasMethodOrderVerifier
This verifies a method is defined before its alias
Constants
- ALIAS_BEFORE_METHOD_WARNING_FMT
Disable cop for freezing on Ruby 2.2 rubocop:disable Style/RedundantFreeze
Public Class Methods
verify!(current_node, previous_node)
click to toggle source
rubocop:disable Style/GuardClause
# File lib/rubocop/cop/alias_method_order_verifier.rb, line 22 def verify!(current_node, previous_node) if moving_after_alias?(current_node, previous_node) ignore_node(current_node) raise_warning!(current_node.method_name, previous_node.method_name) end if moving_after_alias?(previous_node, current_node) ignore_node(previous_node) raise_warning!(previous_node.method_name, current_node.method_name) end end
Private Class Methods
find_aliases(current_node, siblings)
click to toggle source
rubocop:enable Style/GuardClause
# File lib/rubocop/cop/alias_method_order_verifier.rb, line 36 def find_aliases(current_node, siblings) siblings.select do |sibling| (alias?(sibling) || alias_method?(sibling)) == current_node.method_name end end
moving_after_alias?(current_node, previous_node)
click to toggle source
We don't want a method to be defined after its alias
# File lib/rubocop/cop/alias_method_order_verifier.rb, line 44 def moving_after_alias?(current_node, previous_node) siblings = current_node.parent.children current_node_aliases = find_aliases(current_node, siblings) filter = current_node_aliases.delete_if do |cna| cna.sibling_index > current_node.sibling_index end return false if filter.empty? current_node_aliases.any? do |cna| previous_node.sibling_index > cna.sibling_index end end
raise_warning!(first_method_name, second_method_name)
click to toggle source
# File lib/rubocop/cop/alias_method_order_verifier.rb, line 57 def raise_warning!(first_method_name, second_method_name) raise Warning, format( ALIAS_BEFORE_METHOD_WARNING_FMT, first_method_name: first_method_name, second_method_name: second_method_name ) end