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.

Three 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.

If it’s set to start_of_line, the end shall be aligned with the start of the line where the matching keyword appears.

Examples:

@good
# keyword style
variable = if true
           end

# variable style
variable = if true
end

# start_of_line style
puts(if true
end)

Constant Summary

Constants included from EndKeywordAlignment

EndKeywordAlignment::MSG

Constants included from Util

Util::ASGN_NODES, Util::BYTE_ORDER_MARK, Util::EQUALS_ASGN_NODES, Util::LITERAL_REGEX, Util::OPERATOR_METHODS, 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?

Methods included from NodePattern::Macros

#def_node_matcher, #def_node_search, #node_search, #node_search_all, #node_search_body, #node_search_first

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, #supported_styles, #unexpected_style_detected

Methods included from CheckAssignment

extract_rhs, #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?, #duplicate_location?, #excluded_file?, #extra_details?, #find_location, #highlights, inherited, #initialize, #join_force?, lint?, match?, #message, #messages, non_rails, #parse, qualified_cop_name, #reference_url, #relevant_file?, #style_guide_url, #target_ruby_version

Methods included from Sexp

#s

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, comment_line?, compatible_external_encoding_for?, directions, double_quotes_acceptable?, double_quotes_required?, effective_column, ends_its_line?, escape_string, first_part_of_call_chain, hard_to_type?, interpret_string_escapes, line_distance, line_range, move_pos, needs_escaping?, numeric_range_size, on_node, operator?, parentheses?, parenthesized_call?, preceed?, range_between, range_with_surrounding_comma, range_with_surrounding_space, same_line?, source_range, strip_quotes, stripped_source_upto, to_string_literal, to_symbol_literal, within_node?

Methods included from PathUtil

absolute?, match_path?, relative_path

Constructor Details

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

Instance Method Details

#on_case(node) ⇒ Object



58
59
60
61
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 58

def on_case(node)
  return check_asgn_alignment(node.parent, node) if argument_case?(node)
  check_other_alignment(node)
end

#on_class(node) ⇒ Object



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

def on_class(node)
  check_other_alignment(node)
end

#on_if(node) ⇒ Object



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

def on_if(node)
  check_other_alignment(node) unless ternary?(node)
end

#on_module(node) ⇒ Object



42
43
44
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 42

def on_module(node)
  check_other_alignment(node)
end

#on_until(node) ⇒ Object



54
55
56
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 54

def on_until(node)
  check_other_alignment(node)
end

#on_while(node) ⇒ Object



50
51
52
# File 'lib/rubocop/cop/lint/end_alignment.rb', line 50

def on_while(node)
  check_other_alignment(node)
end