class RuboCop::Cop::Layout::BeginEndAlignment

Checks whether the end keyword of ‘begin` is aligned properly.

Two modes are supported through the ‘EnforcedStyleAlignWith` configuration parameter. If it’s set to ‘start_of_line` (which is the default), the `end` shall be aligned with the start of the line where the `begin` keyword is. If it’s set to ‘begin`, the `end` shall be aligned with the `begin` keyword.

‘Layout/EndAlignment` cop aligns with keywords (e.g. `if`, `while`, `case`) by default. On the other hand, `||= begin` that this cop targets tends to align with the start of the line, it defaults to `EnforcedStyleAlignWith: start_of_line`. These style can be configured by each cop.

@example EnforcedStyleAlignWith: start_of_line (default)

# bad
foo ||= begin
          do_something
        end

# good
foo ||= begin
  do_something
end

@example EnforcedStyleAlignWith: begin

# bad
foo ||= begin
  do_something
end

# good
foo ||= begin
          do_something
        end

Constants

MSG

Public Instance Methods

on_kwbegin(node) click to toggle source
# File lib/rubocop/cop/layout/begin_end_alignment.rb, line 48
def on_kwbegin(node)
  check_begin_alignment(node)
end

Private Instance Methods

alignment_node(node) click to toggle source
# File lib/rubocop/cop/layout/begin_end_alignment.rb, line 63
def alignment_node(node)
  case style
  when :begin
    node
  else
    start_line_range(node)
  end
end
autocorrect(corrector, node) click to toggle source
# File lib/rubocop/cop/layout/begin_end_alignment.rb, line 59
def autocorrect(corrector, node)
  AlignmentCorrector.align_end(corrector, processed_source, node, alignment_node(node))
end
check_begin_alignment(node) click to toggle source
# File lib/rubocop/cop/layout/begin_end_alignment.rb, line 54
def check_begin_alignment(node)
  align_with = { begin: node.loc.begin, start_of_line: start_line_range(node) }
  check_end_kw_alignment(node, align_with)
end