class RuboCop::Cop::Style::TrailingMethodEndStatement
This cop checks for trailing code after the method definition.
@example
# bad def some_method do_stuff; end def do_this(x) baz.map { |b| b.this(x) } end def foo block do bar end end # good def some_method do_stuff end def do_this(x) baz.map { |b| b.this(x) } end def foo block do bar end end
Constants
- MSG
Public Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/style/trailing_method_end_statement.rb, line 48 def autocorrect(node) lambda do |corrector| break_line_before_end(node, corrector) remove_semicolon(node, corrector) end end
on_def(node)
click to toggle source
# File lib/rubocop/cop/style/trailing_method_end_statement.rb, line 42 def on_def(node) return unless trailing_end?(node) add_offense(node.to_a.last, location: end_token(node).pos) end
Private Instance Methods
body_and_end_on_same_line?(node)
click to toggle source
# File lib/rubocop/cop/style/trailing_method_end_statement.rb, line 67 def body_and_end_on_same_line?(node) end_token(node).line == token_before_end(node).line end
break_line_before_end(node, corrector)
click to toggle source
# File lib/rubocop/cop/style/trailing_method_end_statement.rb, line 78 def break_line_before_end(node, corrector) corrector.insert_before( end_token(node).pos, "\n" + ' ' * configured_indentation_width ) end
end_token(node)
click to toggle source
# File lib/rubocop/cop/style/trailing_method_end_statement.rb, line 63 def end_token(node) @end_token ||= tokens(node).reverse.find(&:end?) end
remove_semicolon(node, corrector)
click to toggle source
# File lib/rubocop/cop/style/trailing_method_end_statement.rb, line 85 def remove_semicolon(node, corrector) return unless token_before_end(node).semicolon? corrector.remove(token_before_end(node).pos) end
token_before_end(node)
click to toggle source
# File lib/rubocop/cop/style/trailing_method_end_statement.rb, line 71 def token_before_end(node) @token_before_end ||= begin i = tokens(node).index(end_token(node)) tokens(node)[i - 1] end end
trailing_end?(node)
click to toggle source
# File lib/rubocop/cop/style/trailing_method_end_statement.rb, line 57 def trailing_end?(node) node.body && node.multiline? && body_and_end_on_same_line?(node) end