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,53 +1,53 @@
1
- # frozen_string_literal: true
2
-
3
- require 'backport'
4
-
5
- module Solargraph
6
- module LanguageServer
7
- module Transport
8
- # A common module for running language servers in Backport.
9
- #
10
- module Adapter
11
- def opening
12
- @host = Solargraph::LanguageServer::Host.new
13
- @host.add_observer self
14
- @host.start
15
- @data_reader = Solargraph::LanguageServer::Transport::DataReader.new
16
- @data_reader.set_message_handler do |message|
17
- process message
18
- end
19
- end
20
-
21
- def closing
22
- @host.stop
23
- end
24
-
25
- # @param data [String]
26
- def receiving data
27
- @data_reader.receive data
28
- end
29
-
30
- def update
31
- if @host.stopped?
32
- shutdown
33
- else
34
- tmp = @host.flush
35
- write tmp unless tmp.empty?
36
- end
37
- end
38
-
39
- private
40
-
41
- # @param request [String]
42
- # @return [void]
43
- def process request
44
- @host.process(request)
45
- end
46
-
47
- def shutdown
48
- Backport.stop unless @host.options['transport'] == 'external'
49
- end
50
- end
51
- end
52
- end
53
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'backport'
4
+
5
+ module Solargraph
6
+ module LanguageServer
7
+ module Transport
8
+ # A common module for running language servers in Backport.
9
+ #
10
+ module Adapter
11
+ def opening
12
+ @host = Solargraph::LanguageServer::Host.new
13
+ @host.add_observer self
14
+ @host.start
15
+ @data_reader = Solargraph::LanguageServer::Transport::DataReader.new
16
+ @data_reader.set_message_handler do |message|
17
+ process message
18
+ end
19
+ end
20
+
21
+ def closing
22
+ @host.stop
23
+ end
24
+
25
+ # @param data [String]
26
+ def receiving data
27
+ @data_reader.receive data
28
+ end
29
+
30
+ def update
31
+ if @host.stopped?
32
+ shutdown
33
+ else
34
+ tmp = @host.flush
35
+ write tmp unless tmp.empty?
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ # @param request [String]
42
+ # @return [void]
43
+ def process request
44
+ @host.process(request)
45
+ end
46
+
47
+ def shutdown
48
+ Backport.stop unless @host.options['transport'] == 'external'
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,72 +1,72 @@
1
- # frozen_string_literal: true
2
-
3
- require 'json'
4
-
5
- module Solargraph
6
- module LanguageServer
7
- module Transport
8
- class DataReader
9
- def initialize
10
- @in_header = true
11
- @content_length = 0
12
- @buffer = String.new
13
- end
14
-
15
- # Declare a block to be executed for each message received from the
16
- # client.
17
- #
18
- # @yieldparam [Hash] The message received from the client
19
- def set_message_handler &block
20
- @message_handler = block
21
- end
22
-
23
- # Process raw data received from the client. The data will be parsed
24
- # into messages based on the JSON-RPC protocol. Each message will be
25
- # passed to the block declared via set_message_handler. Incomplete data
26
- # will be buffered and subsequent data will be appended to the buffer.
27
- #
28
- # @param data [String]
29
- def receive data
30
- data.each_char do |char|
31
- @buffer.concat char
32
- if @in_header
33
- prepare_to_parse_message if @buffer.end_with?("\r\n\r\n")
34
- else
35
- parse_message_from_buffer if @buffer.bytesize == @content_length
36
- end
37
- end
38
- end
39
-
40
- private
41
-
42
- # @return [void]
43
- def prepare_to_parse_message
44
- @in_header = false
45
- @buffer.each_line do |line|
46
- parts = line.split(':').map(&:strip)
47
- if parts[0] == 'Content-Length'
48
- @content_length = parts[1].to_i
49
- break
50
- end
51
- end
52
- @buffer.clear
53
- end
54
-
55
- # @return [void]
56
- def parse_message_from_buffer
57
- begin
58
- msg = JSON.parse(@buffer)
59
- @message_handler.call msg unless @message_handler.nil?
60
- rescue JSON::ParserError => e
61
- Solargraph::Logging.logger.warn "Failed to parse request: #{e.message}"
62
- Solargraph::Logging.logger.debug "Buffer: #{@buffer}"
63
- ensure
64
- @buffer.clear
65
- @in_header = true
66
- @content_length = 0
67
- end
68
- end
69
- end
70
- end
71
- end
72
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Solargraph
6
+ module LanguageServer
7
+ module Transport
8
+ class DataReader
9
+ def initialize
10
+ @in_header = true
11
+ @content_length = 0
12
+ @buffer = String.new
13
+ end
14
+
15
+ # Declare a block to be executed for each message received from the
16
+ # client.
17
+ #
18
+ # @yieldparam [Hash] The message received from the client
19
+ def set_message_handler &block
20
+ @message_handler = block
21
+ end
22
+
23
+ # Process raw data received from the client. The data will be parsed
24
+ # into messages based on the JSON-RPC protocol. Each message will be
25
+ # passed to the block declared via set_message_handler. Incomplete data
26
+ # will be buffered and subsequent data will be appended to the buffer.
27
+ #
28
+ # @param data [String]
29
+ def receive data
30
+ data.each_char do |char|
31
+ @buffer.concat char
32
+ if @in_header
33
+ prepare_to_parse_message if @buffer.end_with?("\r\n\r\n")
34
+ else
35
+ parse_message_from_buffer if @buffer.bytesize == @content_length
36
+ end
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ # @return [void]
43
+ def prepare_to_parse_message
44
+ @in_header = false
45
+ @buffer.each_line do |line|
46
+ parts = line.split(':').map(&:strip)
47
+ if parts[0] == 'Content-Length'
48
+ @content_length = parts[1].to_i
49
+ break
50
+ end
51
+ end
52
+ @buffer.clear
53
+ end
54
+
55
+ # @return [void]
56
+ def parse_message_from_buffer
57
+ begin
58
+ msg = JSON.parse(@buffer)
59
+ @message_handler.call msg unless @message_handler.nil?
60
+ rescue JSON::ParserError => e
61
+ Solargraph::Logging.logger.warn "Failed to parse request: #{e.message}"
62
+ Solargraph::Logging.logger.debug "Buffer: #{@buffer}"
63
+ ensure
64
+ @buffer.clear
65
+ @in_header = true
66
+ @content_length = 0
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -1,13 +1,13 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module LanguageServer
5
- # The Transport namespace contains concrete implementations of
6
- # communication protocols for language servers.
7
- #
8
- module Transport
9
- autoload :Adapter, 'solargraph/language_server/transport/adapter'
10
- autoload :DataReader, 'solargraph/language_server/transport/data_reader'
11
- end
12
- end
13
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ # The Transport namespace contains concrete implementations of
6
+ # communication protocols for language servers.
7
+ #
8
+ module Transport
9
+ autoload :Adapter, 'solargraph/language_server/transport/adapter'
10
+ autoload :DataReader, 'solargraph/language_server/transport/data_reader'
11
+ end
12
+ end
13
+ end
@@ -1,49 +1,49 @@
1
- # frozen_string_literal: true
2
-
3
- require 'cgi'
4
-
5
- module Solargraph
6
- module LanguageServer
7
- # Methods to handle conversions between file URIs and paths.
8
- #
9
- module UriHelpers
10
- module_function
11
-
12
- # Convert a file URI to a path.
13
- #
14
- # @param uri [String]
15
- # @return [String]
16
- def uri_to_file uri
17
- decode(uri).sub(/^file\:\/\//, '').sub(/^\/([a-z]\:)/i, '\1')
18
- end
19
-
20
- # Convert a file path to a URI.
21
- #
22
- # @param file [String]
23
- # @return [String]
24
- def file_to_uri file
25
- "file://#{encode(file.gsub(/^([a-z]\:)/i, '/\1'))}"
26
- end
27
-
28
- # Encode text to be used as a URI path component in LSP.
29
- #
30
- # @param text [String]
31
- # @return [String]
32
- def encode text
33
- CGI.escape(text)
34
- .gsub('%3A', ':')
35
- .gsub('%5C', '\\')
36
- .gsub('%2F', '/')
37
- .gsub('+', '%20')
38
- end
39
-
40
- # Decode text from a URI path component in LSP.
41
- #
42
- # @param text [String]
43
- # @return [String]
44
- def decode text
45
- CGI.unescape(text)
46
- end
47
- end
48
- end
49
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'cgi'
4
+
5
+ module Solargraph
6
+ module LanguageServer
7
+ # Methods to handle conversions between file URIs and paths.
8
+ #
9
+ module UriHelpers
10
+ module_function
11
+
12
+ # Convert a file URI to a path.
13
+ #
14
+ # @param uri [String]
15
+ # @return [String]
16
+ def uri_to_file uri
17
+ decode(uri).sub(/^file\:(?:\/\/)?/, '').sub(/^\/([a-z]\:)/i, '\1')
18
+ end
19
+
20
+ # Convert a file path to a URI.
21
+ #
22
+ # @param file [String]
23
+ # @return [String]
24
+ def file_to_uri file
25
+ "file://#{encode(file.gsub(/^([a-z]\:)/i, '/\1'))}"
26
+ end
27
+
28
+ # Encode text to be used as a URI path component in LSP.
29
+ #
30
+ # @param text [String]
31
+ # @return [String]
32
+ def encode text
33
+ CGI.escape(text)
34
+ .gsub('%3A', ':')
35
+ .gsub('%5C', '\\')
36
+ .gsub('%2F', '/')
37
+ .gsub('+', '%20')
38
+ end
39
+
40
+ # Decode text from a URI path component in LSP.
41
+ #
42
+ # @param text [String]
43
+ # @return [String]
44
+ def decode text
45
+ CGI.unescape(text)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,19 +1,19 @@
1
- # frozen_string_literal: true
2
-
3
- require 'solargraph/language_server/error_codes'
4
- require 'solargraph/language_server/completion_item_kinds'
5
- require 'solargraph/language_server/symbol_kinds'
6
-
7
- module Solargraph
8
- # The LanguageServer namespace contains the classes and modules that compose
9
- # concrete implementations of language servers.
10
- #
11
- module LanguageServer
12
- autoload :Host, 'solargraph/language_server/host'
13
- autoload :Message, 'solargraph/language_server/message'
14
- autoload :UriHelpers, 'solargraph/language_server/uri_helpers'
15
- autoload :MessageTypes, 'solargraph/language_server/message_types'
16
- autoload :Request, 'solargraph/language_server/request'
17
- autoload :Transport, 'solargraph/language_server/transport'
18
- end
19
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'solargraph/language_server/error_codes'
4
+ require 'solargraph/language_server/completion_item_kinds'
5
+ require 'solargraph/language_server/symbol_kinds'
6
+
7
+ module Solargraph
8
+ # The LanguageServer namespace contains the classes and modules that compose
9
+ # concrete implementations of language servers.
10
+ #
11
+ module LanguageServer
12
+ autoload :Host, 'solargraph/language_server/host'
13
+ autoload :Message, 'solargraph/language_server/message'
14
+ autoload :UriHelpers, 'solargraph/language_server/uri_helpers'
15
+ autoload :MessageTypes, 'solargraph/language_server/message_types'
16
+ autoload :Request, 'solargraph/language_server/request'
17
+ autoload :Transport, 'solargraph/language_server/transport'
18
+ end
19
+ end