solargraph 0.54.1 → 0.56.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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/plugins.yml +2 -0
  3. data/.github/workflows/typecheck.yml +3 -1
  4. data/.gitignore +2 -0
  5. data/CHANGELOG.md +70 -0
  6. data/README.md +13 -3
  7. data/lib/solargraph/api_map/cache.rb +10 -1
  8. data/lib/solargraph/api_map/index.rb +175 -0
  9. data/lib/solargraph/api_map/store.rb +79 -126
  10. data/lib/solargraph/api_map.rb +247 -93
  11. data/lib/solargraph/bench.rb +17 -1
  12. data/lib/solargraph/complex_type/type_methods.rb +13 -1
  13. data/lib/solargraph/complex_type/unique_type.rb +118 -9
  14. data/lib/solargraph/complex_type.rb +48 -18
  15. data/lib/solargraph/convention/base.rb +3 -3
  16. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +60 -0
  17. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +100 -0
  18. data/lib/solargraph/convention/struct_definition.rb +101 -0
  19. data/lib/solargraph/convention.rb +5 -3
  20. data/lib/solargraph/doc_map.rb +274 -56
  21. data/lib/solargraph/equality.rb +33 -0
  22. data/lib/solargraph/gem_pins.rb +53 -37
  23. data/lib/solargraph/language_server/host/message_worker.rb +31 -11
  24. data/lib/solargraph/language_server/host.rb +24 -13
  25. data/lib/solargraph/language_server/message/base.rb +19 -12
  26. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +2 -0
  27. data/lib/solargraph/language_server/message/extended/document.rb +5 -2
  28. data/lib/solargraph/language_server/message/extended/document_gems.rb +3 -3
  29. data/lib/solargraph/language_server/message/initialize.rb +3 -1
  30. data/lib/solargraph/language_server/message/text_document/completion.rb +0 -3
  31. data/lib/solargraph/language_server/message/text_document/formatting.rb +4 -0
  32. data/lib/solargraph/library.rb +13 -11
  33. data/lib/solargraph/location.rb +28 -0
  34. data/lib/solargraph/logging.rb +1 -0
  35. data/lib/solargraph/parser/comment_ripper.rb +12 -6
  36. data/lib/solargraph/parser/flow_sensitive_typing.rb +227 -0
  37. data/lib/solargraph/parser/node_methods.rb +15 -1
  38. data/lib/solargraph/parser/node_processor.rb +3 -1
  39. data/lib/solargraph/parser/parser_gem/class_methods.rb +16 -14
  40. data/lib/solargraph/parser/parser_gem/node_chainer.rb +17 -23
  41. data/lib/solargraph/parser/parser_gem/node_methods.rb +5 -3
  42. data/lib/solargraph/parser/parser_gem/node_processors/alias_node.rb +2 -1
  43. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +21 -0
  44. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +4 -2
  45. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +4 -2
  46. data/lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb +23 -2
  47. data/lib/solargraph/parser/parser_gem/node_processors/cvasgn_node.rb +2 -1
  48. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +6 -3
  49. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +2 -1
  50. data/lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb +2 -1
  51. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +21 -0
  52. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +4 -2
  53. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +4 -3
  54. data/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb +29 -6
  55. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +41 -0
  56. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +2 -1
  57. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +4 -3
  58. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +28 -16
  59. data/lib/solargraph/parser/parser_gem/node_processors/sym_node.rb +2 -1
  60. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -0
  61. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -0
  62. data/lib/solargraph/parser/parser_gem/node_processors.rb +10 -0
  63. data/lib/solargraph/parser/region.rb +1 -1
  64. data/lib/solargraph/parser.rb +1 -0
  65. data/lib/solargraph/pin/base.rb +326 -43
  66. data/lib/solargraph/pin/base_variable.rb +18 -10
  67. data/lib/solargraph/pin/block.rb +3 -3
  68. data/lib/solargraph/pin/breakable.rb +9 -0
  69. data/lib/solargraph/pin/callable.rb +77 -6
  70. data/lib/solargraph/pin/closure.rb +18 -1
  71. data/lib/solargraph/pin/common.rb +5 -0
  72. data/lib/solargraph/pin/delegated_method.rb +20 -1
  73. data/lib/solargraph/pin/documenting.rb +16 -0
  74. data/lib/solargraph/pin/keyword.rb +7 -2
  75. data/lib/solargraph/pin/local_variable.rb +15 -6
  76. data/lib/solargraph/pin/method.rb +172 -42
  77. data/lib/solargraph/pin/namespace.rb +17 -9
  78. data/lib/solargraph/pin/parameter.rb +61 -11
  79. data/lib/solargraph/pin/proxy_type.rb +12 -6
  80. data/lib/solargraph/pin/reference/override.rb +10 -6
  81. data/lib/solargraph/pin/reference/require.rb +2 -2
  82. data/lib/solargraph/pin/signature.rb +42 -0
  83. data/lib/solargraph/pin/singleton.rb +1 -1
  84. data/lib/solargraph/pin/symbol.rb +3 -2
  85. data/lib/solargraph/pin/until.rb +18 -0
  86. data/lib/solargraph/pin/while.rb +18 -0
  87. data/lib/solargraph/pin.rb +4 -1
  88. data/lib/solargraph/pin_cache.rb +185 -0
  89. data/lib/solargraph/position.rb +16 -0
  90. data/lib/solargraph/range.rb +16 -0
  91. data/lib/solargraph/rbs_map/conversions.rb +199 -66
  92. data/lib/solargraph/rbs_map/core_fills.rb +32 -16
  93. data/lib/solargraph/rbs_map/core_map.rb +34 -11
  94. data/lib/solargraph/rbs_map/stdlib_map.rb +15 -5
  95. data/lib/solargraph/rbs_map.rb +74 -16
  96. data/lib/solargraph/shell.rb +19 -18
  97. data/lib/solargraph/source/chain/array.rb +12 -8
  98. data/lib/solargraph/source/chain/block_symbol.rb +1 -1
  99. data/lib/solargraph/source/chain/block_variable.rb +1 -1
  100. data/lib/solargraph/source/chain/call.rb +62 -25
  101. data/lib/solargraph/source/chain/constant.rb +1 -1
  102. data/lib/solargraph/source/chain/hash.rb +9 -3
  103. data/lib/solargraph/source/chain/head.rb +1 -1
  104. data/lib/solargraph/source/chain/if.rb +6 -1
  105. data/lib/solargraph/source/chain/link.rb +19 -5
  106. data/lib/solargraph/source/chain/literal.rb +27 -2
  107. data/lib/solargraph/source/chain/or.rb +1 -1
  108. data/lib/solargraph/source/chain/z_super.rb +1 -1
  109. data/lib/solargraph/source/chain.rb +106 -62
  110. data/lib/solargraph/source/cursor.rb +1 -11
  111. data/lib/solargraph/source/source_chainer.rb +2 -2
  112. data/lib/solargraph/source.rb +2 -1
  113. data/lib/solargraph/source_map/clip.rb +4 -2
  114. data/lib/solargraph/source_map/mapper.rb +9 -5
  115. data/lib/solargraph/source_map.rb +0 -17
  116. data/lib/solargraph/type_checker/checks.rb +4 -0
  117. data/lib/solargraph/type_checker.rb +41 -14
  118. data/lib/solargraph/version.rb +1 -1
  119. data/lib/solargraph/views/_method.erb +10 -10
  120. data/lib/solargraph/views/_namespace.erb +3 -3
  121. data/lib/solargraph/views/document.erb +10 -10
  122. data/lib/solargraph/workspace/config.rb +7 -3
  123. data/lib/solargraph/workspace.rb +16 -6
  124. data/lib/solargraph/yard_map/mapper/to_constant.rb +5 -2
  125. data/lib/solargraph/yard_map/mapper/to_method.rb +55 -15
  126. data/lib/solargraph/yard_map/mapper/to_namespace.rb +5 -2
  127. data/lib/solargraph/yard_map/mapper.rb +5 -3
  128. data/lib/solargraph/yard_map/to_method.rb +4 -2
  129. data/lib/solargraph/yardoc.rb +6 -9
  130. data/lib/solargraph.rb +20 -1
  131. data/rbs/fills/tuple.rbs +150 -0
  132. data/rbs_collection.yaml +19 -0
  133. data/solargraph.gemspec +6 -5
  134. metadata +56 -29
  135. data/lib/solargraph/cache.rb +0 -77
@@ -0,0 +1,19 @@
1
+ # Download sources
2
+ sources:
3
+ - type: git
4
+ name: ruby/gem_rbs_collection
5
+ remote: https://github.com/ruby/gem_rbs_collection.git
6
+ revision: main
7
+ repo_dir: gems
8
+
9
+ # You can specify local directories as sources also.
10
+ # - type: local
11
+ # path: path/to/your/local/repository
12
+
13
+ # A directory to install the downloaded RBSs
14
+ path: .gem_rbs_collection
15
+
16
+ # gems:
17
+ # # If you want to avoid installing rbs files for gems, you can specify them here.
18
+ # - name: GEM_NAME
19
+ # ignore: true
data/solargraph.gemspec CHANGED
@@ -24,30 +24,31 @@ Gem::Specification.new do |s|
24
24
  s.required_ruby_version = '>= 3.0'
25
25
 
26
26
  s.add_runtime_dependency 'backport', '~> 1.2'
27
- s.add_runtime_dependency 'benchmark'
27
+ s.add_runtime_dependency 'benchmark', '~> 0.4'
28
28
  s.add_runtime_dependency 'bundler', '~> 2.0'
29
29
  s.add_runtime_dependency 'diff-lcs', '~> 1.4'
30
- s.add_runtime_dependency 'jaro_winkler', '~> 1.6'
30
+ s.add_runtime_dependency 'jaro_winkler', '~> 1.6', '>= 1.6.1'
31
31
  s.add_runtime_dependency 'kramdown', '~> 2.3'
32
32
  s.add_runtime_dependency 'kramdown-parser-gfm', '~> 1.1'
33
33
  s.add_runtime_dependency 'logger', '~> 1.6'
34
34
  s.add_runtime_dependency 'observer', '~> 0.1'
35
35
  s.add_runtime_dependency 'ostruct', '~> 0.6'
36
36
  s.add_runtime_dependency 'parser', '~> 3.0'
37
+ s.add_runtime_dependency 'prism', '~> 1.4'
37
38
  s.add_runtime_dependency 'rbs', '~> 3.3'
38
- s.add_runtime_dependency 'reverse_markdown', '>= 2.0', '< 4'
39
+ s.add_runtime_dependency 'reverse_markdown', '~> 3.0'
39
40
  s.add_runtime_dependency 'rubocop', '~> 1.38'
40
41
  s.add_runtime_dependency 'thor', '~> 1.0'
41
42
  s.add_runtime_dependency 'tilt', '~> 2.0'
42
43
  s.add_runtime_dependency 'yard', '~> 0.9', '>= 0.9.24'
43
44
  s.add_runtime_dependency 'yard-solargraph', '~> 0.1'
44
45
 
45
- s.add_development_dependency 'pry'
46
+ s.add_development_dependency 'pry', '~> 0.15'
46
47
  s.add_development_dependency 'public_suffix', '~> 3.1'
47
48
  s.add_development_dependency 'rake', '~> 13.2'
48
49
  s.add_development_dependency 'rspec', '~> 3.5'
49
50
  s.add_development_dependency 'simplecov', '~> 0.14'
50
51
  s.add_development_dependency 'webmock', '~> 3.6'
51
52
  # work around missing yard dependency needed as of Ruby 3.5
52
- s.add_development_dependency 'irb'
53
+ s.add_development_dependency 'irb', '~> 1.15'
53
54
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solargraph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.54.1
4
+ version: 0.56.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-04-26 00:00:00.000000000 Z
10
+ date: 2025-07-01 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: backport
@@ -28,16 +27,16 @@ dependencies:
28
27
  name: benchmark
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - ">="
30
+ - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '0'
32
+ version: '0.4'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - ">="
37
+ - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '0'
39
+ version: '0.4'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: bundler
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -73,6 +72,9 @@ dependencies:
73
72
  - - "~>"
74
73
  - !ruby/object:Gem::Version
75
74
  version: '1.6'
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 1.6.1
76
78
  type: :runtime
77
79
  prerelease: false
78
80
  version_requirements: !ruby/object:Gem::Requirement
@@ -80,6 +82,9 @@ dependencies:
80
82
  - - "~>"
81
83
  - !ruby/object:Gem::Version
82
84
  version: '1.6'
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 1.6.1
83
88
  - !ruby/object:Gem::Dependency
84
89
  name: kramdown
85
90
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +169,20 @@ dependencies:
164
169
  - - "~>"
165
170
  - !ruby/object:Gem::Version
166
171
  version: '3.0'
172
+ - !ruby/object:Gem::Dependency
173
+ name: prism
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '1.4'
179
+ type: :runtime
180
+ prerelease: false
181
+ version_requirements: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '1.4'
167
186
  - !ruby/object:Gem::Dependency
168
187
  name: rbs
169
188
  requirement: !ruby/object:Gem::Requirement
@@ -182,22 +201,16 @@ dependencies:
182
201
  name: reverse_markdown
183
202
  requirement: !ruby/object:Gem::Requirement
184
203
  requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '2.0'
188
- - - "<"
204
+ - - "~>"
189
205
  - !ruby/object:Gem::Version
190
- version: '4'
206
+ version: '3.0'
191
207
  type: :runtime
192
208
  prerelease: false
193
209
  version_requirements: !ruby/object:Gem::Requirement
194
210
  requirements:
195
- - - ">="
196
- - !ruby/object:Gem::Version
197
- version: '2.0'
198
- - - "<"
211
+ - - "~>"
199
212
  - !ruby/object:Gem::Version
200
- version: '4'
213
+ version: '3.0'
201
214
  - !ruby/object:Gem::Dependency
202
215
  name: rubocop
203
216
  requirement: !ruby/object:Gem::Requirement
@@ -278,16 +291,16 @@ dependencies:
278
291
  name: pry
279
292
  requirement: !ruby/object:Gem::Requirement
280
293
  requirements:
281
- - - ">="
294
+ - - "~>"
282
295
  - !ruby/object:Gem::Version
283
- version: '0'
296
+ version: '0.15'
284
297
  type: :development
285
298
  prerelease: false
286
299
  version_requirements: !ruby/object:Gem::Requirement
287
300
  requirements:
288
- - - ">="
301
+ - - "~>"
289
302
  - !ruby/object:Gem::Version
290
- version: '0'
303
+ version: '0.15'
291
304
  - !ruby/object:Gem::Dependency
292
305
  name: public_suffix
293
306
  requirement: !ruby/object:Gem::Requirement
@@ -362,16 +375,16 @@ dependencies:
362
375
  name: irb
363
376
  requirement: !ruby/object:Gem::Requirement
364
377
  requirements:
365
- - - ">="
378
+ - - "~>"
366
379
  - !ruby/object:Gem::Version
367
- version: '0'
380
+ version: '1.15'
368
381
  type: :development
369
382
  prerelease: false
370
383
  version_requirements: !ruby/object:Gem::Requirement
371
384
  requirements:
372
- - - ">="
385
+ - - "~>"
373
386
  - !ruby/object:Gem::Version
374
- version: '0'
387
+ version: '1.15'
375
388
  description: IDE tools for code completion, inline documentation, and static analysis
376
389
  email: admin@castwide.com
377
390
  executables:
@@ -397,10 +410,10 @@ files:
397
410
  - lib/solargraph.rb
398
411
  - lib/solargraph/api_map.rb
399
412
  - lib/solargraph/api_map/cache.rb
413
+ - lib/solargraph/api_map/index.rb
400
414
  - lib/solargraph/api_map/source_to_yard.rb
401
415
  - lib/solargraph/api_map/store.rb
402
416
  - lib/solargraph/bench.rb
403
- - lib/solargraph/cache.rb
404
417
  - lib/solargraph/complex_type.rb
405
418
  - lib/solargraph/complex_type/type_methods.rb
406
419
  - lib/solargraph/complex_type/unique_type.rb
@@ -409,6 +422,9 @@ files:
409
422
  - lib/solargraph/convention/gemfile.rb
410
423
  - lib/solargraph/convention/gemspec.rb
411
424
  - lib/solargraph/convention/rakefile.rb
425
+ - lib/solargraph/convention/struct_definition.rb
426
+ - lib/solargraph/convention/struct_definition/struct_assignment_node.rb
427
+ - lib/solargraph/convention/struct_definition/struct_definition_node.rb
412
428
  - lib/solargraph/converters/dd.rb
413
429
  - lib/solargraph/converters/dl.rb
414
430
  - lib/solargraph/converters/dt.rb
@@ -423,6 +439,7 @@ files:
423
439
  - lib/solargraph/diagnostics/update_errors.rb
424
440
  - lib/solargraph/doc_map.rb
425
441
  - lib/solargraph/environ.rb
442
+ - lib/solargraph/equality.rb
426
443
  - lib/solargraph/gem_pins.rb
427
444
  - lib/solargraph/language_server.rb
428
445
  - lib/solargraph/language_server/completion_item_kinds.rb
@@ -491,6 +508,7 @@ files:
491
508
  - lib/solargraph/page.rb
492
509
  - lib/solargraph/parser.rb
493
510
  - lib/solargraph/parser/comment_ripper.rb
511
+ - lib/solargraph/parser/flow_sensitive_typing.rb
494
512
  - lib/solargraph/parser/node_methods.rb
495
513
  - lib/solargraph/parser/node_processor.rb
496
514
  - lib/solargraph/parser/node_processor/base.rb
@@ -501,6 +519,7 @@ files:
501
519
  - lib/solargraph/parser/parser_gem/node_methods.rb
502
520
  - lib/solargraph/parser/parser_gem/node_processors.rb
503
521
  - lib/solargraph/parser/parser_gem/node_processors/alias_node.rb
522
+ - lib/solargraph/parser/parser_gem/node_processors/and_node.rb
504
523
  - lib/solargraph/parser/parser_gem/node_processors/args_node.rb
505
524
  - lib/solargraph/parser/parser_gem/node_processors/begin_node.rb
506
525
  - lib/solargraph/parser/parser_gem/node_processors/block_node.rb
@@ -509,21 +528,26 @@ files:
509
528
  - lib/solargraph/parser/parser_gem/node_processors/def_node.rb
510
529
  - lib/solargraph/parser/parser_gem/node_processors/defs_node.rb
511
530
  - lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb
531
+ - lib/solargraph/parser/parser_gem/node_processors/if_node.rb
512
532
  - lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb
513
533
  - lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb
514
534
  - lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb
515
535
  - lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb
536
+ - lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb
516
537
  - lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb
517
538
  - lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb
518
539
  - lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb
519
540
  - lib/solargraph/parser/parser_gem/node_processors/send_node.rb
520
541
  - lib/solargraph/parser/parser_gem/node_processors/sym_node.rb
542
+ - lib/solargraph/parser/parser_gem/node_processors/until_node.rb
543
+ - lib/solargraph/parser/parser_gem/node_processors/while_node.rb
521
544
  - lib/solargraph/parser/region.rb
522
545
  - lib/solargraph/parser/snippet.rb
523
546
  - lib/solargraph/pin.rb
524
547
  - lib/solargraph/pin/base.rb
525
548
  - lib/solargraph/pin/base_variable.rb
526
549
  - lib/solargraph/pin/block.rb
550
+ - lib/solargraph/pin/breakable.rb
527
551
  - lib/solargraph/pin/callable.rb
528
552
  - lib/solargraph/pin/class_variable.rb
529
553
  - lib/solargraph/pin/closure.rb
@@ -554,6 +578,9 @@ files:
554
578
  - lib/solargraph/pin/signature.rb
555
579
  - lib/solargraph/pin/singleton.rb
556
580
  - lib/solargraph/pin/symbol.rb
581
+ - lib/solargraph/pin/until.rb
582
+ - lib/solargraph/pin/while.rb
583
+ - lib/solargraph/pin_cache.rb
557
584
  - lib/solargraph/position.rb
558
585
  - lib/solargraph/range.rb
559
586
  - lib/solargraph/rbs_map.rb
@@ -617,6 +644,8 @@ files:
617
644
  - lib/solargraph/yard_map/to_method.rb
618
645
  - lib/solargraph/yard_tags.rb
619
646
  - lib/solargraph/yardoc.rb
647
+ - rbs/fills/tuple.rbs
648
+ - rbs_collection.yaml
620
649
  - solargraph.gemspec
621
650
  homepage: https://solargraph.org
622
651
  licenses:
@@ -626,7 +655,6 @@ metadata:
626
655
  bug_tracker_uri: https://github.com/castwide/solargraph/issues
627
656
  changelog_uri: https://github.com/castwide/solargraph/blob/master/CHANGELOG.md
628
657
  source_code_uri: https://github.com/castwide/solargraph
629
- post_install_message:
630
658
  rdoc_options: []
631
659
  require_paths:
632
660
  - lib
@@ -641,8 +669,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
641
669
  - !ruby/object:Gem::Version
642
670
  version: '0'
643
671
  requirements: []
644
- rubygems_version: 3.3.7
645
- signing_key:
672
+ rubygems_version: 3.6.7
646
673
  specification_version: 4
647
674
  summary: A Ruby language server
648
675
  test_files: []
@@ -1,77 +0,0 @@
1
- require 'fileutils'
2
- require 'rbs'
3
-
4
- module Solargraph
5
- module Cache
6
- class << self
7
- # The base directory where cached documentation is installed.
8
- #
9
- # @return [String]
10
- def base_dir
11
- # The directory is not stored in a variable so it can be overridden
12
- # in specs.
13
- ENV['SOLARGRAPH_CACHE'] ||
14
- (ENV['XDG_CACHE_HOME'] ? File.join(ENV['XDG_CACHE_HOME'], 'solargraph') : nil) ||
15
- File.join(Dir.home, '.cache', 'solargraph')
16
- end
17
-
18
- # The working directory for the current Ruby, RBS, and Solargraph versions.
19
- #
20
- # @return [String]
21
- def work_dir
22
- # The directory is not stored in a variable so it can be overridden
23
- # in specs.
24
- File.join(base_dir, "ruby-#{RUBY_VERSION}", "rbs-#{RBS::VERSION}", "solargraph-#{Solargraph::VERSION}")
25
- end
26
-
27
- # Append the given path to the current cache directory (`work_dir`).
28
- #
29
- # @example
30
- # Cache.join('date-3.4.1.ser')
31
- #
32
- # @param path [Array<String>]
33
- # @return [String]
34
- def join *path
35
- File.join(work_dir, *path)
36
- end
37
-
38
- # @param path [Array<String>]
39
- # @return [Array<Solargraph::Pin::Base>, nil]
40
- def load *path
41
- file = join(*path)
42
- return nil unless File.file?(file)
43
- Marshal.load(File.read(file, mode: 'rb'))
44
- rescue StandardError => e
45
- Solargraph.logger.warn "Failed to load cached file #{file}: [#{e.class}] #{e.message}"
46
- FileUtils.rm_f file
47
- nil
48
- end
49
-
50
- def exist? *path
51
- File.file? join(*path)
52
- end
53
-
54
- # @param path [Array<String>]
55
- # @param pins [Array<Pin::Base>]
56
- # @return [void]
57
- def save *path, pins
58
- file = File.join(work_dir, *path)
59
- base = File.dirname(file)
60
- FileUtils.mkdir_p base unless File.directory?(base)
61
- ser = Marshal.dump(pins)
62
- File.write file, ser, mode: 'wb'
63
- end
64
-
65
- # @return [void]
66
- # @param path [Array<String>]
67
- def uncache *path
68
- FileUtils.rm_rf File.join(work_dir, *path), secure: true
69
- end
70
-
71
- # @return [void]
72
- def clear
73
- FileUtils.rm_rf base_dir, secure: true
74
- end
75
- end
76
- end
77
- end