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_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