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
- FOR_LOOP_TYPE =
:for
- FOR_LOOP_CHILD_INDEX =
2
- NON_FOR_LOOP_TYPES =
LOOP_TYPES - [FOR_LOOP_TYPE]
- NON_FOR_LOOP_TYPES_CHILD_INDEX =
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.
77
78
79
80
81
82
83
84
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 77
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
56
57
58
59
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 56
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.
67
68
69
70
71
72
73
74
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 67
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
61
62
63
64
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 61
def branch_type
return nil unless inside_of_branch?
@branch_type ||= [branch_point_node.type, branch_body_name].join('_')
end
|
#inside_of_branch? ⇒ Boolean
33
34
35
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 33
def inside_of_branch?
branch_point_node
end
|
#node ⇒ Object
25
26
27
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 25
def node
raise '#node must be declared!'
end
|
#run_exclusively_with?(other) ⇒ Boolean
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 37
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
29
30
31
|
# File 'lib/rubocop/cop/variable_force/locatable.rb', line 29
def scope
raise '#scope must be declared!'
end
|