class Solargraph::Pin::Namespace

def binder

def binder
  full_context
end

def completion_item_kind

def completion_item_kind
  (type == :class ? LanguageServer::CompletionItemKinds::CLASS : LanguageServer::CompletionItemKinds::MODULE)
end

def desc

def desc
  if name.nil? || name.empty?
    '(top-level)'
  else
    to_rbs
  end
end

def domains

Returns:
  • (Array) -
def domains
  @domains ||= []
end

def full_context

def full_context
  @full_context ||= ComplexType.try_parse("::#{type.to_s.capitalize}<#{path}>")
end

def gates

def gates
  @gates ||= if path.empty?
    @open_gates
  else
    [path] + @open_gates
  end
end

def initialize type: :class, visibility: :public, gates: [''], **splat

Parameters:
  • gates (::Array) --
  • visibility (::Symbol) -- :public or :private
  • type (::Symbol) -- :class or :module
def initialize type: :class, visibility: :public, gates: [''], **splat
  # super(location, namespace, name, comments)

  super(**splat)
  @type = type
  @visibility = visibility
  if name.start_with?('::')
    @name = name[2..-1]
    @closure = Solargraph::Pin::ROOT_PIN
  end
  @open_gates = gates
  if @name.include?('::')
    # In this case, a chained namespace was opened (e.g., Foo::Bar)

    # but Foo does not exist.

    parts = @name.split('::')
    @name = parts.pop
    closure_name = if [Solargraph::Pin::ROOT_PIN, nil].include?(closure)
      ''
    else
      closure.full_context.namespace + '::'
    end
    closure_name += parts.join('::')
    @closure = Pin::Namespace.new(name: closure_name, gates: [parts.join('::')])
    @context = nil
  end
end

def namespace

def namespace
  context.namespace
end

def path

Returns:
  • (String) -
def path
  @path ||= (namespace.empty? ? '' : "#{namespace}::") + name
end

def return_type

def return_type
  @return_type ||= ComplexType.try_parse( (type == :class ? '::Class' : '::Module') + "<::#{path}>")
end

def scope

def scope
  context.scope
end

def symbol_kind

Returns:
  • (Integer) -
def symbol_kind
  (type == :class ? LanguageServer::SymbolKinds::CLASS : LanguageServer::SymbolKinds::MODULE)
end

def to_rbs

def to_rbs
  "#{@type.to_s} #{return_type.all_params.first.to_rbs}#{rbs_generics}".strip
end

def typify api_map

def typify api_map
  return_type
end