class RuboCop::Cop::MultilineLiteralBraceCorrector
Autocorrection logic for the closing brace of a literal either on the same line as the last contained elements, or a new line.
Attributes
node[R]
processed_source[R]
Public Class Methods
new(node, processed_source)
click to toggle source
# File lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb, line 11 def initialize(node, processed_source) @node = node @processed_source = processed_source end
Public Instance Methods
call(corrector)
click to toggle source
# File lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb, line 16 def call(corrector) if closing_brace_on_same_line?(node) correct_same_line_brace(corrector) else # When a comment immediately before the closing brace gets in the # way of an easy correction, the offense is reported but not auto- # corrected. The user must handle the delicate decision of where to # put the comment. return if new_line_needed_before_closing_brace?(node) correct_next_line_brace(corrector) end end
Private Instance Methods
correct_next_line_brace(corrector)
click to toggle source
# File lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb, line 38 def correct_next_line_brace(corrector) corrector.remove( range_with_surrounding_space(range: node.loc.end, side: :left) ) corrector.insert_after( last_element_range_with_trailing_comma(node), node.loc.end.source ) end
correct_same_line_brace(corrector)
click to toggle source
# File lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb, line 34 def correct_same_line_brace(corrector) corrector.insert_before(node.loc.end, "\n") end
last_element_range_with_trailing_comma(node)
click to toggle source
# File lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb, line 49 def last_element_range_with_trailing_comma(node) trailing_comma_range = last_element_trailing_comma_range(node) if trailing_comma_range children(node).last.source_range.join(trailing_comma_range) else children(node).last.source_range end end
last_element_trailing_comma_range(node)
click to toggle source
# File lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb, line 58 def last_element_trailing_comma_range(node) range = range_with_surrounding_space( range: children(node).last.source_range, side: :right ).end.resize(1) range.source == ',' ? range : nil end