Class: RuboCop::Cop::Layout::MultilineMethodCallBraceLayout

Inherits:
Cop
  • Object
show all
Includes:
MultilineLiteralBraceLayout
Defined in:
lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb

Overview

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

When using the ‘symmetrical` (default) style:

If a method call’s opening brace is on the same line as the first argument of the call, then the closing brace should be on the same line as the last argument of the call.

If an method call’s opening brace is on the line above the first argument of the call, then the closing brace should be on the line below the last argument of the call.

When using the ‘new_line` style:

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

When using the ‘same_line` style:

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

Examples:


# symmetrical: bad
# new_line: good
# same_line: bad
foo(a,
  b
)

# symmetrical: bad
# new_line: bad
# same_line: good
foo(
  a,
  b)

# symmetrical: good
# new_line: bad
# same_line: good
foo(a,
  b)

# symmetrical: good
# new_line: good
# same_line: bad
foo(
  a,
  b
)

Constant Summary collapse

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

Constants included from Util

Util::ASGN_NODES, Util::BYTE_ORDER_MARK, Util::CONDITIONAL_NODES, Util::EQUALS_ASGN_NODES, Util::LITERAL_REGEX, Util::LOGICAL_OPERATOR_NODES, Util::MODIFIER_NODES, 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 MultilineLiteralBraceLayout

#autocorrect, #check_brace_layout

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

Methods inherited from Cop

#add_offense, all, autocorrect_incompatible_with, badge, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, #correct, department, #duplicate_location?, #excluded_file?, #find_location, #highlights, inherited, #initialize, #join_force?, lint?, match?, #message, #messages, non_rails, #parse, qualified_cop_name, #relevant_file?, #target_rails_version, #target_ruby_version

Methods included from AST::Sexp

#s

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 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_required?, effective_column, ends_its_line?, escape_string, first_part_of_call_chain, interpret_string_escapes, line_distance, line_range, move_pos, needs_escaping?, on_node, operator?, parentheses?, parenthesized_call?, preceed?, range_between, range_by_whole_lines, range_with_surrounding_comma, range_with_surrounding_space, same_line?, scrub_string, source_range, strip_quotes, stripped_source_upto, symbol_without_quote?, to_string_literal, to_supported_styles, to_symbol_literal, within_node?

Methods included from PathUtil

absolute?, match_path?, relative_path, smart_path

Constructor Details

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

Instance Method Details

#on_send(node) ⇒ Object



75
76
77
# File 'lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb', line 75

def on_send(node)
  check_brace_layout(node)
end