solargraph 0.56.0 → 0.58.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -0
  3. data/.github/workflows/linting.yml +127 -0
  4. data/.github/workflows/plugins.yml +183 -7
  5. data/.github/workflows/rspec.yml +55 -5
  6. data/.github/workflows/typecheck.yml +6 -3
  7. data/.gitignore +6 -0
  8. data/.overcommit.yml +72 -0
  9. data/.rspec +1 -0
  10. data/.rubocop.yml +66 -0
  11. data/.rubocop_todo.yml +1279 -0
  12. data/.yardopts +1 -0
  13. data/CHANGELOG.md +92 -1
  14. data/README.md +8 -4
  15. data/Rakefile +125 -13
  16. data/bin/solargraph +3 -0
  17. data/lib/solargraph/api_map/cache.rb +110 -109
  18. data/lib/solargraph/api_map/constants.rb +279 -0
  19. data/lib/solargraph/api_map/index.rb +193 -175
  20. data/lib/solargraph/api_map/source_to_yard.rb +97 -88
  21. data/lib/solargraph/api_map/store.rb +384 -266
  22. data/lib/solargraph/api_map.rb +945 -973
  23. data/lib/solargraph/bench.rb +1 -0
  24. data/lib/solargraph/complex_type/type_methods.rb +228 -222
  25. data/lib/solargraph/complex_type/unique_type.rb +482 -475
  26. data/lib/solargraph/complex_type.rb +444 -423
  27. data/lib/solargraph/convention/active_support_concern.rb +111 -0
  28. data/lib/solargraph/convention/base.rb +17 -0
  29. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -0
  30. data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -0
  31. data/lib/solargraph/convention/data_definition.rb +105 -0
  32. data/lib/solargraph/convention/gemspec.rb +3 -2
  33. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -60
  34. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -100
  35. data/lib/solargraph/convention/struct_definition.rb +164 -101
  36. data/lib/solargraph/convention.rb +32 -2
  37. data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
  38. data/lib/solargraph/diagnostics/rubocop.rb +118 -113
  39. data/lib/solargraph/diagnostics/rubocop_helpers.rb +68 -66
  40. data/lib/solargraph/diagnostics/type_check.rb +55 -55
  41. data/lib/solargraph/doc_map.rb +439 -405
  42. data/lib/solargraph/environ.rb +9 -2
  43. data/lib/solargraph/equality.rb +34 -33
  44. data/lib/solargraph/gem_pins.rb +98 -88
  45. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  46. data/lib/solargraph/language_server/host/dispatch.rb +130 -128
  47. data/lib/solargraph/language_server/host/message_worker.rb +112 -109
  48. data/lib/solargraph/language_server/host/sources.rb +99 -99
  49. data/lib/solargraph/language_server/host.rb +878 -871
  50. data/lib/solargraph/language_server/message/base.rb +2 -1
  51. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +114 -114
  52. data/lib/solargraph/language_server/message/extended/document.rb +23 -23
  53. data/lib/solargraph/language_server/message/text_document/completion.rb +56 -56
  54. data/lib/solargraph/language_server/message/text_document/definition.rb +40 -38
  55. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -26
  56. data/lib/solargraph/language_server/message/text_document/formatting.rb +148 -131
  57. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
  58. data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -24
  59. data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -24
  60. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +2 -0
  61. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
  62. data/lib/solargraph/language_server/progress.rb +8 -0
  63. data/lib/solargraph/language_server/request.rb +4 -1
  64. data/lib/solargraph/library.rb +683 -666
  65. data/lib/solargraph/location.rb +82 -79
  66. data/lib/solargraph/logging.rb +37 -28
  67. data/lib/solargraph/page.rb +3 -0
  68. data/lib/solargraph/parser/comment_ripper.rb +69 -62
  69. data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -227
  70. data/lib/solargraph/parser/node_processor/base.rb +92 -87
  71. data/lib/solargraph/parser/node_processor.rb +62 -46
  72. data/lib/solargraph/parser/parser_gem/class_methods.rb +149 -159
  73. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +1 -0
  74. data/lib/solargraph/parser/parser_gem/node_chainer.rb +166 -164
  75. data/lib/solargraph/parser/parser_gem/node_methods.rb +486 -497
  76. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -21
  77. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +59 -59
  78. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +15 -15
  79. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +46 -45
  80. data/lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb +1 -21
  81. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +53 -53
  82. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -21
  83. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +40 -40
  84. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +29 -29
  85. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +59 -53
  86. data/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb +0 -22
  87. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -41
  88. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -16
  89. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +38 -37
  90. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +52 -43
  91. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +291 -271
  92. data/lib/solargraph/parser/parser_gem/node_processors/sym_node.rb +1 -0
  93. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -29
  94. data/lib/solargraph/parser/parser_gem/node_processors.rb +70 -66
  95. data/lib/solargraph/parser/region.rb +69 -66
  96. data/lib/solargraph/parser/snippet.rb +17 -15
  97. data/lib/solargraph/pin/base.rb +729 -651
  98. data/lib/solargraph/pin/base_variable.rb +126 -125
  99. data/lib/solargraph/pin/block.rb +104 -103
  100. data/lib/solargraph/pin/breakable.rb +9 -9
  101. data/lib/solargraph/pin/callable.rb +231 -218
  102. data/lib/solargraph/pin/closure.rb +72 -74
  103. data/lib/solargraph/pin/common.rb +79 -75
  104. data/lib/solargraph/pin/constant.rb +2 -0
  105. data/lib/solargraph/pin/conversions.rb +123 -123
  106. data/lib/solargraph/pin/delegated_method.rb +120 -120
  107. data/lib/solargraph/pin/documenting.rb +114 -114
  108. data/lib/solargraph/pin/instance_variable.rb +34 -34
  109. data/lib/solargraph/pin/keyword.rb +20 -20
  110. data/lib/solargraph/pin/local_variable.rb +75 -76
  111. data/lib/solargraph/pin/method.rb +672 -651
  112. data/lib/solargraph/pin/method_alias.rb +34 -31
  113. data/lib/solargraph/pin/namespace.rb +115 -115
  114. data/lib/solargraph/pin/parameter.rb +275 -261
  115. data/lib/solargraph/pin/proxy_type.rb +39 -35
  116. data/lib/solargraph/pin/reference/override.rb +47 -33
  117. data/lib/solargraph/pin/reference/superclass.rb +15 -10
  118. data/lib/solargraph/pin/reference.rb +39 -22
  119. data/lib/solargraph/pin/search.rb +61 -56
  120. data/lib/solargraph/pin/signature.rb +61 -59
  121. data/lib/solargraph/pin/symbol.rb +53 -48
  122. data/lib/solargraph/pin/until.rb +18 -18
  123. data/lib/solargraph/pin/while.rb +18 -18
  124. data/lib/solargraph/pin.rb +44 -44
  125. data/lib/solargraph/pin_cache.rb +245 -185
  126. data/lib/solargraph/position.rb +132 -116
  127. data/lib/solargraph/range.rb +112 -107
  128. data/lib/solargraph/rbs_map/conversions.rb +823 -773
  129. data/lib/solargraph/rbs_map/core_fills.rb +18 -0
  130. data/lib/solargraph/rbs_map/core_map.rb +58 -51
  131. data/lib/solargraph/rbs_map/stdlib_map.rb +43 -43
  132. data/lib/solargraph/rbs_map.rb +163 -150
  133. data/lib/solargraph/shell.rb +352 -268
  134. data/lib/solargraph/source/chain/call.rb +337 -333
  135. data/lib/solargraph/source/chain/constant.rb +26 -89
  136. data/lib/solargraph/source/chain/hash.rb +34 -34
  137. data/lib/solargraph/source/chain/if.rb +28 -28
  138. data/lib/solargraph/source/chain/instance_variable.rb +13 -13
  139. data/lib/solargraph/source/chain/link.rb +11 -2
  140. data/lib/solargraph/source/chain/literal.rb +48 -48
  141. data/lib/solargraph/source/chain/or.rb +23 -23
  142. data/lib/solargraph/source/chain.rb +291 -282
  143. data/lib/solargraph/source/change.rb +82 -82
  144. data/lib/solargraph/source/cursor.rb +166 -167
  145. data/lib/solargraph/source/encoding_fixes.rb +23 -23
  146. data/lib/solargraph/source/source_chainer.rb +194 -194
  147. data/lib/solargraph/source/updater.rb +55 -55
  148. data/lib/solargraph/source.rb +498 -495
  149. data/lib/solargraph/source_map/clip.rb +226 -234
  150. data/lib/solargraph/source_map/data.rb +34 -30
  151. data/lib/solargraph/source_map/mapper.rb +259 -259
  152. data/lib/solargraph/source_map.rb +212 -200
  153. data/lib/solargraph/type_checker/checks.rb +124 -124
  154. data/lib/solargraph/type_checker/param_def.rb +37 -35
  155. data/lib/solargraph/type_checker/problem.rb +32 -32
  156. data/lib/solargraph/type_checker/rules.rb +84 -62
  157. data/lib/solargraph/type_checker.rb +814 -699
  158. data/lib/solargraph/version.rb +5 -5
  159. data/lib/solargraph/workspace/config.rb +255 -239
  160. data/lib/solargraph/workspace/require_paths.rb +97 -0
  161. data/lib/solargraph/workspace.rb +220 -249
  162. data/lib/solargraph/yard_map/helpers.rb +44 -16
  163. data/lib/solargraph/yard_map/mapper/to_constant.rb +5 -5
  164. data/lib/solargraph/yard_map/mapper/to_method.rb +130 -134
  165. data/lib/solargraph/yard_map/mapper/to_namespace.rb +31 -30
  166. data/lib/solargraph/yard_map/mapper.rb +79 -79
  167. data/lib/solargraph/yard_map/to_method.rb +89 -88
  168. data/lib/solargraph/yardoc.rb +87 -49
  169. data/lib/solargraph.rb +105 -90
  170. data/rbs/fills/bundler/0/bundler.rbs +4271 -0
  171. data/rbs/fills/open3/0/open3.rbs +172 -0
  172. data/rbs/fills/rubygems/0/basic_specification.rbs +326 -0
  173. data/rbs/fills/rubygems/0/errors.rbs +364 -0
  174. data/rbs/fills/rubygems/0/spec_fetcher.rbs +107 -0
  175. data/rbs/fills/rubygems/0/specification.rbs +1753 -0
  176. data/rbs/fills/{tuple.rbs → tuple/tuple.rbs} +2 -3
  177. data/rbs/shims/ast/0/node.rbs +5 -0
  178. data/rbs/shims/ast/2.4/.rbs_meta.yaml +9 -0
  179. data/rbs/shims/ast/2.4/ast.rbs +73 -0
  180. data/rbs/shims/parser/3.2.0.1/builders/default.rbs +195 -0
  181. data/rbs/shims/parser/3.2.0.1/manifest.yaml +7 -0
  182. data/rbs/shims/parser/3.2.0.1/parser.rbs +201 -0
  183. data/rbs/shims/parser/3.2.0.1/polyfill.rbs +4 -0
  184. data/rbs/shims/thor/1.2.0.1/.rbs_meta.yaml +9 -0
  185. data/rbs/shims/thor/1.2.0.1/manifest.yaml +7 -0
  186. data/rbs/shims/thor/1.2.0.1/thor.rbs +17 -0
  187. data/rbs_collection.yaml +4 -4
  188. data/solargraph.gemspec +26 -5
  189. metadata +187 -15
  190. data/lib/.rubocop.yml +0 -22
  191. data/lib/solargraph/parser/node_methods.rb +0 -97
@@ -1,79 +1,82 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- # A pointer to a section of source text identified by its filename
5
- # and Range.
6
- #
7
- class Location
8
- include Equality
9
-
10
- # @return [String]
11
- attr_reader :filename
12
-
13
- # @return [Solargraph::Range]
14
- attr_reader :range
15
-
16
- # @param filename [String]
17
- # @param range [Solargraph::Range]
18
- def initialize filename, range
19
- @filename = filename
20
- @range = range
21
- end
22
-
23
- # @sg-ignore Fix "Not enough arguments to Module#protected"
24
- protected def equality_fields
25
- [filename, range]
26
- end
27
-
28
- def <=>(other)
29
- return nil unless other.is_a?(Location)
30
- if filename == other.filename
31
- range <=> other.range
32
- else
33
- filename <=> other.filename
34
- end
35
- end
36
-
37
- def rbs?
38
- filename.end_with?('.rbs')
39
- end
40
-
41
- # @param location [self]
42
- def contain? location
43
- range.contain?(location.range.start) && range.contain?(location.range.ending) && filename == location.filename
44
- end
45
-
46
- def inspect
47
- "<#{self.class.name}: filename=#{filename}, range=#{range.inspect}>"
48
- end
49
-
50
- def to_s
51
- inspect
52
- end
53
-
54
- # @return [Hash]
55
- def to_hash
56
- {
57
- filename: filename,
58
- range: range.to_hash
59
- }
60
- end
61
-
62
- # @param node [Parser::AST::Node, nil]
63
- def self.from_node(node)
64
- return nil if node.nil? || node.loc.nil?
65
- range = Range.from_node(node)
66
- self.new(node.loc.expression.source_buffer.name, range)
67
- end
68
-
69
- # @param other [BasicObject]
70
- def == other
71
- return false unless other.is_a?(Location)
72
- filename == other.filename and range == other.range
73
- end
74
-
75
- def inspect
76
- "#<#{self.class} #{filename}, #{range.inspect}>"
77
- end
78
- end
79
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ # A pointer to a section of source text identified by its filename
5
+ # and Range.
6
+ #
7
+ class Location
8
+ include Equality
9
+
10
+ # @return [String]
11
+ attr_reader :filename
12
+
13
+ # @return [Solargraph::Range]
14
+ attr_reader :range
15
+
16
+ # @param filename [String]
17
+ # @param range [Solargraph::Range]
18
+ def initialize filename, range
19
+ @filename = filename
20
+ @range = range
21
+ end
22
+
23
+ # @sg-ignore Fix "Not enough arguments to Module#protected"
24
+ protected def equality_fields
25
+ [filename, range]
26
+ end
27
+
28
+ # @param other [self]
29
+ def <=>(other)
30
+ return nil unless other.is_a?(Location)
31
+ if filename == other.filename
32
+ range <=> other.range
33
+ else
34
+ filename <=> other.filename
35
+ end
36
+ end
37
+
38
+ def rbs?
39
+ filename.end_with?('.rbs')
40
+ end
41
+
42
+ # @param location [self]
43
+ def contain? location
44
+ range.contain?(location.range.start) && range.contain?(location.range.ending) && filename == location.filename
45
+ end
46
+
47
+ def inspect
48
+ "<#{self.class.name}: filename=#{filename}, range=#{range.inspect}>"
49
+ end
50
+
51
+ def to_s
52
+ inspect
53
+ end
54
+
55
+ # @return [Hash]
56
+ def to_hash
57
+ {
58
+ filename: filename,
59
+ range: range.to_hash
60
+ }
61
+ end
62
+
63
+ # @param node [Parser::AST::Node, nil]
64
+ # @return [Location, nil]
65
+ def self.from_node(node)
66
+ return nil if node.nil? || node.loc.nil?
67
+ range = Range.from_node(node)
68
+ self.new(node.loc.expression.source_buffer.name, range)
69
+ end
70
+
71
+ # @param other [BasicObject]
72
+ def == other
73
+ return false unless other.is_a?(Location)
74
+ # @sg-ignore https://github.com/castwide/solargraph/pull/1114
75
+ filename == other.filename and range == other.range
76
+ end
77
+
78
+ def inspect
79
+ "#<#{self.class} #{filename}, #{range.inspect}>"
80
+ end
81
+ end
82
+ end
@@ -1,28 +1,37 @@
1
- # frozen_string_literal: true
2
-
3
- require 'logger'
4
-
5
- module Solargraph
6
- module Logging
7
- DEFAULT_LOG_LEVEL = Logger::WARN
8
-
9
- LOG_LEVELS = {
10
- 'warn' => Logger::WARN,
11
- 'info' => Logger::INFO,
12
- 'debug' => Logger::DEBUG
13
- }
14
-
15
- @@logger = Logger.new(STDERR, level: DEFAULT_LOG_LEVEL)
16
- # @sg-ignore Fix cvar issue
17
- @@logger.formatter = proc do |severity, datetime, progname, msg|
18
- "[#{severity}] #{msg}\n"
19
- end
20
-
21
- module_function
22
-
23
- # @return [Logger]
24
- def logger
25
- @@logger
26
- end
27
- end
28
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+
5
+ module Solargraph
6
+ module Logging
7
+ DEFAULT_LOG_LEVEL = Logger::WARN
8
+
9
+ LOG_LEVELS = {
10
+ 'warn' => Logger::WARN,
11
+ 'info' => Logger::INFO,
12
+ 'debug' => Logger::DEBUG
13
+ }
14
+ configured_level = ENV.fetch('SOLARGRAPH_LOG', nil)
15
+ level = if LOG_LEVELS.keys.include?(configured_level)
16
+ LOG_LEVELS.fetch(configured_level)
17
+ else
18
+ if configured_level
19
+ warn "Invalid value for SOLARGRAPH_LOG: #{configured_level.inspect} - " \
20
+ "valid values are #{LOG_LEVELS.keys}"
21
+ end
22
+ DEFAULT_LOG_LEVEL
23
+ end
24
+ @@logger = Logger.new(STDERR, level: level)
25
+ # @sg-ignore Fix cvar issue
26
+ @@logger.formatter = proc do |severity, datetime, progname, msg|
27
+ "[#{severity}] #{msg}\n"
28
+ end
29
+
30
+ module_function
31
+
32
+ # @return [Logger]
33
+ def logger
34
+ @@logger
35
+ end
36
+ end
37
+ end
@@ -29,6 +29,7 @@ module Solargraph
29
29
  # @param text [String]
30
30
  # @return [String]
31
31
  def htmlify text
32
+ # @type [String]
32
33
  YARD::Templates::Helpers::Markup::RDocMarkup.new(text).to_html
33
34
  end
34
35
 
@@ -70,8 +71,10 @@ module Solargraph
70
71
  # @param template [String]
71
72
  # @param layout [Boolean]
72
73
  # @param locals [Hash]
74
+ # @sg-ignore
73
75
  # @return [String]
74
76
  def render template, layout: true, locals: {}
77
+ # @type [String]
75
78
  @render_method.call(template, layout: layout, locals: locals)
76
79
  end
77
80
 
@@ -1,62 +1,69 @@
1
- require 'ripper'
2
-
3
- module Solargraph
4
- module Parser
5
- class CommentRipper < Ripper::SexpBuilderPP
6
- # @param src [String]
7
- # @param filename [String]
8
- # @param lineno [Integer]
9
- def initialize src, filename = '(ripper)', lineno = 0
10
- super
11
- @buffer = src
12
- @buffer_lines = @buffer.lines
13
- end
14
-
15
- def on_comment *args
16
- # @sg-ignore
17
- # @type [Array(Symbol, String, Array([Integer, nil], [Integer, nil]))]
18
- result = super
19
- if @buffer_lines[result[2][0]][0..result[2][1]].strip =~ /^#/
20
- chomped = result[1].chomp
21
- if result[2][0] == 0 && chomped.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').match(/^#\s*frozen_string_literal:/)
22
- chomped = '#'
23
- end
24
- @comments[result[2][0]] = Snippet.new(Range.from_to(result[2][0], result[2][1], result[2][0], result[2][1] + chomped.length), chomped)
25
- end
26
- result
27
- end
28
-
29
- # @param result [Array(Symbol, String, Array([Integer, nil], [Integer, nil]))]
30
- # @return [void]
31
- def create_snippet(result)
32
- chomped = result[1].chomp
33
- @comments[result[2][0]] = Snippet.new(Range.from_to(result[2][0] || 0, result[2][1] || 0, result[2][0] || 0, (result[2][1] || 0) + chomped.length), chomped)
34
- end
35
-
36
- def on_embdoc_beg *args
37
- result = super
38
- create_snippet(result)
39
- result
40
- end
41
-
42
- def on_embdoc *args
43
- result = super
44
- create_snippet(result)
45
- result
46
- end
47
-
48
- def on_embdoc_end *args
49
- result = super
50
- create_snippet(result)
51
- result
52
- end
53
-
54
- # @return [Hash{Integer => String}]
55
- def parse
56
- @comments = {}
57
- super
58
- @comments
59
- end
60
- end
61
- end
62
- end
1
+ require 'ripper'
2
+
3
+ module Solargraph
4
+ module Parser
5
+ class CommentRipper < Ripper::SexpBuilderPP
6
+ # @!override Ripper::SexpBuilder#on_embdoc_beg
7
+ # @return [Array(Symbol, String, Array)]
8
+ # @!override Ripper::SexpBuilder#on_embdoc
9
+ # @return [Array(Symbol, String, Array)]
10
+ # @!override Ripper::SexpBuilder#on_embdoc_end
11
+ # @return [Array(Symbol, String, Array)]
12
+
13
+ # @param src [String]
14
+ # @param filename [String]
15
+ # @param lineno [Integer]
16
+ def initialize src, filename = '(ripper)', lineno = 0
17
+ super
18
+ @buffer = src
19
+ @buffer_lines = @buffer.lines
20
+ end
21
+
22
+ def on_comment *args
23
+ # @sg-ignore
24
+ # @type [Array(Symbol, String, Array([Integer, nil], [Integer, nil]))]
25
+ result = super
26
+ if @buffer_lines[result[2][0]][0..result[2][1]].strip =~ /^#/
27
+ chomped = result[1].chomp
28
+ if result[2][0] == 0 && chomped.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').match(/^#\s*frozen_string_literal:/)
29
+ chomped = '#'
30
+ end
31
+ @comments[result[2][0]] = Snippet.new(Range.from_to(result[2][0], result[2][1], result[2][0], result[2][1] + chomped.length), chomped)
32
+ end
33
+ result
34
+ end
35
+
36
+ # @param result [Array(Symbol, String, Array([Integer, nil], [Integer, nil]))]
37
+ # @return [void]
38
+ def create_snippet(result)
39
+ chomped = result[1].chomp
40
+ @comments[result[2][0]] = Snippet.new(Range.from_to(result[2][0] || 0, result[2][1] || 0, result[2][0] || 0, (result[2][1] || 0) + chomped.length), chomped)
41
+ end
42
+
43
+ def on_embdoc_beg *args
44
+ result = super
45
+ create_snippet(result)
46
+ result
47
+ end
48
+
49
+ def on_embdoc *args
50
+ result = super
51
+ create_snippet(result)
52
+ result
53
+ end
54
+
55
+ def on_embdoc_end *args
56
+ result = super
57
+ create_snippet(result)
58
+ result
59
+ end
60
+
61
+ # @return [Hash{Integer => Solargraph::Parser::Snippet}]
62
+ def parse
63
+ @comments = {}
64
+ super
65
+ @comments
66
+ end
67
+ end
68
+ end
69
+ end