solargraph 0.44.2 → 0.46.0
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/.github/workflows/rspec.yml +41 -0
- data/.gitignore +9 -9
- data/.rspec +2 -2
- data/.travis.yml +19 -19
- data/CHANGELOG.md +1115 -1088
- data/Gemfile +0 -0
- data/LICENSE +0 -0
- data/README.md +128 -120
- data/Rakefile +0 -0
- data/SPONSORS.md +18 -15
- data/bin/solargraph +0 -0
- data/lib/solargraph/api_map/bundler_methods.rb +22 -22
- data/lib/solargraph/api_map/cache.rb +70 -70
- data/lib/solargraph/api_map/source_to_yard.rb +81 -81
- data/lib/solargraph/api_map/store.rb +256 -256
- data/lib/solargraph/api_map.rb +686 -681
- data/lib/solargraph/bench.rb +27 -27
- data/lib/solargraph/compat.rb +37 -37
- data/lib/solargraph/complex_type/type_methods.rb +130 -130
- data/lib/solargraph/complex_type/unique_type.rb +75 -75
- data/lib/solargraph/complex_type.rb +221 -221
- data/lib/solargraph/convention/base.rb +33 -33
- data/lib/solargraph/convention/gemfile.rb +15 -15
- data/lib/solargraph/convention/gemspec.rb +22 -22
- data/lib/solargraph/convention/rspec.rb +30 -21
- data/lib/solargraph/convention.rb +47 -47
- data/lib/solargraph/converters/dd.rb +12 -12
- data/lib/solargraph/converters/dl.rb +12 -12
- data/lib/solargraph/converters/dt.rb +12 -12
- data/lib/solargraph/converters/misc.rb +1 -1
- data/lib/solargraph/diagnostics/base.rb +29 -29
- data/lib/solargraph/diagnostics/require_not_found.rb +53 -37
- data/lib/solargraph/diagnostics/rubocop.rb +98 -98
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +63 -63
- data/lib/solargraph/diagnostics/severities.rb +15 -15
- data/lib/solargraph/diagnostics/type_check.rb +54 -54
- data/lib/solargraph/diagnostics/update_errors.rb +41 -41
- data/lib/solargraph/diagnostics.rb +55 -55
- data/lib/solargraph/documentor.rb +76 -76
- data/lib/solargraph/environ.rb +45 -45
- data/lib/solargraph/language_server/completion_item_kinds.rb +35 -35
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- data/lib/solargraph/language_server/host/cataloger.rb +56 -56
- data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
- data/lib/solargraph/language_server/host/dispatch.rb +111 -111
- data/lib/solargraph/language_server/host/message_worker.rb +59 -59
- data/lib/solargraph/language_server/host/sources.rb +156 -156
- data/lib/solargraph/language_server/host.rb +865 -865
- data/lib/solargraph/language_server/message/base.rb +89 -89
- data/lib/solargraph/language_server/message/cancel_request.rb +13 -13
- data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
- data/lib/solargraph/language_server/message/client.rb +11 -11
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -58
- data/lib/solargraph/language_server/message/completion_item.rb +11 -11
- data/lib/solargraph/language_server/message/exit_notification.rb +13 -13
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +100 -100
- data/lib/solargraph/language_server/message/extended/document.rb +20 -20
- data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
- data/lib/solargraph/language_server/message/extended/download_core.rb +23 -23
- data/lib/solargraph/language_server/message/extended/environment.rb +25 -25
- data/lib/solargraph/language_server/message/extended/search.rb +20 -20
- data/lib/solargraph/language_server/message/extended.rb +21 -21
- data/lib/solargraph/language_server/message/initialize.rb +162 -162
- data/lib/solargraph/language_server/message/initialized.rb +27 -27
- data/lib/solargraph/language_server/message/method_not_found.rb +16 -16
- data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -14
- data/lib/solargraph/language_server/message/shutdown.rb +13 -13
- data/lib/solargraph/language_server/message/text_document/base.rb +19 -19
- data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/completion.rb +59 -59
- data/lib/solargraph/language_server/message/text_document/definition.rb +38 -38
- data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +23 -23
- data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +126 -126
- data/lib/solargraph/language_server/message/text_document/hover.rb +54 -44
- data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -34
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
- data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +29 -29
- data/lib/solargraph/language_server/message/text_document.rb +28 -28
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +30 -30
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +33 -33
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
- data/lib/solargraph/language_server/message/workspace.rb +14 -14
- data/lib/solargraph/language_server/message.rb +93 -93
- data/lib/solargraph/language_server/message_types.rb +14 -14
- data/lib/solargraph/language_server/request.rb +24 -24
- data/lib/solargraph/language_server/symbol_kinds.rb +36 -36
- data/lib/solargraph/language_server/transport/adapter.rb +53 -53
- data/lib/solargraph/language_server/transport/data_reader.rb +72 -72
- data/lib/solargraph/language_server/transport.rb +13 -13
- data/lib/solargraph/language_server/uri_helpers.rb +49 -49
- data/lib/solargraph/language_server.rb +19 -19
- data/lib/solargraph/library.rb +546 -546
- data/lib/solargraph/location.rb +37 -37
- data/lib/solargraph/logging.rb +27 -27
- data/lib/solargraph/page.rb +83 -83
- data/lib/solargraph/parser/comment_ripper.rb +52 -52
- data/lib/solargraph/parser/legacy/class_methods.rb +135 -140
- data/lib/solargraph/parser/legacy/flawed_builder.rb +16 -16
- data/lib/solargraph/parser/legacy/node_chainer.rb +148 -148
- data/lib/solargraph/parser/legacy/node_methods.rb +325 -325
- data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/args_node.rb +35 -35
- data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/legacy/node_processors/block_node.rb +42 -42
- data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +25 -25
- data/lib/solargraph/parser/legacy/node_processors/cvasgn_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/def_node.rb +63 -63
- data/lib/solargraph/parser/legacy/node_processors/defs_node.rb +36 -36
- data/lib/solargraph/parser/legacy/node_processors/gvasgn_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +38 -38
- data/lib/solargraph/parser/legacy/node_processors/lvasgn_node.rb +28 -28
- data/lib/solargraph/parser/legacy/node_processors/namespace_node.rb +39 -39
- data/lib/solargraph/parser/legacy/node_processors/orasgn_node.rb +16 -16
- data/lib/solargraph/parser/legacy/node_processors/resbody_node.rb +36 -36
- data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +21 -21
- data/lib/solargraph/parser/legacy/node_processors/send_node.rb +257 -257
- data/lib/solargraph/parser/legacy/node_processors/sym_node.rb +18 -18
- data/lib/solargraph/parser/legacy/node_processors.rb +54 -54
- data/lib/solargraph/parser/legacy.rb +12 -12
- data/lib/solargraph/parser/node_methods.rb +43 -43
- data/lib/solargraph/parser/node_processor/base.rb +77 -77
- data/lib/solargraph/parser/node_processor.rb +43 -43
- data/lib/solargraph/parser/region.rb +66 -66
- data/lib/solargraph/parser/rubyvm/class_methods.rb +144 -155
- data/lib/solargraph/parser/rubyvm/node_chainer.rb +160 -160
- data/lib/solargraph/parser/rubyvm/node_methods.rb +315 -315
- data/lib/solargraph/parser/rubyvm/node_processors/alias_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +85 -85
- data/lib/solargraph/parser/rubyvm/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +42 -42
- data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +22 -22
- data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +63 -64
- data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +57 -57
- data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +38 -38
- data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +39 -39
- data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +20 -20
- data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +27 -27
- data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +39 -39
- data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +26 -26
- data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +45 -45
- data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +21 -21
- data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +277 -277
- data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +18 -18
- data/lib/solargraph/parser/rubyvm/node_processors.rb +63 -62
- data/lib/solargraph/parser/rubyvm.rb +40 -40
- data/lib/solargraph/parser/snippet.rb +13 -13
- data/lib/solargraph/parser.rb +26 -26
- data/lib/solargraph/pin/base.rb +296 -296
- data/lib/solargraph/pin/base_variable.rb +84 -84
- data/lib/solargraph/pin/block.rb +72 -72
- data/lib/solargraph/pin/class_variable.rb +8 -8
- data/lib/solargraph/pin/closure.rb +37 -37
- data/lib/solargraph/pin/common.rb +70 -70
- data/lib/solargraph/pin/constant.rb +43 -43
- data/lib/solargraph/pin/conversions.rb +96 -96
- data/lib/solargraph/pin/documenting.rb +105 -105
- data/lib/solargraph/pin/duck_method.rb +16 -16
- data/lib/solargraph/pin/global_variable.rb +8 -8
- data/lib/solargraph/pin/instance_variable.rb +30 -30
- data/lib/solargraph/pin/keyword.rb +15 -15
- data/lib/solargraph/pin/keyword_param.rb +8 -8
- data/lib/solargraph/pin/local_variable.rb +55 -55
- data/lib/solargraph/pin/method.rb +245 -245
- data/lib/solargraph/pin/method_alias.rb +31 -31
- data/lib/solargraph/pin/namespace.rb +91 -91
- data/lib/solargraph/pin/parameter.rb +201 -206
- data/lib/solargraph/pin/proxy_type.rb +29 -29
- data/lib/solargraph/pin/reference/extend.rb +10 -10
- data/lib/solargraph/pin/reference/include.rb +10 -10
- data/lib/solargraph/pin/reference/override.rb +29 -29
- data/lib/solargraph/pin/reference/prepend.rb +10 -10
- data/lib/solargraph/pin/reference/require.rb +14 -14
- data/lib/solargraph/pin/reference/superclass.rb +10 -10
- data/lib/solargraph/pin/reference.rb +14 -14
- data/lib/solargraph/pin/search.rb +56 -0
- data/lib/solargraph/pin/singleton.rb +11 -11
- data/lib/solargraph/pin/symbol.rb +47 -47
- data/lib/solargraph/pin.rb +37 -36
- data/lib/solargraph/position.rb +100 -100
- data/lib/solargraph/range.rb +95 -95
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +226 -226
- data/lib/solargraph/source/chain/block_variable.rb +13 -13
- data/lib/solargraph/source/chain/call.rb +204 -204
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +75 -75
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +28 -28
- data/lib/solargraph/source/chain/head.rb +19 -19
- data/lib/solargraph/source/chain/instance_variable.rb +13 -13
- data/lib/solargraph/source/chain/link.rb +71 -71
- data/lib/solargraph/source/chain/literal.rb +23 -23
- data/lib/solargraph/source/chain/or.rb +23 -23
- data/lib/solargraph/source/chain/q_call.rb +11 -11
- data/lib/solargraph/source/chain/variable.rb +13 -13
- data/lib/solargraph/source/chain/z_super.rb +30 -30
- data/lib/solargraph/source/chain.rb +164 -164
- data/lib/solargraph/source/change.rb +79 -79
- data/lib/solargraph/source/cursor.rb +164 -164
- data/lib/solargraph/source/source_chainer.rb +191 -191
- data/lib/solargraph/source/updater.rb +54 -54
- data/lib/solargraph/source.rb +522 -522
- data/lib/solargraph/source_map/clip.rb +224 -224
- data/lib/solargraph/source_map/completion.rb +23 -23
- data/lib/solargraph/source_map/mapper.rb +212 -212
- data/lib/solargraph/source_map.rb +180 -189
- data/lib/solargraph/type_checker/checks.rb +99 -99
- data/lib/solargraph/type_checker/param_def.rb +35 -35
- data/lib/solargraph/type_checker/problem.rb +32 -32
- data/lib/solargraph/type_checker/rules.rb +57 -57
- data/lib/solargraph/type_checker.rb +543 -510
- data/lib/solargraph/version.rb +5 -5
- data/lib/solargraph/views/environment.erb +58 -58
- data/lib/solargraph/workspace/config.rb +231 -231
- data/lib/solargraph/workspace.rb +215 -214
- data/lib/solargraph/yard_map/cache.rb +19 -19
- data/lib/solargraph/yard_map/core_docs.rb +170 -170
- data/lib/solargraph/yard_map/core_fills.rb +208 -203
- data/lib/solargraph/yard_map/core_gen.rb +76 -76
- data/lib/solargraph/yard_map/helpers.rb +16 -16
- data/lib/solargraph/yard_map/mapper/to_constant.rb +25 -25
- data/lib/solargraph/yard_map/mapper/to_method.rb +78 -78
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +27 -27
- data/lib/solargraph/yard_map/mapper.rb +77 -77
- data/lib/solargraph/yard_map/rdoc_to_yard.rb +140 -140
- data/lib/solargraph/yard_map/stdlib_fills.rb +43 -43
- data/lib/solargraph/yard_map/to_method.rb +79 -79
- data/lib/solargraph/yard_map.rb +460 -443
- data/lib/solargraph.rb +69 -69
- data/lib/yard-solargraph.rb +33 -33
- data/solargraph.gemspec +0 -0
- metadata +14 -12
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference
|
|
6
|
-
class Extend < Reference
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference
|
|
6
|
+
class Extend < Reference
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference
|
|
6
|
-
class Include < Reference
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference
|
|
6
|
+
class Include < Reference
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference
|
|
6
|
-
class Override < Reference
|
|
7
|
-
# @return [Array<YARD::Tags::Tag>]
|
|
8
|
-
attr_reader :tags
|
|
9
|
-
|
|
10
|
-
# @return [Array<Symbol>]
|
|
11
|
-
attr_reader :delete
|
|
12
|
-
|
|
13
|
-
def initialize location, name, tags, delete = []
|
|
14
|
-
super(location: location, name: name)
|
|
15
|
-
@tags = tags
|
|
16
|
-
@delete = delete
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def self.method_return name, *tags, delete: []
|
|
20
|
-
new(nil, name, [YARD::Tags::Tag.new('return', nil, tags)], delete)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.from_comment name, comment
|
|
24
|
-
new(nil, name, Solargraph::Source.parse_docstring(comment).to_docstring.tags)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference
|
|
6
|
+
class Override < Reference
|
|
7
|
+
# @return [Array<YARD::Tags::Tag>]
|
|
8
|
+
attr_reader :tags
|
|
9
|
+
|
|
10
|
+
# @return [Array<Symbol>]
|
|
11
|
+
attr_reader :delete
|
|
12
|
+
|
|
13
|
+
def initialize location, name, tags, delete = []
|
|
14
|
+
super(location: location, name: name)
|
|
15
|
+
@tags = tags
|
|
16
|
+
@delete = delete
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.method_return name, *tags, delete: []
|
|
20
|
+
new(nil, name, [YARD::Tags::Tag.new('return', nil, tags)], delete)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.from_comment name, comment
|
|
24
|
+
new(nil, name, Solargraph::Source.parse_docstring(comment).to_docstring.tags)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference
|
|
6
|
-
class Prepend < Reference
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference
|
|
6
|
+
class Prepend < Reference
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference
|
|
6
|
-
class Require < Reference
|
|
7
|
-
def initialize location, name
|
|
8
|
-
# super(location, '', name)
|
|
9
|
-
super(location: location, name: name)
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference
|
|
6
|
+
class Require < Reference
|
|
7
|
+
def initialize location, name
|
|
8
|
+
# super(location, '', name)
|
|
9
|
+
super(location: location, name: name)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference
|
|
6
|
-
class Superclass < Reference
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference
|
|
6
|
+
class Superclass < Reference
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Reference < Base
|
|
6
|
-
autoload :Require, 'solargraph/pin/reference/require'
|
|
7
|
-
autoload :Superclass, 'solargraph/pin/reference/superclass'
|
|
8
|
-
autoload :Include, 'solargraph/pin/reference/include'
|
|
9
|
-
autoload :Prepend, 'solargraph/pin/reference/prepend'
|
|
10
|
-
autoload :Extend, 'solargraph/pin/reference/extend'
|
|
11
|
-
autoload :Override, 'solargraph/pin/reference/override'
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Reference < Base
|
|
6
|
+
autoload :Require, 'solargraph/pin/reference/require'
|
|
7
|
+
autoload :Superclass, 'solargraph/pin/reference/superclass'
|
|
8
|
+
autoload :Include, 'solargraph/pin/reference/include'
|
|
9
|
+
autoload :Prepend, 'solargraph/pin/reference/prepend'
|
|
10
|
+
autoload :Extend, 'solargraph/pin/reference/extend'
|
|
11
|
+
autoload :Override, 'solargraph/pin/reference/override'
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'jaro_winkler'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
module Pin
|
|
7
|
+
class Search
|
|
8
|
+
class Result
|
|
9
|
+
# @return [Float]
|
|
10
|
+
attr_reader :match
|
|
11
|
+
|
|
12
|
+
# @return [Pin::Base]
|
|
13
|
+
attr_reader :pin
|
|
14
|
+
|
|
15
|
+
def initialize match, pin
|
|
16
|
+
@match = match
|
|
17
|
+
@pin = pin
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @param pins [Array<Pin::Base>]
|
|
22
|
+
# @param query [String]
|
|
23
|
+
def initialize pins, query
|
|
24
|
+
@pins = pins
|
|
25
|
+
@query = query
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @return [Array<Pin::Base>]
|
|
29
|
+
def results
|
|
30
|
+
@results ||= do_query
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
# @return [Array<Pin::Base>]
|
|
36
|
+
def do_query
|
|
37
|
+
return @pins if @query.nil? || @query.empty?
|
|
38
|
+
@pins.map do |pin|
|
|
39
|
+
match = [fuzzy_string_match(pin.path, @query), fuzzy_string_match(pin.name, @query)].max
|
|
40
|
+
Result.new(match, pin) if match > 0.7
|
|
41
|
+
end
|
|
42
|
+
.compact
|
|
43
|
+
.sort { |a, b| b.match <=> a.match }
|
|
44
|
+
.map(&:pin)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @param str1 [String]
|
|
48
|
+
# @param str2 [String]
|
|
49
|
+
# @return [Float]
|
|
50
|
+
def fuzzy_string_match str1, str2
|
|
51
|
+
return (1.0 + (str2.length.to_f / str1.length.to_f)) if str1.downcase.include?(str2.downcase)
|
|
52
|
+
JaroWinkler.distance(str1, str2, ignore_case: true)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Singleton < Closure
|
|
6
|
-
def initialize name: '', location: nil, closure: nil
|
|
7
|
-
super
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Singleton < Closure
|
|
6
|
+
def initialize name: '', location: nil, closure: nil
|
|
7
|
+
super
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Pin
|
|
5
|
-
class Symbol < Base
|
|
6
|
-
# @param location [Solargraph::Location]
|
|
7
|
-
# @param name [String]
|
|
8
|
-
def initialize location, name
|
|
9
|
-
super(location: location, name: name)
|
|
10
|
-
# @name = name
|
|
11
|
-
# @location = location
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def namespace
|
|
15
|
-
''
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def path
|
|
19
|
-
''
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def completion_item_kind
|
|
23
|
-
Solargraph::LanguageServer::CompletionItemKinds::KEYWORD
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def comments
|
|
27
|
-
''
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def return_type
|
|
31
|
-
@return_type ||= Solargraph::ComplexType::SYMBOL
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def directives
|
|
35
|
-
[]
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def visibility
|
|
39
|
-
:public
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def deprecated?
|
|
43
|
-
false
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Pin
|
|
5
|
+
class Symbol < Base
|
|
6
|
+
# @param location [Solargraph::Location]
|
|
7
|
+
# @param name [String]
|
|
8
|
+
def initialize location, name
|
|
9
|
+
super(location: location, name: name)
|
|
10
|
+
# @name = name
|
|
11
|
+
# @location = location
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def namespace
|
|
15
|
+
''
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def path
|
|
19
|
+
''
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def completion_item_kind
|
|
23
|
+
Solargraph::LanguageServer::CompletionItemKinds::KEYWORD
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def comments
|
|
27
|
+
''
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def return_type
|
|
31
|
+
@return_type ||= Solargraph::ComplexType::SYMBOL
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def directives
|
|
35
|
+
[]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def visibility
|
|
39
|
+
:public
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def deprecated?
|
|
43
|
+
false
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/solargraph/pin.rb
CHANGED
|
@@ -1,36 +1,37 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'yard'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
# The namespace for pins used in maps.
|
|
7
|
-
#
|
|
8
|
-
module Pin
|
|
9
|
-
autoload :Common, 'solargraph/pin/common'
|
|
10
|
-
autoload :Conversions, 'solargraph/pin/conversions'
|
|
11
|
-
autoload :Base, 'solargraph/pin/base'
|
|
12
|
-
autoload :Method, 'solargraph/pin/method'
|
|
13
|
-
autoload :MethodAlias, 'solargraph/pin/method_alias'
|
|
14
|
-
autoload :BaseVariable, 'solargraph/pin/base_variable'
|
|
15
|
-
autoload :InstanceVariable, 'solargraph/pin/instance_variable'
|
|
16
|
-
autoload :ClassVariable, 'solargraph/pin/class_variable'
|
|
17
|
-
autoload :LocalVariable, 'solargraph/pin/local_variable'
|
|
18
|
-
autoload :GlobalVariable, 'solargraph/pin/global_variable'
|
|
19
|
-
autoload :Constant, 'solargraph/pin/constant'
|
|
20
|
-
autoload :Symbol, 'solargraph/pin/symbol'
|
|
21
|
-
autoload :Closure, 'solargraph/pin/closure'
|
|
22
|
-
autoload :Namespace, 'solargraph/pin/namespace'
|
|
23
|
-
autoload :Keyword, 'solargraph/pin/keyword'
|
|
24
|
-
autoload :Parameter, 'solargraph/pin/parameter'
|
|
25
|
-
autoload :Reference, 'solargraph/pin/reference'
|
|
26
|
-
autoload :Documenting, 'solargraph/pin/documenting'
|
|
27
|
-
autoload :Block, 'solargraph/pin/block'
|
|
28
|
-
autoload :Localized, 'solargraph/pin/localized'
|
|
29
|
-
autoload :ProxyType, 'solargraph/pin/proxy_type'
|
|
30
|
-
autoload :DuckMethod, 'solargraph/pin/duck_method'
|
|
31
|
-
autoload :Singleton, 'solargraph/pin/singleton'
|
|
32
|
-
autoload :KeywordParam, 'solargraph/pin/keyword_param'
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'yard'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
# The namespace for pins used in maps.
|
|
7
|
+
#
|
|
8
|
+
module Pin
|
|
9
|
+
autoload :Common, 'solargraph/pin/common'
|
|
10
|
+
autoload :Conversions, 'solargraph/pin/conversions'
|
|
11
|
+
autoload :Base, 'solargraph/pin/base'
|
|
12
|
+
autoload :Method, 'solargraph/pin/method'
|
|
13
|
+
autoload :MethodAlias, 'solargraph/pin/method_alias'
|
|
14
|
+
autoload :BaseVariable, 'solargraph/pin/base_variable'
|
|
15
|
+
autoload :InstanceVariable, 'solargraph/pin/instance_variable'
|
|
16
|
+
autoload :ClassVariable, 'solargraph/pin/class_variable'
|
|
17
|
+
autoload :LocalVariable, 'solargraph/pin/local_variable'
|
|
18
|
+
autoload :GlobalVariable, 'solargraph/pin/global_variable'
|
|
19
|
+
autoload :Constant, 'solargraph/pin/constant'
|
|
20
|
+
autoload :Symbol, 'solargraph/pin/symbol'
|
|
21
|
+
autoload :Closure, 'solargraph/pin/closure'
|
|
22
|
+
autoload :Namespace, 'solargraph/pin/namespace'
|
|
23
|
+
autoload :Keyword, 'solargraph/pin/keyword'
|
|
24
|
+
autoload :Parameter, 'solargraph/pin/parameter'
|
|
25
|
+
autoload :Reference, 'solargraph/pin/reference'
|
|
26
|
+
autoload :Documenting, 'solargraph/pin/documenting'
|
|
27
|
+
autoload :Block, 'solargraph/pin/block'
|
|
28
|
+
autoload :Localized, 'solargraph/pin/localized'
|
|
29
|
+
autoload :ProxyType, 'solargraph/pin/proxy_type'
|
|
30
|
+
autoload :DuckMethod, 'solargraph/pin/duck_method'
|
|
31
|
+
autoload :Singleton, 'solargraph/pin/singleton'
|
|
32
|
+
autoload :KeywordParam, 'solargraph/pin/keyword_param'
|
|
33
|
+
autoload :Search, 'solargraph/pin/search'
|
|
34
|
+
|
|
35
|
+
ROOT_PIN = Pin::Namespace.new(type: :class, name: '', closure: nil)
|
|
36
|
+
end
|
|
37
|
+
end
|
data/lib/solargraph/position.rb
CHANGED
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
# The zero-based line and column numbers of a position in a string.
|
|
5
|
-
#
|
|
6
|
-
class Position
|
|
7
|
-
# @return [Integer]
|
|
8
|
-
attr_reader :line
|
|
9
|
-
|
|
10
|
-
# @return [Integer]
|
|
11
|
-
attr_reader :character
|
|
12
|
-
|
|
13
|
-
alias column character
|
|
14
|
-
|
|
15
|
-
# @param line [Integer]
|
|
16
|
-
# @param character [Integer]
|
|
17
|
-
def initialize line, character
|
|
18
|
-
@line = line
|
|
19
|
-
@character = character
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Get a hash of the position. This representation is suitable for use in
|
|
23
|
-
# the language server protocol.
|
|
24
|
-
#
|
|
25
|
-
# @return [Hash]
|
|
26
|
-
def to_hash
|
|
27
|
-
{
|
|
28
|
-
line: line,
|
|
29
|
-
character: character
|
|
30
|
-
}
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def inspect
|
|
34
|
-
"#<#{self.class} #{line}, #{character}>"
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Get a numeric offset for the specified text and position.
|
|
38
|
-
#
|
|
39
|
-
# @param text [String]
|
|
40
|
-
# @param position [Position]
|
|
41
|
-
# @return [Integer]
|
|
42
|
-
def self.to_offset text, position
|
|
43
|
-
return 0 if text.empty?
|
|
44
|
-
text.lines[0...position.line].sum(&:length) + position.character
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Get a numeric offset for the specified text and a position identified
|
|
48
|
-
# by its line and character.
|
|
49
|
-
#
|
|
50
|
-
# @param text [String]
|
|
51
|
-
# @param line [Integer]
|
|
52
|
-
# @param character [Integer]
|
|
53
|
-
# @return [Integer]
|
|
54
|
-
def self.line_char_to_offset text, line, character
|
|
55
|
-
to_offset(text, Position.new(line, character))
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Get a position for the specified text and offset.
|
|
59
|
-
#
|
|
60
|
-
# @param text [String]
|
|
61
|
-
# @param offset [Integer]
|
|
62
|
-
# @return [Position]
|
|
63
|
-
def self.from_offset text, offset
|
|
64
|
-
cursor = 0
|
|
65
|
-
line = 0
|
|
66
|
-
character = nil
|
|
67
|
-
text.lines.each do |l|
|
|
68
|
-
line_length = l.length
|
|
69
|
-
char_length = l.chomp.length
|
|
70
|
-
if cursor + char_length >= offset
|
|
71
|
-
character = offset - cursor
|
|
72
|
-
break
|
|
73
|
-
end
|
|
74
|
-
cursor += line_length
|
|
75
|
-
line += 1
|
|
76
|
-
end
|
|
77
|
-
character = 0 if character.nil? and (cursor - offset).between?(0, 1)
|
|
78
|
-
raise InvalidOffsetError if character.nil?
|
|
79
|
-
Position.new(line, character)
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# A helper method for generating positions from arrays of integers. The
|
|
83
|
-
# original parameter is returned if it is already a position.
|
|
84
|
-
#
|
|
85
|
-
# @raise [ArgumentError] if the object cannot be converted to a position.
|
|
86
|
-
#
|
|
87
|
-
# @param object [Position, Array(Integer, Integer)]
|
|
88
|
-
# @return [Position]
|
|
89
|
-
def self.normalize object
|
|
90
|
-
return object if object.is_a?(Position)
|
|
91
|
-
return Position.new(object[0], object[1]) if object.is_a?(Array)
|
|
92
|
-
raise ArgumentError, "Unable to convert #{object.class} to Position"
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def == other
|
|
96
|
-
return false unless other.is_a?(Position)
|
|
97
|
-
line == other.line and character == other.character
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
# The zero-based line and column numbers of a position in a string.
|
|
5
|
+
#
|
|
6
|
+
class Position
|
|
7
|
+
# @return [Integer]
|
|
8
|
+
attr_reader :line
|
|
9
|
+
|
|
10
|
+
# @return [Integer]
|
|
11
|
+
attr_reader :character
|
|
12
|
+
|
|
13
|
+
alias column character
|
|
14
|
+
|
|
15
|
+
# @param line [Integer]
|
|
16
|
+
# @param character [Integer]
|
|
17
|
+
def initialize line, character
|
|
18
|
+
@line = line
|
|
19
|
+
@character = character
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Get a hash of the position. This representation is suitable for use in
|
|
23
|
+
# the language server protocol.
|
|
24
|
+
#
|
|
25
|
+
# @return [Hash]
|
|
26
|
+
def to_hash
|
|
27
|
+
{
|
|
28
|
+
line: line,
|
|
29
|
+
character: character
|
|
30
|
+
}
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def inspect
|
|
34
|
+
"#<#{self.class} #{line}, #{character}>"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Get a numeric offset for the specified text and position.
|
|
38
|
+
#
|
|
39
|
+
# @param text [String]
|
|
40
|
+
# @param position [Position]
|
|
41
|
+
# @return [Integer]
|
|
42
|
+
def self.to_offset text, position
|
|
43
|
+
return 0 if text.empty?
|
|
44
|
+
text.lines[0...position.line].sum(&:length) + position.character
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Get a numeric offset for the specified text and a position identified
|
|
48
|
+
# by its line and character.
|
|
49
|
+
#
|
|
50
|
+
# @param text [String]
|
|
51
|
+
# @param line [Integer]
|
|
52
|
+
# @param character [Integer]
|
|
53
|
+
# @return [Integer]
|
|
54
|
+
def self.line_char_to_offset text, line, character
|
|
55
|
+
to_offset(text, Position.new(line, character))
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Get a position for the specified text and offset.
|
|
59
|
+
#
|
|
60
|
+
# @param text [String]
|
|
61
|
+
# @param offset [Integer]
|
|
62
|
+
# @return [Position]
|
|
63
|
+
def self.from_offset text, offset
|
|
64
|
+
cursor = 0
|
|
65
|
+
line = 0
|
|
66
|
+
character = nil
|
|
67
|
+
text.lines.each do |l|
|
|
68
|
+
line_length = l.length
|
|
69
|
+
char_length = l.chomp.length
|
|
70
|
+
if cursor + char_length >= offset
|
|
71
|
+
character = offset - cursor
|
|
72
|
+
break
|
|
73
|
+
end
|
|
74
|
+
cursor += line_length
|
|
75
|
+
line += 1
|
|
76
|
+
end
|
|
77
|
+
character = 0 if character.nil? and (cursor - offset).between?(0, 1)
|
|
78
|
+
raise InvalidOffsetError if character.nil?
|
|
79
|
+
Position.new(line, character)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# A helper method for generating positions from arrays of integers. The
|
|
83
|
+
# original parameter is returned if it is already a position.
|
|
84
|
+
#
|
|
85
|
+
# @raise [ArgumentError] if the object cannot be converted to a position.
|
|
86
|
+
#
|
|
87
|
+
# @param object [Position, Array(Integer, Integer)]
|
|
88
|
+
# @return [Position]
|
|
89
|
+
def self.normalize object
|
|
90
|
+
return object if object.is_a?(Position)
|
|
91
|
+
return Position.new(object[0], object[1]) if object.is_a?(Array)
|
|
92
|
+
raise ArgumentError, "Unable to convert #{object.class} to Position"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def == other
|
|
96
|
+
return false unless other.is_a?(Position)
|
|
97
|
+
line == other.line and character == other.character
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|