Class: RuboCop::Cop::Layout::MultilineMethodDefinitionBraceLayout

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
MultilineLiteralBraceLayout
Defined in:
lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb

Overview

This cop checks that the closing brace in a method definition is either on the same line as the last method parameter, or a new line.

When using the `symmetrical` (default) style:

If a method definition's opening brace is on the same line as the first parameter of the definition, then the closing brace should be on the same line as the last parameter of the definition.

If an method definition's opening brace is on the line above the first parameter of the definition, then the closing brace should be on the line below the last parameter of the definition.

When using the `new_line` style:

The closing brace of a multi-line method definition must be on the line after the last parameter of the definition.

When using the `same_line` style:

The closing brace of a multi-line method definition must be on the same line as the last parameter of the definition.

Examples:

EnforcedStyle: symmetrical (default)

# bad
def foo(a,
  b
)
end

# bad
def foo(
  a,
  b)
end

# good
def foo(a,
  b)
end

# good
def foo(
  a,
  b
)
end

EnforcedStyle: new_line

# bad
def foo(
  a,
  b)
end

# bad
def foo(a,
  b)
end

# good
def foo(a,
  b
)
end

# good
def foo(
  a,
  b
)
end

EnforcedStyle: same_line

# bad
def foo(a,
  b
)
end

# bad
def foo(
  a,
  b
)
end

# good
def foo(
  a,
  b)
end

# good
def foo(a,
  b)
end

Constant Summary collapse

SAME_LINE_MESSAGE =
'Closing method definition brace must be on the ' \
'same line as the last parameter when opening brace is on the same ' \
'line as the first parameter.'
NEW_LINE_MESSAGE =
'Closing method definition brace must be on the ' \
'line after the last parameter when opening brace is on a separate ' \
'line from the first parameter.'
ALWAYS_NEW_LINE_MESSAGE =
'Closing method definition brace must be ' \
'on the line after the last parameter.'
ALWAYS_SAME_LINE_MESSAGE =
'Closing method definition brace must be ' \
'on the same line as the last parameter.'

Constants inherited from Base

Base::RESTRICT_ON_SEND

Constants included from Util

Util::LITERAL_REGEX

Instance Attribute Summary

Attributes inherited from Base

#config, #processed_source

Instance Method Summary collapse

Methods included from AutoCorrector

support_autocorrect?

Methods included from ConfigurableEnforcedStyle

#alternative_style, #alternative_styles, #ambiguous_style_detected, #correct_style_detected, #detected_style, #detected_style=, #no_acceptable_style!, #no_acceptable_style?, #opposite_style_detected, #style, #style_configured?, #style_detected, #style_parameter_name, #supported_styles, #unexpected_style_detected

Methods inherited from Base

#add_global_offense, #add_offense, autocorrect_incompatible_with, badge, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, #cop_name, cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #ready, #relevant_file?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

add_parentheses, args_begin, args_end, begins_its_line?, comment_line?, comment_lines?, double_quotes_required?, escape_string, first_part_of_call_chain, indent, interpret_string_escapes, line_range, needs_escaping?, on_node, parentheses?, same_line?, to_string_literal, to_supported_styles, trim_string_interporation_escape_character

Methods included from PathUtil

absolute?, hidden_dir?, hidden_file?, hidden_file_in_not_hidden_dir?, match_path?, maybe_hidden_file?, relative_path, smart_path

Constructor Details

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

Instance Method Details

#on_def(node) ⇒ Object Also known as: on_defs


121
122
123
# File 'lib/rubocop/cop/layout/multiline_method_definition_brace_layout.rb', line 121

def on_def(node)
  check_brace_layout(node.arguments)
end