class RuboCop::Cop::Layout::BlockEndNewline
This cop checks whether the end statement of a do..end block is on its own line.
@example
# bad blah do |i| foo(i) end # good blah do |i| foo(i) end # bad blah { |i| foo(i) } # good blah { |i| foo(i) }
Constants
- MSG
Public Instance Methods
on_block(node)
click to toggle source
# File lib/rubocop/cop/layout/block_end_newline.rb, line 29 def on_block(node) return if node.single_line? end_loc = node.loc.end # If the end is on its own line, there is no offense return if end_loc.source_line =~ /^\s*#{end_loc.source}/ add_offense(node, location: end_loc) end
Private Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/layout/block_end_newline.rb, line 42 def autocorrect(node) lambda do |corrector| indentation = indentation_of_block_start_line(node) corrector.insert_before(node.loc.end, "\n" + (' ' * indentation)) end end
indentation_of_block_start_line(node)
click to toggle source
# File lib/rubocop/cop/layout/block_end_newline.rb, line 53 def indentation_of_block_start_line(node) match = /\S.*/.match(node.loc.begin.source_line) match.begin(0) end
message(node)
click to toggle source
# File lib/rubocop/cop/layout/block_end_newline.rb, line 49 def message(node) format(MSG, node.loc.end.line, node.loc.end.column + 1) end