class Solargraph::Pin::Namespace
Attributes
does not assert like super, as a namespace without a closure may be the root level namespace, or it may not yet be qualified
@return [::Symbol] :class or :module
@return [::Symbol] :public or :private
Public Class Methods
Source
# File lib/solargraph/pin/namespace.rb, line 23 def initialize type: :class, visibility: :public, gates: [''], name: '', **splat # super(location, namespace, name, comments) super(**splat, name: name) @type = type @visibility = visibility if name.start_with?('::') # @type [String] 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('::')], source: :namespace) @context = nil end @name = name end
@param type [::Symbol] :class or :module @param visibility [::Symbol] :public or :private @param gates [::Array<String>] @param name [String]
Calls superclass method
Solargraph::Pin::Closure::new
Public Instance Methods
Source
# File lib/solargraph/pin/namespace.rb, line 79 def completion_item_kind (type == :class ? LanguageServer::CompletionItemKinds::CLASS : LanguageServer::CompletionItemKinds::MODULE) end
Source
# File lib/solargraph/pin/namespace.rb, line 98 def domains @domains ||= [] end
@return [Array<String>]
Source
# File lib/solargraph/pin/namespace.rb, line 67 def full_context @full_context ||= ComplexType.try_parse("::#{type.to_s.capitalize}<#{path}>") end
Source
# File lib/solargraph/pin/namespace.rb, line 106 def gates @gates ||= if path.empty? @open_gates else [path] + @open_gates end end
Source
# File lib/solargraph/pin/namespace.rb, line 55 def inner_desc if name.nil? || name.empty? '(top-level)' else super end end
Calls superclass method
Solargraph::Pin::Base#inner_desc
Source
# File lib/solargraph/pin/namespace.rb, line 63 def namespace context.namespace end
Source
# File lib/solargraph/pin/namespace.rb, line 89 def path @path ||= (namespace.empty? ? '' : "#{namespace}::") + name end
@return [String]
Source
# File lib/solargraph/pin/namespace.rb, line 93 def return_type @return_type ||= ComplexType.try_parse( (type == :class ? '::Class' : '::Module') + "<::#{path}>") end
Source
# File lib/solargraph/pin/namespace.rb, line 84 def symbol_kind (type == :class ? LanguageServer::SymbolKinds::CLASS : LanguageServer::SymbolKinds::MODULE) end
@return [Integer]
Source
# File lib/solargraph/pin/namespace.rb, line 51 def to_rbs "#{@type.to_s} #{return_type.all_params.first.to_rbs}#{rbs_generics}".strip end
Source
# File lib/solargraph/pin/namespace.rb, line 102 def typify api_map return_type end