module RuboCop::Cop::FirstElementLineBreak
Common functionality for checking for a line break before the first element in a multi-line collection.
Public Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/mixin/first_element_line_break.rb, line 8 def autocorrect(node) ->(corrector) { corrector.insert_before(node.source_range, "\n") } end
Private Instance Methods
check_children_line_break(node, children, start = node)
click to toggle source
# File lib/rubocop/cop/mixin/first_element_line_break.rb, line 27 def check_children_line_break(node, children, start = node) return if children.size < 2 line = start.loc.line min = first_by_line(children) return if line != min.loc.first_line max = last_by_line(children) return if line == max.loc.last_line add_offense(min) end
check_method_line_break(node, children)
click to toggle source
# File lib/rubocop/cop/mixin/first_element_line_break.rb, line 14 def check_method_line_break(node, children) return if children.empty? return unless method_uses_parens?(node, children.first) check_children_line_break(node, children) end
first_by_line(nodes)
click to toggle source
# File lib/rubocop/cop/mixin/first_element_line_break.rb, line 41 def first_by_line(nodes) nodes.min_by { |n| n.loc.first_line } end
last_by_line(nodes)
click to toggle source
# File lib/rubocop/cop/mixin/first_element_line_break.rb, line 45 def last_by_line(nodes) nodes.max_by { |n| n.loc.last_line } end
method_uses_parens?(node, limit)
click to toggle source
# File lib/rubocop/cop/mixin/first_element_line_break.rb, line 22 def method_uses_parens?(node, limit) source = node.source_range.source_line[0...limit.loc.column] source =~ /\s*\(\s*$/ end