Class: RBI::Index

Inherits:
Visitor show all
Includes:
T::Enumerable
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



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

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

Class Method Details

.index(*node) ⇒ Object

: (*Node node) -> Index



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

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

Instance Method Details

#[](id) ⇒ Object

: (String id) -> Array



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

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

#index(*nodes) ⇒ Object

: (*Node nodes) -> void



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

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

#keysObject

: -> Array



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

def keys
  @index.keys
end

#visit(node) ⇒ Object

: (Node? node) -> void



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

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