Class: RBI::ConstBuilder

Inherits:
ASTVisitor show all
Extended by:
T::Sig
Defined in:
lib/rbi/parser.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ASTVisitor

#visit_all

Constructor Details

#initializeConstBuilder

Returns a new instance of ConstBuilder.



469
470
471
472
# File 'lib/rbi/parser.rb', line 469

def initialize
  super
  @names = T.let([], T::Array[String])
end

Instance Attribute Details

#namesObject

Returns the value of attribute names.



466
467
468
# File 'lib/rbi/parser.rb', line 466

def names
  @names
end

Class Method Details

.visit(node) ⇒ Object



458
459
460
461
462
463
# File 'lib/rbi/parser.rb', line 458

def self.visit(node)
  v = ConstBuilder.new
  v.visit(node)
  return nil if v.names.empty?
  v.names.join("::")
end

Instance Method Details

#visit(node) ⇒ Object



475
476
477
478
479
480
481
482
483
484
485
486
# File 'lib/rbi/parser.rb', line 475

def visit(node)
  return unless node
  case node.type
  when :const, :casgn
    visit(node.children[0])
    @names << node.children[1].to_s
  when :cbase
    @names << ""
  when :sym
    @names << ":#{node.children[0]}"
  end
end