Class: Solargraph::Pin::Namespace
Instance Attribute Summary collapse
Attributes inherited from Base
#code_object, #location, #name, #source, #type_location
Attributes included from Common
#closure, #context, #location
Instance Method Summary
collapse
Methods inherited from Closure
#context, #generics, #rbs_generics
Methods inherited from Base
#==, #all_rooted?, #best_location, #comments, #deprecated?, #directives, #docstring, #erase_generics, #filename, #identity, #infer, #inspect, #macros, #maybe_directives?, #nearly?, #presence_certain?, #probe, #probed?, #proxied?, #proxy, #realize, #resolve_generics, #resolve_generics_from_context, #to_s, #transform_types, #try_merge!, #type_desc, #variable?
#documentation, normalize_indentation, strip_html_comments
#completion_item, #deprecated?, #detail, #link_documentation, #probed?, #proxied?, #reset_conversions, #resolve_completion_item, #signature_help, #text_documentation
Methods included from Common
#comments, #name
Constructor Details
#initialize(type: :class, visibility: :public, gates: [''], name: '', **splat) ⇒ Namespace
Returns a new instance of Namespace.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/solargraph/pin/namespace.rb', line 18
def initialize type: :class, visibility: :public, gates: [''], name: '', **splat
super(**splat, name: name)
@type = type
@visibility = visibility
if name.start_with?('::')
name = name[2..-1] || ''
@closure = Solargraph::Pin::ROOT_PIN
end
@open_gates = gates
if name.include?('::')
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
@name = name
end
|
Instance Attribute Details
#type ⇒ ::Symbol
Returns :class or :module.
12
13
14
|
# File 'lib/solargraph/pin/namespace.rb', line 12
def type
@type
end
|
#visibility ⇒ ::Symbol
Returns :public or :private.
9
10
11
|
# File 'lib/solargraph/pin/namespace.rb', line 9
def visibility
@visibility
end
|
Instance Method Details
#binder ⇒ Object
66
67
68
|
# File 'lib/solargraph/pin/namespace.rb', line 66
def binder
full_context
end
|
#completion_item_kind ⇒ Object
#desc ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/solargraph/pin/namespace.rb', line 50
def desc
if name.nil? || name.empty?
'(top-level)'
else
super
end
end
|
#domains ⇒ Array<String>
93
94
95
|
# File 'lib/solargraph/pin/namespace.rb', line 93
def domains
@domains ||= []
end
|
#full_context ⇒ Object
62
63
64
|
# File 'lib/solargraph/pin/namespace.rb', line 62
def full_context
@full_context ||= ComplexType.try_parse("::#{type.to_s.capitalize}<#{path}>")
end
|
#gates ⇒ Object
101
102
103
104
105
106
107
|
# File 'lib/solargraph/pin/namespace.rb', line 101
def gates
@gates ||= if path.empty?
@open_gates
else
[path] + @open_gates
end
end
|
#namespace ⇒ Object
58
59
60
|
# File 'lib/solargraph/pin/namespace.rb', line 58
def namespace
context.namespace
end
|
#path ⇒ String
84
85
86
|
# File 'lib/solargraph/pin/namespace.rb', line 84
def path
@path ||= (namespace.empty? ? '' : "#{namespace}::") + name
end
|
#return_type ⇒ Object
88
89
90
|
# File 'lib/solargraph/pin/namespace.rb', line 88
def return_type
@return_type ||= ComplexType.try_parse( (type == :class ? '::Class' : '::Module') + "<::#{path}>")
end
|
#scope ⇒ Object
70
71
72
|
# File 'lib/solargraph/pin/namespace.rb', line 70
def scope
context.scope
end
|
#to_rbs ⇒ Object
46
47
48
|
# File 'lib/solargraph/pin/namespace.rb', line 46
def to_rbs
"#{@type.to_s} #{return_type.all_params.first.to_rbs}#{rbs_generics}".strip
end
|
#typify(api_map) ⇒ Object
97
98
99
|
# File 'lib/solargraph/pin/namespace.rb', line 97
def typify api_map
return_type
end
|