Class: Solargraph::Pin::BaseMethod
Overview
The base class for method and attribute pins.
Instance Attribute Summary collapse
Attributes inherited from Closure
#scope
Attributes inherited from Base
#code_object, #location, #name
Attributes included from Common
#closure, #location
Instance Method Summary
collapse
Methods inherited from Closure
#binder, #context, #gates
Methods inherited from Base
#==, #comments, #completion_item_kind, #deprecated?, #directives, #docstring, #filename, #identity, #infer, #inspect, #macros, #maybe_directives?, #nearly?, #probe, #probed?, #proxied?, #proxy, #realize, #symbol_kind, #to_s, #try_merge!, #variable?
#completion_item, #detail, #link_documentation, #reset_conversions, #resolve_completion_item, #signature_help, #text_documentation
Methods included from Common
#binder, #comments, #context, #name, #namespace
Constructor Details
#initialize(visibility: :public, explicit: true, **splat) ⇒ BaseMethod
Returns a new instance of BaseMethod.
16
17
18
19
20
|
# File 'lib/solargraph/pin/base_method.rb', line 16
def initialize visibility: :public, explicit: true, **splat
super(**splat)
@visibility = visibility
@explicit = explicit
end
|
Instance Attribute Details
#node ⇒ Parser::AST::Node
12
13
14
|
# File 'lib/solargraph/pin/base_method.rb', line 12
def node
@node
end
|
#visibility ⇒ ::Symbol
Returns :public, :private, or :protected.
9
10
11
|
# File 'lib/solargraph/pin/base_method.rb', line 9
def visibility
@visibility
end
|
Instance Method Details
#documentation ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/solargraph/pin/base_method.rb', line 48
def documentation
if @documentation.nil?
@documentation ||= super || ''
param_tags = docstring.tags(:param)
unless param_tags.nil? or param_tags.empty?
@documentation += "\n\n" unless @documentation.empty?
@documentation += "Params:\n"
lines = []
param_tags.each do |p|
l = "* #{p.name}"
l += " [#{escape_brackets(p.types.join(', '))}]" unless p.types.nil? or p.types.empty?
l += " #{p.text}"
lines.push l
end
@documentation += lines.join("\n")
end
return_tags = docstring.tags(:return)
unless return_tags.empty?
@documentation += "\n\n" unless @documentation.empty?
@documentation += "Returns:\n"
lines = []
return_tags.each do |r|
l = "*"
l += " [#{escape_brackets(r.types.join(', '))}]" unless r.types.nil? or r.types.empty?
l += " #{r.text}"
lines.push l
end
@documentation += lines.join("\n")
end
@documentation += "\n\n" unless @documentation.empty?
@documentation += "Visibility: #{visibility}"
end
@documentation.to_s
end
|
#explicit? ⇒ Boolean
83
84
85
|
# File 'lib/solargraph/pin/base_method.rb', line 83
def explicit?
@explicit
end
|
#parameter_names ⇒ Array<String>
44
45
46
|
# File 'lib/solargraph/pin/base_method.rb', line 44
def parameter_names
parameters.map(&:name)
end
|
39
40
41
|
# File 'lib/solargraph/pin/base_method.rb', line 39
def parameters
@parameters ||= []
end
|
#path ⇒ Object
26
27
28
|
# File 'lib/solargraph/pin/base_method.rb', line 26
def path
@path ||= "#{namespace}#{(scope == :instance ? '#' : '.')}#{name}"
end
|
#return_type ⇒ Object
22
23
24
|
# File 'lib/solargraph/pin/base_method.rb', line 22
def return_type
@return_type ||= generate_complex_type
end
|
#typify(api_map) ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/solargraph/pin/base_method.rb', line 30
def typify api_map
decl = super
return decl unless decl.undefined?
type = see_reference(api_map) || typify_from_super(api_map)
return type.qualify(api_map, namespace) unless type.nil?
name.end_with?('?') ? ComplexType::BOOLEAN : ComplexType::UNDEFINED
end
|