Module: Solargraph::NodeMethods

Included in:
ApiMap, CodeMap
Defined in:
lib/solargraph/node_methods.rb

Instance Method Summary collapse

Instance Method Details

#infer(node) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/solargraph/node_methods.rb', line 23

def infer node
  if node.type == :str
    return 'String'
  elsif node.type == :array
    return 'Array'
  elsif node.type == :hash
    return 'Hash'
  elsif node.type == :int
    return 'Integer'
  elsif node.type == :float
    return 'Float'
  elsif node.type == :send
    if node.children[0].nil?
      # TODO Another local variable or method or something? sheesh
    else
      ns = unpack_name(node.children[0])
      if node.children[1] == :new
        return ns
      end
    end
  elsif node.type == :cbase or node.type == :const
    unpack_name node
  end
end

#pack_name(node) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/solargraph/node_methods.rb', line 7

def pack_name(node)
  parts = []
  node.children.each { |n|
    if n.kind_of?(AST::Node)
      if n.type == :cbase
        parts = pack_name(n)
      else
        parts += pack_name(n)
      end
    else
      parts.push n unless n.nil?
    end
  }
  parts
end

#unpack_name(node) ⇒ Object



3
4
5
# File 'lib/solargraph/node_methods.rb', line 3

def unpack_name(node)
  pack_name(node).join("::")
end