Class: Solargraph::Pin::Namespace
Constant Summary
Constants included
from Logging
Logging::DEFAULT_LOG_LEVEL, Logging::LOG_LEVELS
Instance Attribute Summary collapse
#node
Attributes inherited from Base
#code_object, #combine_priority, #directives, #docstring, #location, #name, #source, #type_location
Attributes included from Common
#context, #location
Instance Method Summary
collapse
Methods inherited from Closure
#combine_with, #context, #generic_defaults, #generics, #rbs_generics, #rebind
Methods inherited from Base
#==, #all_location_text, #all_rooted?, #assert_location_provided, #assert_same, #assert_same_array_content, #assert_same_count, #assert_same_macros, #assert_source_provided, #best_location, #choose, #choose_longer, #choose_node, #choose_pin_attr, #choose_pin_attr_with_same_name, #choose_priority, #combine_closure, #combine_directives, #combine_name, #combine_return_type, #combine_with, #comments, #deprecated?, #desc, #dodgy_return_type_source?, #erase_generics, #filename, #identity, #infer, #inspect, #macros, #maybe_directives?, #nearly?, #needs_consistent_name?, #prefer_rbs_location, #presence_certain?, #probe, #probed?, #proxied?, #proxy, #rbs_location?, #realize, #resolve_generics, #resolve_generics_from_context, #to_s, #transform_types, #type_desc, #variable?
Methods included from Logging
log_level, logger
#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
#closure=, #comments, #name, #source
Constructor Details
#initialize(type: :class, visibility: :public, gates: [''], name: '', **splat) ⇒ Namespace
Returns a new instance of Namespace.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/solargraph/pin/namespace.rb', line 24
def initialize type: :class, visibility: :public, gates: [''], name: '', **splat
super(**splat, name: name)
@type = type
@visibility = visibility
if name.start_with?('::')
name = name[2..] || ''
@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('::')], source: :namespace)
@context = nil
end
@name = name
end
|
Instance Attribute Details
#closure ⇒ Object
does not assert like super, as a namespace without a closure may be the root level namespace, or it may not yet be qualified
17
18
19
|
# File 'lib/solargraph/pin/namespace.rb', line 17
def closure
@closure
end
|
#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
78
79
80
|
# File 'lib/solargraph/pin/namespace.rb', line 78
def binder
full_context
end
|
#completion_item_kind ⇒ Object
#domains ⇒ Array<String>
105
106
107
|
# File 'lib/solargraph/pin/namespace.rb', line 105
def domains
@domains ||= []
end
|
#full_context ⇒ Object
74
75
76
|
# File 'lib/solargraph/pin/namespace.rb', line 74
def full_context
@full_context ||= ComplexType.try_parse("::#{type.to_s.capitalize}<#{path}>")
end
|
#gates ⇒ Object
113
114
115
116
117
118
119
|
# File 'lib/solargraph/pin/namespace.rb', line 113
def gates
@gates ||= if path.empty?
@open_gates
else
[path] + @open_gates
end
end
|
#inner_desc ⇒ Object
62
63
64
65
66
67
68
|
# File 'lib/solargraph/pin/namespace.rb', line 62
def inner_desc
if name.nil? || name.empty?
'(top-level)'
else
super
end
end
|
#namespace ⇒ Object
70
71
72
|
# File 'lib/solargraph/pin/namespace.rb', line 70
def namespace
context.namespace
end
|
#path ⇒ String
96
97
98
|
# File 'lib/solargraph/pin/namespace.rb', line 96
def path
@path ||= (namespace.empty? ? '' : "#{namespace}::") + name
end
|
#reset_generated! ⇒ Object
52
53
54
55
56
|
# File 'lib/solargraph/pin/namespace.rb', line 52
def reset_generated!
@return_type = nil
@full_context = nil
@path = nil
end
|
#return_type ⇒ Object
100
101
102
|
# File 'lib/solargraph/pin/namespace.rb', line 100
def return_type
@return_type ||= ComplexType.try_parse((type == :class ? '::Class' : '::Module') + "<::#{path}>")
end
|
#scope ⇒ Object
82
83
84
|
# File 'lib/solargraph/pin/namespace.rb', line 82
def scope
context.scope
end
|
#to_rbs ⇒ Object
58
59
60
|
# File 'lib/solargraph/pin/namespace.rb', line 58
def to_rbs
"#{@type} #{return_type.all_params.first.to_rbs}#{rbs_generics}".strip
end
|
#typify(api_map) ⇒ Object
109
110
111
|
# File 'lib/solargraph/pin/namespace.rb', line 109
def typify api_map
return_type
end
|