class RuboCop::Cop::Layout::MultilineMethodCallBraceLayout

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.

@example

# 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
)

Constants

ALWAYS_NEW_LINE_MESSAGE
ALWAYS_SAME_LINE_MESSAGE
NEW_LINE_MESSAGE
SAME_LINE_MESSAGE

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb, line 75
def on_send(node)
  check_brace_layout(node)
end

Private Instance Methods

children(node) click to toggle source
# File lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb, line 81
def children(node)
  node.arguments
end
ignored_literal?(node) click to toggle source
# File lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb, line 85
def ignored_literal?(node)
  single_line_ignoring_receiver?(node) || super
end
single_line_ignoring_receiver?(node) click to toggle source
# File lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb, line 89
def single_line_ignoring_receiver?(node)
  return false unless node.loc.begin && node.loc.end

  node.loc.begin.line == node.loc.end.line
end