ruby-lsp-rspec 0.1.9 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea19794fda048857798f87bb194d7c693da87320ba684cb7bcfb834ee7aaf124
4
- data.tar.gz: 4daa91246afac9919461a362d0ce2f289c03f531840811ef25e8c94bb75f43b5
3
+ metadata.gz: 14dfb45f32aa9c2a4041da7e65a851fb7c78928ec3fe29663092b2511c186ada
4
+ data.tar.gz: 382982a793771a83e0ac9da31756244eca80750b1f35d7ed146fe01c3168514b
5
5
  SHA512:
6
- metadata.gz: 9ddbd1cb07a8856899e0587d42e565d114b2317178617c116d8b11836a5cadc79f6c14145e45c35562af4287105834d789be5dc96dcba305361f05047ee098d2
7
- data.tar.gz: c8efb631e8d65970138c4b8d1bbe3e84afaccbc0b20c94150014afbb7c439c19fdf99117edf7ab6c320337cbe30e2dc8ac2c32fa213b1bd7ce8c1a2f362ba88b
6
+ metadata.gz: e9404a0138a746c552480bada9b04869a2a3f2935db75a785669a0bbb9c15f5d87f25c3e11b16041f87c5bb432693afc8e960abab05b1b9efd43b040050f090a
7
+ data.tar.gz: 22abcfadc79d4de2aecca269cce28ec987f64ee20df4afdc94fc334d565bc524ca8afaf384cf6a50481705762653e5633b2a9eff2e3f23f56b91753702354c55
@@ -5,6 +5,7 @@ require "ruby_lsp/addon"
5
5
  require "ruby_lsp/internal"
6
6
 
7
7
  require_relative "code_lens"
8
+ require_relative "document_symbol"
8
9
 
9
10
  module RubyLsp
10
11
  module RSpec
@@ -20,14 +21,25 @@ module RubyLsp
20
21
  # Creates a new CodeLens listener. This method is invoked on every CodeLens request
21
22
  sig do
22
23
  override.params(
24
+ response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::CodeLens],
23
25
  uri: URI::Generic,
24
26
  emitter: Prism::Dispatcher,
25
- ).returns(T.nilable(Listener[T::Array[Interface::CodeLens]]))
27
+ ).void
26
28
  end
27
- def create_code_lens_listener(uri, emitter)
29
+ def create_code_lens_listener(response_builder, uri, emitter)
28
30
  return unless uri.to_standardized_path&.end_with?("_test.rb") || uri.to_standardized_path&.end_with?("_spec.rb")
29
31
 
30
- CodeLens.new(uri, emitter)
32
+ CodeLens.new(response_builder, uri, emitter)
33
+ end
34
+
35
+ sig do
36
+ override.params(
37
+ response_builder: ResponseBuilders::DocumentSymbol,
38
+ dispatcher: Prism::Dispatcher,
39
+ ).void
40
+ end
41
+ def create_document_symbol_listener(response_builder, dispatcher)
42
+ DocumentSymbol.new(response_builder, dispatcher)
31
43
  end
32
44
 
33
45
  sig { override.returns(String) }
@@ -3,20 +3,20 @@
3
3
 
4
4
  module RubyLsp
5
5
  module RSpec
6
- class CodeLens < ::RubyLsp::Listener
6
+ class CodeLens
7
7
  extend T::Sig
8
- extend T::Generic
9
8
 
10
9
  include ::RubyLsp::Requests::Support::Common
11
10
 
12
- ResponseType = type_member { { fixed: T::Array[::RubyLsp::Interface::CodeLens] } }
13
-
14
- sig { override.returns(ResponseType) }
15
- attr_reader :_response
16
-
17
- sig { params(uri: URI::Generic, dispatcher: Prism::Dispatcher).void }
18
- def initialize(uri, dispatcher)
19
- @_response = T.let([], ResponseType)
11
+ sig do
12
+ params(
13
+ response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::CodeLens],
14
+ uri: URI::Generic,
15
+ dispatcher: Prism::Dispatcher,
16
+ ).void
17
+ end
18
+ def initialize(response_builder, uri, dispatcher)
19
+ @response_builder = response_builder
20
20
  # Listener is only initialized if uri.to_standardized_path is valid
21
21
  @path = T.let(T.must(uri.to_standardized_path), String)
22
22
  @group_id = T.let(1, Integer)
@@ -39,8 +39,6 @@ module RubyLsp
39
39
  end,
40
40
  String,
41
41
  )
42
-
43
- super(dispatcher)
44
42
  end
45
43
 
46
44
  sig { params(node: Prism::CallNode).void }
@@ -119,7 +117,7 @@ module RubyLsp
119
117
  },
120
118
  ]
121
119
 
122
- @_response << create_code_lens(
120
+ @response_builder << create_code_lens(
123
121
  node,
124
122
  title: "Run",
125
123
  command_name: "rubyLsp.runTest",
@@ -127,7 +125,7 @@ module RubyLsp
127
125
  data: { type: "test", **grouping_data },
128
126
  )
129
127
 
130
- @_response << create_code_lens(
128
+ @response_builder << create_code_lens(
131
129
  node,
132
130
  title: "Run In Terminal",
133
131
  command_name: "rubyLsp.runTestInTerminal",
@@ -135,7 +133,7 @@ module RubyLsp
135
133
  data: { type: "test_in_terminal", **grouping_data },
136
134
  )
137
135
 
138
- @_response << create_code_lens(
136
+ @response_builder << create_code_lens(
139
137
  node,
140
138
  title: "Debug",
141
139
  command_name: "rubyLsp.debugTest",
@@ -0,0 +1,88 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module RubyLsp
5
+ module RSpec
6
+ class DocumentSymbol
7
+ extend T::Sig
8
+
9
+ include ::RubyLsp::Requests::Support::Common
10
+
11
+ sig do
12
+ params(
13
+ response_builder: ResponseBuilders::DocumentSymbol,
14
+ dispatcher: Prism::Dispatcher,
15
+ ).void
16
+ end
17
+ def initialize(response_builder, dispatcher)
18
+ @response_builder = response_builder
19
+
20
+ dispatcher.register(self, :on_call_node_enter, :on_call_node_leave)
21
+ end
22
+
23
+ sig { params(node: Prism::CallNode).void }
24
+ def on_call_node_enter(node)
25
+ case node.message
26
+ when "example", "it", "specify"
27
+ name = generate_name(node)
28
+
29
+ return unless name
30
+
31
+ @response_builder.last.children << RubyLsp::Interface::DocumentSymbol.new(
32
+ name: name,
33
+ kind: LanguageServer::Protocol::Constant::SymbolKind::METHOD,
34
+ selection_range: range_from_node(node),
35
+ range: range_from_node(node),
36
+ )
37
+ when "context", "describe"
38
+ return if node.receiver && node.receiver&.slice != "RSpec"
39
+
40
+ name = generate_name(node)
41
+
42
+ return unless name
43
+
44
+ symbol = RubyLsp::Interface::DocumentSymbol.new(
45
+ name: name,
46
+ kind: LanguageServer::Protocol::Constant::SymbolKind::MODULE,
47
+ selection_range: range_from_node(node),
48
+ range: range_from_node(node),
49
+ children: [],
50
+ )
51
+
52
+ @response_builder.last.children << symbol
53
+ @response_builder.push(symbol)
54
+ end
55
+ end
56
+
57
+ sig { params(node: Prism::CallNode).void }
58
+ def on_call_node_leave(node)
59
+ case node.message
60
+ when "context", "describe"
61
+ return if node.receiver && node.receiver&.slice != "RSpec"
62
+
63
+ @response_builder.pop
64
+ end
65
+ end
66
+
67
+ sig { params(node: Prism::CallNode).returns(T.nilable(String)) }
68
+ def generate_name(node)
69
+ arguments = node.arguments&.arguments
70
+
71
+ return unless arguments
72
+
73
+ argument = arguments.first
74
+
75
+ case argument
76
+ when Prism::StringNode
77
+ argument.content.dump
78
+ when Prism::CallNode
79
+ "<#{argument.name}>"
80
+ when nil
81
+ nil
82
+ else
83
+ argument.slice
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -3,6 +3,6 @@
3
3
 
4
4
  module RubyLsp
5
5
  module RSpec
6
- VERSION = "0.1.9"
6
+ VERSION = "0.1.10"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lsp-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Lo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-16 00:00:00.000000000 Z
11
+ date: 2024-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-lsp
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.13.0
19
+ version: 0.14.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.13.0
26
+ version: 0.14.0
27
27
  description: RSpec addon for ruby-lsp
28
28
  email:
29
29
  - stan001212@gmail.com
@@ -41,6 +41,7 @@ files:
41
41
  - lib/ruby-lsp-rspec.rb
42
42
  - lib/ruby_lsp/ruby_lsp_rspec/addon.rb
43
43
  - lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb
44
+ - lib/ruby_lsp/ruby_lsp_rspec/document_symbol.rb
44
45
  - lib/ruby_lsp_rspec/version.rb
45
46
  homepage: https://github.com/st0012/ruby-lsp-rspec
46
47
  licenses: