123456789_123456789_123456789_123456789_123456789_

Class: RBS::Source::RBS

Relationships & Source Files
Inherits: Object
Defined in: lib/rbs/source.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(buffer, directives, decls) ⇒ RBS

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 8

def initialize(buffer, directives, decls)
  @buffer = buffer
  @directives = directives
  @declarations = decls
end

Instance Attribute Details

#buffer (readonly)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 6

attr_reader :buffer, :directives, :declarations

#declarations (readonly)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 6

attr_reader :buffer, :directives, :declarations

#directives (readonly)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 6

attr_reader :buffer, :directives, :declarations

Instance Method Details

#each_declaration_type_name(names, decl, &block)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 25

def each_declaration_type_name(names, decl, &block)
  case decl
  when AST::Declarations::Class
    decl.each_decl { each_declaration_type_name(names, _1, &block) }
    type_name = decl.name
  when AST::Declarations::Module
    decl.each_decl { each_declaration_type_name(names, _1, &block) }
    type_name = decl.name
  when AST::Declarations::Interface
    type_name = decl.name
  when AST::Declarations::TypeAlias
    type_name = decl.name
  when AST::Declarations::ModuleAlias
    type_name = decl.new_name
  when AST::Declarations::ClassAlias
    type_name = decl.new_name
  end

  if type_name
    unless names.include?(type_name)
      yield type_name
      names << type_name
    end
  end
end

#each_type_name(&block)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 14

def each_type_name(&block)
  if block
    set = Set[] #: Set[TypeName]
    declarations.each do |decl|
      each_declaration_type_name(set, decl, &block)
    end
  else
    enum_for :each_type_name
  end
end