Class: Rubocop::Cop::Lint::BlockAlignment

Inherits:
Cop
  • Object
show all
Defined in:
lib/rubocop/cop/lint/block_alignment.rb

Overview

This cop checks whether the end keywords are aligned properly for do end blocks.

Examples:


variable = lambda do |i|
  i
end

Constant Summary collapse

MSG =
'end at %d, %d is not aligned with %s at %d, %d%s'

Constants inherited from Cop

Cop::OPERATOR_METHODS

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offences, #processed_source

Instance Method Summary collapse

Methods inherited from Cop

#add_offence, all, #autocorrect?, #convention, #cop_config, cop_name, #cop_name, cop_type, #debug?, #ignore_node, inherited, lint?, non_rails, rails?, style?, #support_autocorrect?, #warning

Constructor Details

#initialize(config = nil, options = nil) ⇒ BlockAlignment

Returns a new instance of BlockAlignment.



17
18
19
20
# File 'lib/rubocop/cop/lint/block_alignment.rb', line 17

def initialize(config = nil, options = nil)
  super
  @inspected_blocks = []
end

Instance Method Details

#on_and(node) ⇒ Object Also known as: on_or



27
28
29
30
31
32
33
34
35
# File 'lib/rubocop/cop/lint/block_alignment.rb', line 27

def on_and(node)
  return if already_processed_node?(node)

  _left, right = *node
  if right.type == :block
    check_block_alignment(node, right)
    @inspected_blocks << right
  end
end

#on_block(node) ⇒ Object



22
23
24
25
# File 'lib/rubocop/cop/lint/block_alignment.rb', line 22

def on_block(node)
  return if already_processed_node?(node)
  check_block_alignment(node, node)
end

#on_casgn(node) ⇒ Object



50
51
52
53
# File 'lib/rubocop/cop/lint/block_alignment.rb', line 50

def on_casgn(node)
  _, _, children = *node
  process_block_assignment(node, children)
end

#on_lvasgn(node) ⇒ Object Also known as: on_ivasgn, on_cvasgn, on_gvasgn, on_and_asgn, on_or_asgn



39
40
41
42
# File 'lib/rubocop/cop/lint/block_alignment.rb', line 39

def on_lvasgn(node)
  _, children = *node
  process_block_assignment(node, children)
end

#on_masgn(node) ⇒ Object



65
66
67
68
# File 'lib/rubocop/cop/lint/block_alignment.rb', line 65

def on_masgn(node)
  variables, args = *node
  process_block_assignment(variables, args)
end

#on_op_asgn(node) ⇒ Object



55
56
57
58
# File 'lib/rubocop/cop/lint/block_alignment.rb', line 55

def on_op_asgn(node)
  variable, _op, args = *node
  process_block_assignment(variable, args)
end

#on_send(node) ⇒ Object



60
61
62
63
# File 'lib/rubocop/cop/lint/block_alignment.rb', line 60

def on_send(node)
  _receiver, _method, *args = *node
  process_block_assignment(node, args.last)
end