class RuboCop::Cop::Layout::EmptyLinesAroundArguments

This cop checks if empty lines exist around the arguments of a method invocation.

@example

# bad
do_something(
  foo

)

process(bar,

        baz: qux,
        thud: fred)

some_method(

  [1,2,3],
  x: y
)

# good
do_something(
  foo
)

process(bar,
        baz: qux,
        thud: fred)

some_method(
  [1,2,3],
  x: y
)

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_arguments.rb, line 53
def autocorrect(node)
  lambda do |corrector|
    extra_lines(node) { |range| corrector.remove(range) }
  end
end
on_csend(node)
Alias for: on_send
on_send(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_arguments.rb, line 46
def on_send(node)
  return if node.single_line? || node.arguments.empty?

  extra_lines(node) { |range| add_offense(node, location: range) }
end
Also aliased as: on_csend

Private Instance Methods

empty_lines(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_arguments.rb, line 61
def empty_lines(node)
  lines = processed_lines(node)
  lines.select! { |code, _| code.empty? }
  lines.map { |_, line| line }
end
extra_lines(node) { |range| ... } click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_arguments.rb, line 67
def extra_lines(node)
  empty_lines(node).each do |line|
    range = source_range(processed_source.buffer, line, 0)
    yield(range)
  end
end
inner_lines(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_arguments.rb, line 89
def inner_lines(node)
  [node.first_line + 1, node.last_line - 1]
end
line_numbers(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_arguments.rb, line 80
def line_numbers(node)
  inner_lines = []
  line_nums = node.arguments.each_with_object([]) do |arg_node, lines|
    lines << outer_lines(arg_node)
    inner_lines << inner_lines(arg_node) if arg_node.multiline?
  end
  line_nums.flatten.uniq - inner_lines.flatten - outer_lines(node)
end
outer_lines(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_arguments.rb, line 93
def outer_lines(node)
  [node.first_line - 1, node.last_line + 1]
end
processed_lines(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_arguments.rb, line 74
def processed_lines(node)
  line_numbers(node).each_with_object([]) do |num, array|
    array << [processed_source.lines[num - 1], num]
  end
end