class RuboCop::Cop::Style::AccessModifierIndentation

Modifiers should be indented as deep as method definitions, or as deep as the class/module keyword, depending on configuration.

Constants

MSG

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 30
def on_block(node)
  _method, _args, body = *node
  check_body(body, node) if node.class_constructor?
end
on_class(node) click to toggle source
# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 15
def on_class(node)
  _name, _base_class, body = *node
  check_body(body, node)
end
on_module(node) click to toggle source
# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 25
def on_module(node)
  _name, body = *node
  check_body(body, node)
end
on_sclass(node) click to toggle source
# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 20
def on_sclass(node)
  _name, body = *node
  check_body(body, node)
end

Private Instance Methods

check_body(body, node) click to toggle source
# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 37
def check_body(body, node)
  return if body.nil? # Empty class etc.

  modifiers = body.children.select { |c| modifier_node?(c) }
  class_column = node.source_range.column

  modifiers.each { |modifier| check_modifier(modifier, class_column) }
end
check_modifier(send_node, class_start_col) click to toggle source
# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 46
def check_modifier(send_node, class_start_col)
  access_modifier_start_col = send_node.source_range.column
  offset = access_modifier_start_col - class_start_col

  @column_delta = expected_indent_offset - offset
  if @column_delta == 0
    correct_style_detected
  else
    add_offense(send_node, :expression) do
      if offset == unexpected_indent_offset
        opposite_style_detected
      else
        unrecognized_style_detected
      end
    end
  end
end
expected_indent_offset() click to toggle source
# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 68
def expected_indent_offset
  style == :outdent ? 0 : configured_indentation_width
end
message(node) click to toggle source
# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 64
def message(node)
  format(MSG, style.capitalize, node.loc.selector.source)
end
unexpected_indent_offset() click to toggle source

An offset that is not expected, but correct if the configuration is changed.

# File lib/rubocop/cop/style/access_modifier_indentation.rb, line 74
def unexpected_indent_offset
  configured_indentation_width - expected_indent_offset
end