class RuboCop::Cop::Layout::EmptyLinesAroundExceptionHandlingKeywords

This cops checks if empty lines exist around the bodies of `begin` sections. This cop doesn't check empty lines at `begin` body beginning/end and around method definition body. `Style/EmptyLinesAroundBeginBody` or `Style/EmptyLinesAroundMethodBody` can be used for this purpose.

@example

# good

begin
  do_something
rescue
  do_something2
else
  do_something3
ensure
  do_something4
end

# good

def foo
  do_something
rescue
  do_something2
end

# bad

begin
  do_something

rescue

  do_something2

else

  do_something3

ensure

  do_something4
end

# bad

def foo
  do_something

rescue

  do_something2
end

Constants

MSG

Public Instance Methods

on_def(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb, line 66
def on_def(node)
  check_body(node.body)
end
Also aliased as: on_defs
on_defs(node)
Alias for: on_def
on_kwbegin(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb, line 71
def on_kwbegin(node)
  body, = *node
  check_body(body)
end

Private Instance Methods

check_body(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb, line 78
def check_body(node)
  locations = keyword_locations(node)
  locations.each do |loc|
    line = loc.line
    keyword = loc.source
    # below the keyword
    check_line(style, line, format(MSG, 'after', keyword), &:empty?)
    # above the keyword
    check_line(style,
               line - 2,
               format(MSG, 'before', keyword),
               &:empty?)
  end
end
keyword_locations(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb, line 97
def keyword_locations(node)
  return [] unless node
  case node.type
  when :rescue
    keyword_locations_in_rescue(node)
  when :ensure
    keyword_locations_in_ensure(node)
  else
    []
  end
end
keyword_locations_in_ensure(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb, line 117
def keyword_locations_in_ensure(node)
  ensure_body, = *node
  [
    node.loc.keyword,
    *keyword_locations(ensure_body)
  ]
end
keyword_locations_in_rescue(node) click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb, line 109
def keyword_locations_in_rescue(node)
  _begin_body, *resbodies, _else_body = *node
  [
    node.loc.else,
    *resbodies.map { |body| body.loc.keyword }
  ].compact
end
style() click to toggle source
# File lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb, line 93
def style
  :no_empty_lines
end