Class: RuboCop::Cop::Lint::EndAlignment

Inherits:
Cop
  • Object
show all
Includes:
CheckAssignment, EndKeywordAlignment, IfNode
Defined in:
lib/rubocop/cop/lint/end_alignment.rb

Overview

This cop checks whether the end keywords are aligned properly.

Two modes are supported through the AlignWith configuration parameter. If it's set to keyword (which is the default), the end shall be aligned with the start of the keyword (if, class, etc.). If it's set to variable the end shall be aligned with the left-hand-side of the variable assignment, if there is one.

Examples:


variable = if true
           end

Constant Summary

Constants included from EndKeywordAlignment

EndKeywordAlignment::MSG

Constants included from CheckAssignment

CheckAssignment::TYPES

Constants included from Util

Util::ASGN_NODES, Util::BASIC_LITERALS, Util::EQUALS_ASGN_NODES, Util::LITERALS, Util::OPERATOR_METHODS, Util::PROC_NEW_NODE, Util::SHORTHAND_ASGN_NODES

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offenses, #processed_source

Instance Method Summary collapse

Methods included from IfNode

#elsif?, #if_else?, #if_node_parts, #modifier_if?, #ternary_op?

Methods included from ConfigurableEnforcedStyle

#alternative_style, #ambiguous_style_detected, #correct_style_detected, #detected_style, #detected_style=, #no_acceptable_style!, #no_acceptable_style?, #opposite_style_detected, #parameter_name, #style, #style_detected, #unexpected_style_detected

Methods included from CheckAssignment

#on_casgn, #on_op_asgn, #on_send

Methods inherited from Cop

#add_offense, all, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, cop_type, #correct, #debug?, #details, #display_cop_names?, #display_style_guide?, #excluded_file?, #extra_details?, inherited, #initialize, #join_force?, lint?, match?, #message, non_rails, qualified_cop_name, rails?, #reference_url, #relevant_file?, #style_guide_url

Methods included from NodePattern::Macros

#def_node_matcher, #def_node_search

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #support_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

begins_its_line?, block_length, command?, comment_line?, const_name, directions, first_part_of_call_chain, lambda?, lambda_or_proc?, line_range, move_pos, numeric_range_size, on_node, operator?, parentheses?, proc?, range_with_surrounding_comma, range_with_surrounding_space, source_range, strip_quotes, within_node?

Methods included from PathUtil

hidden?, issue_deprecation_warning, match_path?, relative_path

Constructor Details

This class inherits a constructor from RuboCop::Cop::Cop

Instance Method Details

#on_case(node) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 43

def on_case(node)
  if argument_case?(node)
    return check_alignment(node.ancestors.first, node)
  end

  check_offset_of_node(node)
end

#on_class(node) ⇒ Object



23
24
25
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 23

def on_class(node)
  check_offset_of_node(node)
end

#on_if(node) ⇒ Object



31
32
33
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 31

def on_if(node)
  check_offset_of_node(node) unless ternary_op?(node)
end

#on_module(node) ⇒ Object



27
28
29
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 27

def on_module(node)
  check_offset_of_node(node)
end

#on_until(node) ⇒ Object



39
40
41
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 39

def on_until(node)
  check_offset_of_node(node)
end

#on_while(node) ⇒ Object



35
36
37
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 35

def on_while(node)
  check_offset_of_node(node)
end