Class: RBI::Index

Inherits:
Visitor show all
Defined in:
lib/rbi/index.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Visitor

#visit_all, #visit_file

Constructor Details

#initializeIndex

: -> void



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

def initialize
  super
  @index = {} #: Hash[String, Array[Node]]
end

Class Method Details

.index(*node) ⇒ Object

: (*Node node) -> Index



8
9
10
11
12
# File 'lib/rbi/index.rb', line 8

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

Instance Method Details

#[](id) ⇒ Object

: (String id) -> Array



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

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

#index(*nodes) ⇒ Object

: (*Node nodes) -> void



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

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

#keysObject

: -> Array



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

def keys
  @index.keys
end

#visit(node) ⇒ Object

: (Node? node) -> void



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