7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/rbs_activerecord/parser/evaluator.rb', line 7
def eval_node(node)
case node
when Prism::NilNode
nil
when Prism::TrueNode
true
when Prism::FalseNode
false
when Prism::SymbolNode
node.value.to_s.to_sym
when Prism::IntegerNode
node.value
when Prism::StringNode
node.unescaped
when Prism::ArrayNode
node.elements.map { |e| eval_node(e) }
when Prism::HashNode, Prism::KeywordHashNode
node.elements.filter_map do |assoc|
case assoc
when Prism::AssocNode
key = eval_node(assoc.key)
value = eval_node(assoc.value)
[key, value]
end
end.to_h
when Prism::ConstantReadNode
node.name.to_s
when Prism::ConstantPathNode
parent = node.parent ? eval_node(node.parent) : nil
"#{parent}::#{node.name}"
end
end
|