module RuboCop::Cop::MultilineLiteralBraceLayout
Common functionality for checking that the closing brace of a literal is symmetrical with respect to the opening brace and contained elements.
Public Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb, line 23 def autocorrect(node) if closing_brace_on_same_line?(node) lambda do |corrector| corrector.insert_before(node.loc.end, "\n".freeze) end else lambda do |corrector| corrector.remove(range_with_surrounding_space(node.loc.end, :left)) corrector.insert_after(children(node).last.source_range, node.loc.end.source) end end end
check_brace_layout(node)
click to toggle source
# File lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb, line 8 def check_brace_layout(node) return unless node.loc.begin # Ignore implicit literals. return if children(node).empty? # Ignore empty literals. if opening_brace_on_same_line?(node) return if closing_brace_on_same_line?(node) add_offense(node, :expression, self.class::SAME_LINE_MESSAGE) else return unless closing_brace_on_same_line?(node) add_offense(node, :expression, self.class::NEW_LINE_MESSAGE) end end
Private Instance Methods
children(node)
click to toggle source
# File lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb, line 40 def children(node) node.children end
closing_brace_on_same_line?(node)
click to toggle source
This method depends on the fact that we have guarded against implicit and empty literals.
# File lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb, line 52 def closing_brace_on_same_line?(node) node.loc.end.line == children(node).last.loc.last_line end
opening_brace_on_same_line?(node)
click to toggle source
This method depends on the fact that we have guarded against implicit and empty literals.
# File lib/rubocop/cop/mixin/multiline_literal_brace_layout.rb, line 46 def opening_brace_on_same_line?(node) node.loc.begin.line == children(node).first.loc.first_line end