Module: RuboCop::Cop::VariableForce::Locatable
Overview
This module provides a way to locate the conditional branch the node is
in. This is intended to be used as mix-in.
Defined Under Namespace
Classes: InvalidBranchBodyError
Constant Summary
collapse
- BRANCH_TYPES =
[:if, :case].freeze
- CONDITION_INDEX_OF_BRANCH_NODE =
0
- LOGICAL_OPERATOR_TYPES =
[:and, :or].freeze
- LEFT_SIDE_INDEX_OF_LOGICAL_OPERATOR_NODE =
0
- ENSURE_TYPE =
:ensure
- ENSURE_INDEX_OF_ENSURE_NODE =
1
Instance Method Summary
collapse
Instance Method Details
#branch_body_name ⇒ Object
#branch_body_node ⇒ Object
A child node of #branch_point_node this assignment belongs.
70
71
72
73
74
75
76
77
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 70
def branch_body_node
if instance_variable_defined?(:@branch_body_node)
return @branch_body_node
end
set_branch_point_and_body_nodes!
@branch_body_node
end
|
#branch_id ⇒ Object
49
50
51
52
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 49
def branch_id
return nil unless inside_of_branch?
@branch_id ||= [branch_point_node.object_id, branch_type].join('_')
end
|
#branch_point_node ⇒ Object
Inner if, case, rescue, or ensure node.
60
61
62
63
64
65
66
67
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 60
def branch_point_node
if instance_variable_defined?(:@branch_point_node)
return @branch_point_node
end
set_branch_point_and_body_nodes!
@branch_point_node
end
|
#branch_type ⇒ Object
54
55
56
57
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 54
def branch_type
return nil unless inside_of_branch?
@branch_type ||= [branch_point_node.type, branch_body_name].join('_')
end
|
#inside_of_branch? ⇒ Boolean
26
27
28
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 26
def inside_of_branch?
branch_point_node
end
|
#node ⇒ Object
18
19
20
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 18
def node
fail '#node must be declared!'
end
|
#run_exclusively_with?(other) ⇒ Boolean
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 30
def run_exclusively_with?(other)
return false unless branch_point_node.equal?(other.branch_point_node)
return false if branch_body_node.equal?(other.branch_body_node)
if branch_point_node.type == :rescue &&
(branch_body_name == 'main' || other.branch_body_name == 'main')
return false
end
true
end
|
#scope ⇒ Object
22
23
24
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 22
def scope
fail '#scope must be declared!'
end
|