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.



528
529
530
531
# File 'lib/rbi/parser.rb', line 528

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

Instance Attribute Details

#namesObject

Returns the value of attribute names.



525
526
527
# File 'lib/rbi/parser.rb', line 525

def names
  @names
end

Class Method Details

.visit(node) ⇒ Object



517
518
519
520
521
522
# File 'lib/rbi/parser.rb', line 517

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



534
535
536
537
538
539
540
541
542
543
544
545
# File 'lib/rbi/parser.rb', line 534

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