solargraph 0.32.1 → 0.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.rubocop.yml +6 -0
- data/.travis.yml +25 -0
- data/EXAMPLES.md +76 -0
- data/Gemfile +3 -0
- data/LANGUAGE_SERVER.md +51 -0
- data/LICENSE +21 -0
- data/OVERVIEW.md +37 -0
- data/README.md +106 -0
- data/Rakefile +14 -0
- data/SERVER.md +95 -0
- data/bin/solargraph +0 -0
- data/bin/solargraph-runtime +5 -5
- data/lib/solargraph.rb +54 -54
- data/lib/solargraph/api_map.rb +659 -659
- data/lib/solargraph/api_map/cache.rb +49 -49
- data/lib/solargraph/api_map/source_to_yard.rb +67 -67
- data/lib/solargraph/api_map/store.rb +201 -201
- data/lib/solargraph/bundle.rb +24 -24
- data/lib/solargraph/complex_type.rb +150 -150
- data/lib/solargraph/complex_type/type_methods.rb +124 -124
- data/lib/solargraph/complex_type/unique_type.rb +44 -44
- data/lib/solargraph/core_fills.rb +37 -37
- data/lib/solargraph/diagnostics.rb +52 -52
- data/lib/solargraph/diagnostics/base.rb +20 -20
- data/lib/solargraph/diagnostics/require_not_found.rb +28 -28
- data/lib/solargraph/diagnostics/rubocop.rb +98 -98
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +46 -46
- data/lib/solargraph/diagnostics/type_not_defined.rb +108 -108
- data/lib/solargraph/diagnostics/update_errors.rb +38 -38
- data/lib/solargraph/language_server/completion_item_kinds.rb +33 -33
- data/lib/solargraph/language_server/error_codes.rb +18 -18
- data/lib/solargraph/language_server/host.rb +684 -681
- data/lib/solargraph/language_server/host/cataloger.rb +54 -79
- data/lib/solargraph/language_server/host/diagnoser.rb +80 -80
- data/lib/solargraph/language_server/host/dispatch.rb +112 -113
- data/lib/solargraph/language_server/host/sources.rb +138 -138
- data/lib/solargraph/language_server/message.rb +90 -90
- data/lib/solargraph/language_server/message/base.rb +83 -83
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +40 -40
- data/lib/solargraph/language_server/message/exit_notification.rb +11 -11
- data/lib/solargraph/language_server/message/extended.rb +19 -19
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +86 -86
- data/lib/solargraph/language_server/message/extended/document.rb +18 -18
- data/lib/solargraph/language_server/message/extended/document_gems.rb +30 -30
- data/lib/solargraph/language_server/message/extended/environment.rb +20 -20
- data/lib/solargraph/language_server/message/extended/search.rb +18 -18
- data/lib/solargraph/language_server/message/initialize.rb +141 -141
- data/lib/solargraph/language_server/message/initialized.rb +23 -23
- data/lib/solargraph/language_server/message/shutdown.rb +11 -11
- data/lib/solargraph/language_server/message/text_document.rb +25 -25
- data/lib/solargraph/language_server/message/text_document/completion.rb +51 -51
- data/lib/solargraph/language_server/message/text_document/definition.rb +18 -18
- data/lib/solargraph/language_server/message/text_document/did_change.rb +13 -13
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +21 -21
- data/lib/solargraph/language_server/message/text_document/folding_range.rb +24 -24
- data/lib/solargraph/language_server/message/text_document/formatting.rb +50 -50
- data/lib/solargraph/language_server/message/text_document/hover.rb +31 -31
- data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +32 -32
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +9 -9
- data/lib/solargraph/language_server/message/text_document/references.rb +14 -14
- data/lib/solargraph/language_server/message/text_document/rename.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +19 -19
- data/lib/solargraph/language_server/message/workspace.rb +12 -12
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +29 -29
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +29 -27
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +21 -21
- data/lib/solargraph/language_server/request.rb +22 -22
- data/lib/solargraph/language_server/symbol_kinds.rb +34 -34
- data/lib/solargraph/language_server/transport.rb +11 -11
- data/lib/solargraph/language_server/transport/adapter.rb +60 -60
- data/lib/solargraph/language_server/transport/data_reader.rb +66 -66
- data/lib/solargraph/language_server/uri_helpers.rb +25 -25
- data/lib/solargraph/library.rb +421 -419
- data/lib/solargraph/live_map.rb +126 -126
- data/lib/solargraph/live_map/cache.rb +38 -38
- data/lib/solargraph/location.rb +31 -31
- data/lib/solargraph/logging.rb +25 -25
- data/lib/solargraph/page.rb +68 -68
- data/lib/solargraph/pin.rb +50 -50
- data/lib/solargraph/pin/attribute.rb +41 -41
- data/lib/solargraph/pin/base.rb +280 -280
- data/lib/solargraph/pin/base_method.rb +76 -76
- data/lib/solargraph/pin/base_variable.rb +72 -72
- data/lib/solargraph/pin/block.rb +32 -32
- data/lib/solargraph/pin/block_parameter.rb +103 -103
- data/lib/solargraph/pin/class_variable.rb +9 -9
- data/lib/solargraph/pin/constant.rb +30 -30
- data/lib/solargraph/pin/conversions.rb +79 -79
- data/lib/solargraph/pin/documenting.rb +41 -41
- data/lib/solargraph/pin/duck_method.rb +14 -14
- data/lib/solargraph/pin/global_variable.rb +9 -9
- data/lib/solargraph/pin/instance_variable.rb +9 -9
- data/lib/solargraph/pin/keyword.rb +17 -17
- data/lib/solargraph/pin/local_variable.rb +23 -23
- data/lib/solargraph/pin/localized.rb +22 -22
- data/lib/solargraph/pin/method.rb +126 -126
- data/lib/solargraph/pin/method_alias.rb +30 -30
- data/lib/solargraph/pin/method_parameter.rb +40 -40
- data/lib/solargraph/pin/namespace.rb +54 -54
- data/lib/solargraph/pin/plugin/method.rb +25 -25
- data/lib/solargraph/pin/proxy_type.rb +35 -35
- data/lib/solargraph/pin/reference.rb +22 -22
- data/lib/solargraph/pin/reference/extend.rb +11 -11
- data/lib/solargraph/pin/reference/include.rb +11 -11
- data/lib/solargraph/pin/reference/require.rb +15 -15
- data/lib/solargraph/pin/reference/superclass.rb +11 -11
- data/lib/solargraph/pin/symbol.rb +44 -44
- data/lib/solargraph/pin/yard_pin.rb +10 -10
- data/lib/solargraph/pin/yard_pin/constant.rb +14 -14
- data/lib/solargraph/pin/yard_pin/method.rb +35 -35
- data/lib/solargraph/pin/yard_pin/namespace.rb +19 -19
- data/lib/solargraph/pin/yard_pin/yard_mixin.rb +14 -14
- data/lib/solargraph/plugin.rb +8 -8
- data/lib/solargraph/plugin/base.rb +41 -41
- data/lib/solargraph/plugin/canceler.rb +11 -11
- data/lib/solargraph/plugin/process.rb +172 -172
- data/lib/solargraph/plugin/runtime.rb +134 -134
- data/lib/solargraph/position.rb +110 -110
- data/lib/solargraph/range.rb +83 -83
- data/lib/solargraph/server_methods.rb +14 -14
- data/lib/solargraph/shell.rb +102 -102
- data/lib/solargraph/source.rb +521 -521
- data/lib/solargraph/source/chain.rb +120 -120
- data/lib/solargraph/source/chain/call.rb +107 -107
- data/lib/solargraph/source/chain/class_variable.rb +11 -11
- data/lib/solargraph/source/chain/constant.rb +30 -30
- data/lib/solargraph/source/chain/global_variable.rb +11 -11
- data/lib/solargraph/source/chain/head.rb +33 -33
- data/lib/solargraph/source/chain/instance_variable.rb +11 -11
- data/lib/solargraph/source/chain/link.rb +33 -33
- data/lib/solargraph/source/chain/literal.rb +21 -21
- data/lib/solargraph/source/chain/variable.rb +11 -11
- data/lib/solargraph/source/change.rb +77 -77
- data/lib/solargraph/source/cursor.rb +157 -157
- data/lib/solargraph/source/node_chainer.rb +96 -96
- data/lib/solargraph/source/node_methods.rb +225 -225
- data/lib/solargraph/source/source_chainer.rb +183 -183
- data/lib/solargraph/source_map.rb +169 -169
- data/lib/solargraph/source_map/clip.rb +145 -145
- data/lib/solargraph/source_map/completion.rb +21 -21
- data/lib/solargraph/source_map/mapper.rb +149 -149
- data/lib/solargraph/source_map/node_processor.rb +78 -78
- data/lib/solargraph/source_map/node_processor/alias_node.rb +19 -19
- data/lib/solargraph/source_map/node_processor/args_node.rb +28 -28
- data/lib/solargraph/source_map/node_processor/base.rb +68 -68
- data/lib/solargraph/source_map/node_processor/begin_node.rb +11 -11
- data/lib/solargraph/source_map/node_processor/block_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/casgn_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/cvasgn_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/def_node.rb +54 -54
- data/lib/solargraph/source_map/node_processor/defs_node.rb +21 -21
- data/lib/solargraph/source_map/node_processor/gvasgn_node.rb +12 -12
- data/lib/solargraph/source_map/node_processor/ivasgn_node.rb +18 -18
- data/lib/solargraph/source_map/node_processor/lvasgn_node.rb +16 -16
- data/lib/solargraph/source_map/node_processor/namespace_node.rb +26 -26
- data/lib/solargraph/source_map/node_processor/orasgn_node.rb +12 -12
- data/lib/solargraph/source_map/node_processor/sclass_node.rb +11 -11
- data/lib/solargraph/source_map/node_processor/send_node.rb +162 -162
- data/lib/solargraph/source_map/node_processor/sym_node.rb +11 -11
- data/lib/solargraph/source_map/region.rb +58 -58
- data/lib/solargraph/version.rb +3 -3
- data/lib/solargraph/views/environment.erb +53 -53
- data/lib/solargraph/workspace.rb +183 -183
- data/lib/solargraph/workspace/config.rb +170 -170
- data/lib/solargraph/yard_map.rb +298 -298
- data/lib/solargraph/yard_map/cache.rb +17 -17
- data/lib/solargraph/yard_map/core_docs.rb +163 -163
- data/lib/solargraph/yard_map/core_gen.rb +76 -76
- data/lib/yard-coregen.rb +16 -16
- data/lib/yard-solargraph.rb +18 -18
- data/solargraph.gemspec +37 -0
- data/travis-bundler.rb +10 -0
- metadata +19 -6
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
class ClassVariable < BaseVariable
|
|
4
|
-
def kind
|
|
5
|
-
Pin::CLASS_VARIABLE
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
class ClassVariable < BaseVariable
|
|
4
|
+
def kind
|
|
5
|
+
Pin::CLASS_VARIABLE
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
class Constant < BaseVariable
|
|
4
|
-
attr_reader :visibility
|
|
5
|
-
|
|
6
|
-
def initialize location, namespace, name, comments, assignment, literal, context, visibility
|
|
7
|
-
super(location, namespace, name, comments, assignment, literal, context)
|
|
8
|
-
@visibility = visibility
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def kind
|
|
12
|
-
Pin::CONSTANT
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def completion_item_kind
|
|
16
|
-
Solargraph::LanguageServer::CompletionItemKinds::CONSTANT
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# @return [Integer]
|
|
20
|
-
def symbol_kind
|
|
21
|
-
LanguageServer::SymbolKinds::CONSTANT
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def path
|
|
25
|
-
return name if namespace.empty?
|
|
26
|
-
"#{namespace}::#{name}"
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
class Constant < BaseVariable
|
|
4
|
+
attr_reader :visibility
|
|
5
|
+
|
|
6
|
+
def initialize location, namespace, name, comments, assignment, literal, context, visibility
|
|
7
|
+
super(location, namespace, name, comments, assignment, literal, context)
|
|
8
|
+
@visibility = visibility
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def kind
|
|
12
|
+
Pin::CONSTANT
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def completion_item_kind
|
|
16
|
+
Solargraph::LanguageServer::CompletionItemKinds::CONSTANT
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @return [Integer]
|
|
20
|
+
def symbol_kind
|
|
21
|
+
LanguageServer::SymbolKinds::CONSTANT
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def path
|
|
25
|
+
return name if namespace.empty?
|
|
26
|
+
"#{namespace}::#{name}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
# @todo Move this stuff. It should be the responsibility of the language server.
|
|
4
|
-
module Conversions
|
|
5
|
-
# @return [Hash]
|
|
6
|
-
def completion_item
|
|
7
|
-
@completion_item ||= {
|
|
8
|
-
label: name,
|
|
9
|
-
kind: completion_item_kind,
|
|
10
|
-
detail: detail,
|
|
11
|
-
data: {
|
|
12
|
-
path: path,
|
|
13
|
-
return_type: return_type.tag,
|
|
14
|
-
location: (location ? location.to_hash : nil),
|
|
15
|
-
deprecated: deprecated?
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# @return [Hash]
|
|
21
|
-
def resolve_completion_item
|
|
22
|
-
if @resolve_completion_item.nil?
|
|
23
|
-
extra = {}
|
|
24
|
-
alldoc = ''
|
|
25
|
-
alldoc += link_documentation unless link_documentation.nil?
|
|
26
|
-
alldoc += "\n\n" unless alldoc.empty?
|
|
27
|
-
alldoc += documentation unless documentation.nil?
|
|
28
|
-
extra[:documentation] = alldoc unless alldoc.empty?
|
|
29
|
-
@resolve_completion_item = completion_item.merge(extra)
|
|
30
|
-
end
|
|
31
|
-
@resolve_completion_item
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# @return [Hash]
|
|
35
|
-
def signature_help
|
|
36
|
-
@signature_help ||= {
|
|
37
|
-
label: name + '(' + parameters.join(', ') + ')',
|
|
38
|
-
documentation: documentation
|
|
39
|
-
}
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# @return [String]
|
|
43
|
-
def detail
|
|
44
|
-
if @detail.nil?
|
|
45
|
-
@detail = ''
|
|
46
|
-
@detail += "(#{parameters.join(', ')}) " unless kind != Pin::METHOD or parameters.empty?
|
|
47
|
-
@detail += "=> #{return_complex_type}" unless return_complex_type.undefined?
|
|
48
|
-
@detail.strip!
|
|
49
|
-
end
|
|
50
|
-
return nil if @detail.empty?
|
|
51
|
-
@detail
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Get a markdown-flavored link to a documentation page.
|
|
55
|
-
#
|
|
56
|
-
# @return [String]
|
|
57
|
-
def link_documentation
|
|
58
|
-
@link_documentation ||= generate_link
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def reset_conversions
|
|
62
|
-
@completion_item = nil
|
|
63
|
-
@resolve_completion_item = nil
|
|
64
|
-
@signature_help = nil
|
|
65
|
-
@detail = nil
|
|
66
|
-
@link_documentation = nil
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
private
|
|
70
|
-
|
|
71
|
-
def generate_link
|
|
72
|
-
this_path = path || return_type.tag
|
|
73
|
-
return nil if this_path.nil? || this_path == 'undefined'
|
|
74
|
-
# return this_path if comments.empty?
|
|
75
|
-
"[#{this_path.gsub('_', '\\\\_')}](solargraph:/document?query=#{URI.escape(this_path)})"
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
# @todo Move this stuff. It should be the responsibility of the language server.
|
|
4
|
+
module Conversions
|
|
5
|
+
# @return [Hash]
|
|
6
|
+
def completion_item
|
|
7
|
+
@completion_item ||= {
|
|
8
|
+
label: name,
|
|
9
|
+
kind: completion_item_kind,
|
|
10
|
+
detail: detail,
|
|
11
|
+
data: {
|
|
12
|
+
path: path,
|
|
13
|
+
return_type: return_type.tag,
|
|
14
|
+
location: (location ? location.to_hash : nil),
|
|
15
|
+
deprecated: deprecated?
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# @return [Hash]
|
|
21
|
+
def resolve_completion_item
|
|
22
|
+
if @resolve_completion_item.nil?
|
|
23
|
+
extra = {}
|
|
24
|
+
alldoc = ''
|
|
25
|
+
alldoc += link_documentation unless link_documentation.nil?
|
|
26
|
+
alldoc += "\n\n" unless alldoc.empty?
|
|
27
|
+
alldoc += documentation unless documentation.nil?
|
|
28
|
+
extra[:documentation] = alldoc unless alldoc.empty?
|
|
29
|
+
@resolve_completion_item = completion_item.merge(extra)
|
|
30
|
+
end
|
|
31
|
+
@resolve_completion_item
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @return [Hash]
|
|
35
|
+
def signature_help
|
|
36
|
+
@signature_help ||= {
|
|
37
|
+
label: name + '(' + parameters.join(', ') + ')',
|
|
38
|
+
documentation: documentation
|
|
39
|
+
}
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @return [String]
|
|
43
|
+
def detail
|
|
44
|
+
if @detail.nil?
|
|
45
|
+
@detail = ''
|
|
46
|
+
@detail += "(#{parameters.join(', ')}) " unless kind != Pin::METHOD or parameters.empty?
|
|
47
|
+
@detail += "=> #{return_complex_type}" unless return_complex_type.undefined?
|
|
48
|
+
@detail.strip!
|
|
49
|
+
end
|
|
50
|
+
return nil if @detail.empty?
|
|
51
|
+
@detail
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Get a markdown-flavored link to a documentation page.
|
|
55
|
+
#
|
|
56
|
+
# @return [String]
|
|
57
|
+
def link_documentation
|
|
58
|
+
@link_documentation ||= generate_link
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def reset_conversions
|
|
62
|
+
@completion_item = nil
|
|
63
|
+
@resolve_completion_item = nil
|
|
64
|
+
@signature_help = nil
|
|
65
|
+
@detail = nil
|
|
66
|
+
@link_documentation = nil
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
private
|
|
70
|
+
|
|
71
|
+
def generate_link
|
|
72
|
+
this_path = path || return_type.tag
|
|
73
|
+
return nil if this_path.nil? || this_path == 'undefined'
|
|
74
|
+
# return this_path if comments.empty?
|
|
75
|
+
"[#{this_path.gsub('_', '\\\\_')}](solargraph:/document?query=#{URI.escape(this_path)})"
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
require 'rdoc'
|
|
2
|
-
require 'reverse_markdown'
|
|
3
|
-
require 'kramdown'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
module Pin
|
|
7
|
-
# A module to add the Pin::Base#documentation method.
|
|
8
|
-
#
|
|
9
|
-
module Documenting
|
|
10
|
-
# @return [String]
|
|
11
|
-
def documentation
|
|
12
|
-
@documentation ||= begin
|
|
13
|
-
html = Kramdown::Document.new(
|
|
14
|
-
normalize_indentation(docstring.to_s),
|
|
15
|
-
input: 'GFM',
|
|
16
|
-
entity_output: :symbolic,
|
|
17
|
-
syntax_highlighter: nil
|
|
18
|
-
).to_html
|
|
19
|
-
ReverseMarkdown.convert(html, github_flavored: true).lines.map(&:rstrip).join("\n")
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
private
|
|
24
|
-
|
|
25
|
-
# @param text [String]
|
|
26
|
-
# @return [String]
|
|
27
|
-
def normalize_indentation text
|
|
28
|
-
text.lines.map { |l| remove_odd_spaces(l).gsub(/^ /, "\t") }.join
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# @param line [String]
|
|
32
|
-
# @return [String]
|
|
33
|
-
def remove_odd_spaces line
|
|
34
|
-
return line unless line.start_with?(' ')
|
|
35
|
-
spaces = line.match(/^ +/)[0].length
|
|
36
|
-
return line unless spaces.odd?
|
|
37
|
-
line[1..-1]
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
1
|
+
require 'rdoc'
|
|
2
|
+
require 'reverse_markdown'
|
|
3
|
+
require 'kramdown'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
module Pin
|
|
7
|
+
# A module to add the Pin::Base#documentation method.
|
|
8
|
+
#
|
|
9
|
+
module Documenting
|
|
10
|
+
# @return [String]
|
|
11
|
+
def documentation
|
|
12
|
+
@documentation ||= begin
|
|
13
|
+
html = Kramdown::Document.new(
|
|
14
|
+
normalize_indentation(docstring.to_s),
|
|
15
|
+
input: 'GFM',
|
|
16
|
+
entity_output: :symbolic,
|
|
17
|
+
syntax_highlighter: nil
|
|
18
|
+
).to_html
|
|
19
|
+
ReverseMarkdown.convert(html, github_flavored: true).lines.map(&:rstrip).join("\n")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
# @param text [String]
|
|
26
|
+
# @return [String]
|
|
27
|
+
def normalize_indentation text
|
|
28
|
+
text.lines.map { |l| remove_odd_spaces(l).gsub(/^ /, "\t") }.join
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @param line [String]
|
|
32
|
+
# @return [String]
|
|
33
|
+
def remove_odd_spaces line
|
|
34
|
+
return line unless line.start_with?(' ')
|
|
35
|
+
spaces = line.match(/^ +/)[0].length
|
|
36
|
+
return line unless spaces.odd?
|
|
37
|
+
line[1..-1]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
# DuckMethod pins are used to add completion items for type tags that
|
|
4
|
-
# use duck typing, e.g., `@param file [#read]`.
|
|
5
|
-
#
|
|
6
|
-
class DuckMethod < Pin::Method
|
|
7
|
-
# @param location [Solargraph::Location]
|
|
8
|
-
# @param name [String]
|
|
9
|
-
def initialize location, name
|
|
10
|
-
super(location, '', name, nil, :instance, :public, [])
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
# DuckMethod pins are used to add completion items for type tags that
|
|
4
|
+
# use duck typing, e.g., `@param file [#read]`.
|
|
5
|
+
#
|
|
6
|
+
class DuckMethod < Pin::Method
|
|
7
|
+
# @param location [Solargraph::Location]
|
|
8
|
+
# @param name [String]
|
|
9
|
+
def initialize location, name
|
|
10
|
+
super(location, '', name, nil, :instance, :public, [])
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
class GlobalVariable < BaseVariable
|
|
4
|
-
def kind
|
|
5
|
-
Pin::GLOBAL_VARIABLE
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
class GlobalVariable < BaseVariable
|
|
4
|
+
def kind
|
|
5
|
+
Pin::GLOBAL_VARIABLE
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
class InstanceVariable < BaseVariable
|
|
4
|
-
def kind
|
|
5
|
-
Pin::INSTANCE_VARIABLE
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
class InstanceVariable < BaseVariable
|
|
4
|
+
def kind
|
|
5
|
+
Pin::INSTANCE_VARIABLE
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
class Keyword < Base
|
|
4
|
-
def initialize name
|
|
5
|
-
@name = name
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def name
|
|
9
|
-
@name
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def kind
|
|
13
|
-
Solargraph::Pin::KEYWORD
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
class Keyword < Base
|
|
4
|
+
def initialize name
|
|
5
|
+
@name = name
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def name
|
|
9
|
+
@name
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def kind
|
|
13
|
+
Solargraph::Pin::KEYWORD
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module Pin
|
|
3
|
-
class LocalVariable < BaseVariable
|
|
4
|
-
include Localized
|
|
5
|
-
|
|
6
|
-
def initialize location, namespace, name, comments, assignment, literal, context, block, presence
|
|
7
|
-
super(location, namespace, name, comments, assignment, literal, context)
|
|
8
|
-
@block = block
|
|
9
|
-
@presence = presence
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def kind
|
|
13
|
-
Pin::LOCAL_VARIABLE
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def try_merge! pin
|
|
17
|
-
return false unless super
|
|
18
|
-
@presence = pin.presence
|
|
19
|
-
true
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module Pin
|
|
3
|
+
class LocalVariable < BaseVariable
|
|
4
|
+
include Localized
|
|
5
|
+
|
|
6
|
+
def initialize location, namespace, name, comments, assignment, literal, context, block, presence
|
|
7
|
+
super(location, namespace, name, comments, assignment, literal, context)
|
|
8
|
+
@block = block
|
|
9
|
+
@presence = presence
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def kind
|
|
13
|
+
Pin::LOCAL_VARIABLE
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def try_merge! pin
|
|
17
|
+
return false unless super
|
|
18
|
+
@presence = pin.presence
|
|
19
|
+
true
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|