Class: Yoda::Typing::ConstantResolver::Query
Abstract
- Inherits:
-
Object
- Object
- Yoda::Typing::ConstantResolver::Query
show all
- Defined in:
- lib/yoda/typing/constant_resolver/query.rb
Overview
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.from_node(node, tracer: nil) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/yoda/typing/constant_resolver/query.rb', line 9
def from_node(node, tracer: nil)
case node.type
when :cbase
CbaseQuery.new
when :empty
RelativeBaseQuery.new
when :const
MemberQuery.new(parent: from_node(node.base, tracer: tracer), name: node.name.name.to_s, tracer: tracer && NodeTracer.new(node: node, tracer: tracer))
else
CodeQuery.new(node: node)
end
end
|
.from_string(string, parent: RelativeBaseQuery.new) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/yoda/typing/constant_resolver/query.rb', line 22
def from_string(string, parent: RelativeBaseQuery.new)
base, child = string.split("::", 2)
case base
when nil
parent
when ""
base_query = CbaseQuery.new
if child.nil?
base_query
else
from_string(child, parent: base_query)
end
else
base_query = MemberQuery.new(parent: parent, name: base)
if child.nil?
base_query
else
from_string(child, parent: base_query)
end
end
end
|
Instance Method Details
60
61
62
63
64
65
66
|
# File 'lib/yoda/typing/constant_resolver/query.rb', line 60
def base
if parent
parent.base
else
self
end
end
|
#parent ⇒ Query?
50
51
52
|
# File 'lib/yoda/typing/constant_resolver/query.rb', line 50
def parent
fail NotImplementedError
end
|
55
56
57
|
# File 'lib/yoda/typing/constant_resolver/query.rb', line 55
def tracer
nil
end
|