Class: RBI::Index

Inherits:
Visitor show all
Extended by:
T::Sig
Includes:
T::Enumerable
Defined in:
lib/rbi/index.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Visitor

#visit_all

Constructor Details

#initializeIndex

Returns a new instance of Index.



17
18
19
20
# File 'lib/rbi/index.rb', line 17

def initialize
  super()
  @index = T.let({}, T::Hash[String, T::Array[Node]])
end

Class Method Details

.index(*node) ⇒ Object



10
11
12
13
14
# File 'lib/rbi/index.rb', line 10

def self.index(*node)
  index = Index.new
  index.visit_all(node)
  index
end

Instance Method Details

#[](id) ⇒ Object



28
29
30
# File 'lib/rbi/index.rb', line 28

def [](id)
  @index[id] ||= []
end

#index(*nodes) ⇒ Object



33
34
35
# File 'lib/rbi/index.rb', line 33

def index(*nodes)
  nodes.each { |node| visit(node) }
end

#keysObject



23
24
25
# File 'lib/rbi/index.rb', line 23

def keys
  @index.keys
end

#visit(node) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/rbi/index.rb', line 38

def visit(node)
  return unless node

  case node
  when Scope
    index_node(node)
    visit_all(node.nodes)
  when Tree
    visit_all(node.nodes)
  when Indexable
    index_node(node)
  end
end