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.
Files changed (246) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yml +41 -0
  3. data/.gitignore +9 -9
  4. data/.rspec +2 -2
  5. data/.travis.yml +19 -19
  6. data/CHANGELOG.md +1115 -1088
  7. data/Gemfile +0 -0
  8. data/LICENSE +0 -0
  9. data/README.md +128 -120
  10. data/Rakefile +0 -0
  11. data/SPONSORS.md +18 -15
  12. data/bin/solargraph +0 -0
  13. data/lib/solargraph/api_map/bundler_methods.rb +22 -22
  14. data/lib/solargraph/api_map/cache.rb +70 -70
  15. data/lib/solargraph/api_map/source_to_yard.rb +81 -81
  16. data/lib/solargraph/api_map/store.rb +256 -256
  17. data/lib/solargraph/api_map.rb +686 -681
  18. data/lib/solargraph/bench.rb +27 -27
  19. data/lib/solargraph/compat.rb +37 -37
  20. data/lib/solargraph/complex_type/type_methods.rb +130 -130
  21. data/lib/solargraph/complex_type/unique_type.rb +75 -75
  22. data/lib/solargraph/complex_type.rb +221 -221
  23. data/lib/solargraph/convention/base.rb +33 -33
  24. data/lib/solargraph/convention/gemfile.rb +15 -15
  25. data/lib/solargraph/convention/gemspec.rb +22 -22
  26. data/lib/solargraph/convention/rspec.rb +30 -21
  27. data/lib/solargraph/convention.rb +47 -47
  28. data/lib/solargraph/converters/dd.rb +12 -12
  29. data/lib/solargraph/converters/dl.rb +12 -12
  30. data/lib/solargraph/converters/dt.rb +12 -12
  31. data/lib/solargraph/converters/misc.rb +1 -1
  32. data/lib/solargraph/diagnostics/base.rb +29 -29
  33. data/lib/solargraph/diagnostics/require_not_found.rb +53 -37
  34. data/lib/solargraph/diagnostics/rubocop.rb +98 -98
  35. data/lib/solargraph/diagnostics/rubocop_helpers.rb +63 -63
  36. data/lib/solargraph/diagnostics/severities.rb +15 -15
  37. data/lib/solargraph/diagnostics/type_check.rb +54 -54
  38. data/lib/solargraph/diagnostics/update_errors.rb +41 -41
  39. data/lib/solargraph/diagnostics.rb +55 -55
  40. data/lib/solargraph/documentor.rb +76 -76
  41. data/lib/solargraph/environ.rb +45 -45
  42. data/lib/solargraph/language_server/completion_item_kinds.rb +35 -35
  43. data/lib/solargraph/language_server/error_codes.rb +20 -20
  44. data/lib/solargraph/language_server/host/cataloger.rb +56 -56
  45. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  46. data/lib/solargraph/language_server/host/dispatch.rb +111 -111
  47. data/lib/solargraph/language_server/host/message_worker.rb +59 -59
  48. data/lib/solargraph/language_server/host/sources.rb +156 -156
  49. data/lib/solargraph/language_server/host.rb +865 -865
  50. data/lib/solargraph/language_server/message/base.rb +89 -89
  51. data/lib/solargraph/language_server/message/cancel_request.rb +13 -13
  52. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
  53. data/lib/solargraph/language_server/message/client.rb +11 -11
  54. data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -58
  55. data/lib/solargraph/language_server/message/completion_item.rb +11 -11
  56. data/lib/solargraph/language_server/message/exit_notification.rb +13 -13
  57. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +100 -100
  58. data/lib/solargraph/language_server/message/extended/document.rb +20 -20
  59. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  60. data/lib/solargraph/language_server/message/extended/download_core.rb +23 -23
  61. data/lib/solargraph/language_server/message/extended/environment.rb +25 -25
  62. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  63. data/lib/solargraph/language_server/message/extended.rb +21 -21
  64. data/lib/solargraph/language_server/message/initialize.rb +162 -162
  65. data/lib/solargraph/language_server/message/initialized.rb +27 -27
  66. data/lib/solargraph/language_server/message/method_not_found.rb +16 -16
  67. data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -14
  68. data/lib/solargraph/language_server/message/shutdown.rb +13 -13
  69. data/lib/solargraph/language_server/message/text_document/base.rb +19 -19
  70. data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -17
  71. data/lib/solargraph/language_server/message/text_document/completion.rb +59 -59
  72. data/lib/solargraph/language_server/message/text_document/definition.rb +38 -38
  73. data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -15
  74. data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -15
  75. data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -15
  76. data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -17
  77. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
  78. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +23 -23
  79. data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -26
  80. data/lib/solargraph/language_server/message/text_document/formatting.rb +126 -126
  81. data/lib/solargraph/language_server/message/text_document/hover.rb +54 -44
  82. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -34
  83. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
  84. data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
  85. data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
  86. data/lib/solargraph/language_server/message/text_document/signature_help.rb +29 -29
  87. data/lib/solargraph/language_server/message/text_document.rb +28 -28
  88. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +30 -30
  89. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +33 -33
  90. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
  91. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
  92. data/lib/solargraph/language_server/message/workspace.rb +14 -14
  93. data/lib/solargraph/language_server/message.rb +93 -93
  94. data/lib/solargraph/language_server/message_types.rb +14 -14
  95. data/lib/solargraph/language_server/request.rb +24 -24
  96. data/lib/solargraph/language_server/symbol_kinds.rb +36 -36
  97. data/lib/solargraph/language_server/transport/adapter.rb +53 -53
  98. data/lib/solargraph/language_server/transport/data_reader.rb +72 -72
  99. data/lib/solargraph/language_server/transport.rb +13 -13
  100. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  101. data/lib/solargraph/language_server.rb +19 -19
  102. data/lib/solargraph/library.rb +546 -546
  103. data/lib/solargraph/location.rb +37 -37
  104. data/lib/solargraph/logging.rb +27 -27
  105. data/lib/solargraph/page.rb +83 -83
  106. data/lib/solargraph/parser/comment_ripper.rb +52 -52
  107. data/lib/solargraph/parser/legacy/class_methods.rb +135 -140
  108. data/lib/solargraph/parser/legacy/flawed_builder.rb +16 -16
  109. data/lib/solargraph/parser/legacy/node_chainer.rb +148 -148
  110. data/lib/solargraph/parser/legacy/node_methods.rb +325 -325
  111. data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +23 -23
  112. data/lib/solargraph/parser/legacy/node_processors/args_node.rb +35 -35
  113. data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +15 -15
  114. data/lib/solargraph/parser/legacy/node_processors/block_node.rb +42 -42
  115. data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +25 -25
  116. data/lib/solargraph/parser/legacy/node_processors/cvasgn_node.rb +23 -23
  117. data/lib/solargraph/parser/legacy/node_processors/def_node.rb +63 -63
  118. data/lib/solargraph/parser/legacy/node_processors/defs_node.rb +36 -36
  119. data/lib/solargraph/parser/legacy/node_processors/gvasgn_node.rb +23 -23
  120. data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +38 -38
  121. data/lib/solargraph/parser/legacy/node_processors/lvasgn_node.rb +28 -28
  122. data/lib/solargraph/parser/legacy/node_processors/namespace_node.rb +39 -39
  123. data/lib/solargraph/parser/legacy/node_processors/orasgn_node.rb +16 -16
  124. data/lib/solargraph/parser/legacy/node_processors/resbody_node.rb +36 -36
  125. data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +21 -21
  126. data/lib/solargraph/parser/legacy/node_processors/send_node.rb +257 -257
  127. data/lib/solargraph/parser/legacy/node_processors/sym_node.rb +18 -18
  128. data/lib/solargraph/parser/legacy/node_processors.rb +54 -54
  129. data/lib/solargraph/parser/legacy.rb +12 -12
  130. data/lib/solargraph/parser/node_methods.rb +43 -43
  131. data/lib/solargraph/parser/node_processor/base.rb +77 -77
  132. data/lib/solargraph/parser/node_processor.rb +43 -43
  133. data/lib/solargraph/parser/region.rb +66 -66
  134. data/lib/solargraph/parser/rubyvm/class_methods.rb +144 -155
  135. data/lib/solargraph/parser/rubyvm/node_chainer.rb +160 -160
  136. data/lib/solargraph/parser/rubyvm/node_methods.rb +315 -315
  137. data/lib/solargraph/parser/rubyvm/node_processors/alias_node.rb +23 -23
  138. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +85 -85
  139. data/lib/solargraph/parser/rubyvm/node_processors/begin_node.rb +15 -15
  140. data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +42 -42
  141. data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +22 -22
  142. data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +23 -23
  143. data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +63 -64
  144. data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +57 -57
  145. data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +23 -23
  146. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +38 -38
  147. data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +39 -39
  148. data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +20 -20
  149. data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +27 -27
  150. data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +39 -39
  151. data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +26 -26
  152. data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +15 -15
  153. data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +45 -45
  154. data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +21 -21
  155. data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +15 -15
  156. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +277 -277
  157. data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +18 -18
  158. data/lib/solargraph/parser/rubyvm/node_processors.rb +63 -62
  159. data/lib/solargraph/parser/rubyvm.rb +40 -40
  160. data/lib/solargraph/parser/snippet.rb +13 -13
  161. data/lib/solargraph/parser.rb +26 -26
  162. data/lib/solargraph/pin/base.rb +296 -296
  163. data/lib/solargraph/pin/base_variable.rb +84 -84
  164. data/lib/solargraph/pin/block.rb +72 -72
  165. data/lib/solargraph/pin/class_variable.rb +8 -8
  166. data/lib/solargraph/pin/closure.rb +37 -37
  167. data/lib/solargraph/pin/common.rb +70 -70
  168. data/lib/solargraph/pin/constant.rb +43 -43
  169. data/lib/solargraph/pin/conversions.rb +96 -96
  170. data/lib/solargraph/pin/documenting.rb +105 -105
  171. data/lib/solargraph/pin/duck_method.rb +16 -16
  172. data/lib/solargraph/pin/global_variable.rb +8 -8
  173. data/lib/solargraph/pin/instance_variable.rb +30 -30
  174. data/lib/solargraph/pin/keyword.rb +15 -15
  175. data/lib/solargraph/pin/keyword_param.rb +8 -8
  176. data/lib/solargraph/pin/local_variable.rb +55 -55
  177. data/lib/solargraph/pin/method.rb +245 -245
  178. data/lib/solargraph/pin/method_alias.rb +31 -31
  179. data/lib/solargraph/pin/namespace.rb +91 -91
  180. data/lib/solargraph/pin/parameter.rb +201 -206
  181. data/lib/solargraph/pin/proxy_type.rb +29 -29
  182. data/lib/solargraph/pin/reference/extend.rb +10 -10
  183. data/lib/solargraph/pin/reference/include.rb +10 -10
  184. data/lib/solargraph/pin/reference/override.rb +29 -29
  185. data/lib/solargraph/pin/reference/prepend.rb +10 -10
  186. data/lib/solargraph/pin/reference/require.rb +14 -14
  187. data/lib/solargraph/pin/reference/superclass.rb +10 -10
  188. data/lib/solargraph/pin/reference.rb +14 -14
  189. data/lib/solargraph/pin/search.rb +56 -0
  190. data/lib/solargraph/pin/singleton.rb +11 -11
  191. data/lib/solargraph/pin/symbol.rb +47 -47
  192. data/lib/solargraph/pin.rb +37 -36
  193. data/lib/solargraph/position.rb +100 -100
  194. data/lib/solargraph/range.rb +95 -95
  195. data/lib/solargraph/server_methods.rb +16 -16
  196. data/lib/solargraph/shell.rb +226 -226
  197. data/lib/solargraph/source/chain/block_variable.rb +13 -13
  198. data/lib/solargraph/source/chain/call.rb +204 -204
  199. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  200. data/lib/solargraph/source/chain/constant.rb +75 -75
  201. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  202. data/lib/solargraph/source/chain/hash.rb +28 -28
  203. data/lib/solargraph/source/chain/head.rb +19 -19
  204. data/lib/solargraph/source/chain/instance_variable.rb +13 -13
  205. data/lib/solargraph/source/chain/link.rb +71 -71
  206. data/lib/solargraph/source/chain/literal.rb +23 -23
  207. data/lib/solargraph/source/chain/or.rb +23 -23
  208. data/lib/solargraph/source/chain/q_call.rb +11 -11
  209. data/lib/solargraph/source/chain/variable.rb +13 -13
  210. data/lib/solargraph/source/chain/z_super.rb +30 -30
  211. data/lib/solargraph/source/chain.rb +164 -164
  212. data/lib/solargraph/source/change.rb +79 -79
  213. data/lib/solargraph/source/cursor.rb +164 -164
  214. data/lib/solargraph/source/source_chainer.rb +191 -191
  215. data/lib/solargraph/source/updater.rb +54 -54
  216. data/lib/solargraph/source.rb +522 -522
  217. data/lib/solargraph/source_map/clip.rb +224 -224
  218. data/lib/solargraph/source_map/completion.rb +23 -23
  219. data/lib/solargraph/source_map/mapper.rb +212 -212
  220. data/lib/solargraph/source_map.rb +180 -189
  221. data/lib/solargraph/type_checker/checks.rb +99 -99
  222. data/lib/solargraph/type_checker/param_def.rb +35 -35
  223. data/lib/solargraph/type_checker/problem.rb +32 -32
  224. data/lib/solargraph/type_checker/rules.rb +57 -57
  225. data/lib/solargraph/type_checker.rb +543 -510
  226. data/lib/solargraph/version.rb +5 -5
  227. data/lib/solargraph/views/environment.erb +58 -58
  228. data/lib/solargraph/workspace/config.rb +231 -231
  229. data/lib/solargraph/workspace.rb +215 -214
  230. data/lib/solargraph/yard_map/cache.rb +19 -19
  231. data/lib/solargraph/yard_map/core_docs.rb +170 -170
  232. data/lib/solargraph/yard_map/core_fills.rb +208 -203
  233. data/lib/solargraph/yard_map/core_gen.rb +76 -76
  234. data/lib/solargraph/yard_map/helpers.rb +16 -16
  235. data/lib/solargraph/yard_map/mapper/to_constant.rb +25 -25
  236. data/lib/solargraph/yard_map/mapper/to_method.rb +78 -78
  237. data/lib/solargraph/yard_map/mapper/to_namespace.rb +27 -27
  238. data/lib/solargraph/yard_map/mapper.rb +77 -77
  239. data/lib/solargraph/yard_map/rdoc_to_yard.rb +140 -140
  240. data/lib/solargraph/yard_map/stdlib_fills.rb +43 -43
  241. data/lib/solargraph/yard_map/to_method.rb +79 -79
  242. data/lib/solargraph/yard_map.rb +460 -443
  243. data/lib/solargraph.rb +69 -69
  244. data/lib/yard-solargraph.rb +33 -33
  245. data/solargraph.gemspec +0 -0
  246. 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
@@ -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
- ROOT_PIN = Pin::Namespace.new(type: :class, name: '', closure: nil)
35
- end
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
@@ -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