Skip to content

Commit 6464930

Browse files
authored
Merge pull request #2 from st0012/use-yarp
Use yarp-powered ruby-lsp
2 parents 77a9cdd + 8d01cf9 commit 6464930

File tree

13 files changed

+2725
-5408
lines changed

13 files changed

+2725
-5408
lines changed

Gemfile.lock

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ PATH
22
remote: .
33
specs:
44
ruby-lsp-rspec (0.1.2)
5-
ruby-lsp (~> 0.10.1)
5+
ruby-lsp (~> 0.11.0)
66

77
GEM
88
remote: https://rubygems.org/
@@ -22,7 +22,7 @@ GEM
2222
language_server-protocol (3.17.0.3)
2323
netrc (0.11.0)
2424
parallel (1.23.0)
25-
parser (3.2.2.3)
25+
parser (3.2.2.4)
2626
ast (~> 2.4.1)
2727
racc
2828
prettier_print (1.2.1)
@@ -31,15 +31,13 @@ GEM
3131
racc (1.7.1)
3232
rainbow (3.1.1)
3333
rake (13.0.6)
34-
rbi (0.0.17)
35-
ast
36-
parser (>= 3.0.0)
34+
rbi (0.1.1)
3735
sorbet-runtime (>= 0.5.9204)
38-
unparser (>= 0.5.6)
36+
yarp (>= 0.11.0)
3937
rdoc (6.5.0)
4038
psych (>= 4.0.0)
4139
regexp_parser (2.8.1)
42-
reline (0.3.8)
40+
reline (0.3.9)
4341
io-console (~> 0.5)
4442
rexml (3.2.6)
4543
rspec (3.12.0)
@@ -51,11 +49,11 @@ GEM
5149
rspec-expectations (3.12.3)
5250
diff-lcs (>= 1.2.0, < 2.0)
5351
rspec-support (~> 3.12.0)
54-
rspec-mocks (3.12.5)
52+
rspec-mocks (3.12.6)
5553
diff-lcs (>= 1.2.0, < 2.0)
5654
rspec-support (~> 3.12.0)
57-
rspec-support (3.12.0)
58-
rubocop (1.56.2)
55+
rspec-support (3.12.1)
56+
rubocop (1.56.4)
5957
base64 (~> 0.1.1)
6058
json (~> 2.3)
6159
language_server-protocol (>= 3.17.0)
@@ -73,49 +71,45 @@ GEM
7371
rubocop (~> 1.0)
7472
rubocop-shopify (2.14.0)
7573
rubocop (~> 1.51)
76-
rubocop-sorbet (0.7.3)
74+
rubocop-sorbet (0.7.4)
7775
rubocop (>= 0.90.0)
78-
ruby-lsp (0.10.1)
76+
ruby-lsp (0.11.1)
7977
language_server-protocol (~> 3.17.0)
80-
sorbet-runtime
81-
syntax_tree (>= 6.1.1, < 7)
82-
yarp (>= 0.11, < 0.12)
78+
sorbet-runtime (>= 0.5.5685)
79+
yarp (>= 0.12, < 0.13)
8380
ruby-progressbar (1.13.0)
84-
sorbet (0.5.11010)
85-
sorbet-static (= 0.5.11010)
86-
sorbet-runtime (0.5.11010)
87-
sorbet-static (0.5.11010-universal-darwin)
88-
sorbet-static (0.5.11010-x86_64-linux)
89-
sorbet-static-and-runtime (0.5.11010)
90-
sorbet (= 0.5.11010)
91-
sorbet-runtime (= 0.5.11010)
92-
spoom (1.2.3)
81+
sorbet (0.5.11062)
82+
sorbet-static (= 0.5.11062)
83+
sorbet-runtime (0.5.11062)
84+
sorbet-static (0.5.11062-universal-darwin)
85+
sorbet-static (0.5.11062-x86_64-linux)
86+
sorbet-static-and-runtime (0.5.11062)
87+
sorbet (= 0.5.11062)
88+
sorbet-runtime (= 0.5.11062)
89+
spoom (1.2.4)
9390
erubi (>= 1.10.0)
9491
sorbet-static-and-runtime (>= 0.5.10187)
9592
syntax_tree (>= 6.1.1)
9693
thor (>= 0.19.2)
9794
stringio (3.0.8)
98-
syntax_tree (6.1.1)
95+
syntax_tree (6.2.0)
9996
prettier_print (>= 1.2.0)
100-
tapioca (0.11.8)
97+
tapioca (0.11.9)
10198
bundler (>= 2.2.25)
10299
netrc (>= 0.11.0)
103100
parallel (>= 1.21.0)
104-
rbi (~> 0.0.0, >= 0.0.16)
101+
rbi (~> 0.1.0, >= 0.1.0)
105102
sorbet-static-and-runtime (>= 0.5.10187)
106103
spoom (~> 1.2.0, >= 1.2.0)
107104
thor (>= 1.2.0)
108105
yard-sorbet
109106
thor (1.2.2)
110-
unicode-display_width (2.4.2)
111-
unparser (0.6.8)
112-
diff-lcs (~> 1.3)
113-
parser (>= 3.2.0)
107+
unicode-display_width (2.5.0)
114108
yard (0.9.34)
115109
yard-sorbet (0.8.1)
116110
sorbet-runtime (>= 0.5)
117111
yard (>= 0.9)
118-
yarp (0.11.0)
112+
yarp (0.12.0)
119113

120114
PLATFORMS
121115
arm64-darwin-22

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![Gem Version](https://badge.fury.io/rb/ruby-lsp-rspec.svg)](https://badge.fury.io/rb/ruby-lsp-rspec)
44

5-
Ruby LSP RSpec is a [Ruby LSP](https://github.com/Shopify/ruby-lsp) extension for displaying CodeLens for RSpec tests.
5+
Ruby LSP RSpec is a [Ruby LSP](https://github.com/Shopify/ruby-lsp) addon for displaying CodeLens for RSpec tests.
66

77
![Screenshot of the code lenses](/misc/example.gif)
88

lib/ruby-lsp-rspec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
require "sorbet-runtime"
55
require "ruby_lsp_rspec/version"
6-
require "ruby_lsp/ruby_lsp_rspec/extension"
6+
require "ruby_lsp/ruby_lsp_rspec/addon"
77

88
module RubyLsp
99
module RSpec

lib/ruby_lsp/ruby_lsp_rspec/extension.rb renamed to lib/ruby_lsp/ruby_lsp_rspec/addon.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# typed: strict
22
# frozen_string_literal: true
33

4-
require "ruby_lsp/extension"
4+
require "ruby_lsp/addon"
55
require "ruby_lsp/internal"
66

77
require_relative "code_lens"
88

99
module RubyLsp
1010
module RSpec
11-
class Extension < ::RubyLsp::Extension
11+
class Addon < ::RubyLsp::Addon
1212
extend T::Sig
1313

1414
sig { override.void }

lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb

Lines changed: 27 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class CodeLens < ::RubyLsp::Listener
1818
def initialize(uri, emitter, message_queue)
1919
@_response = T.let([], ResponseType)
2020
@path = T.let(uri.to_standardized_path, T.nilable(String))
21-
emitter.register(self, :on_command, :on_command_call, :on_call)
21+
emitter.register(self, :on_call)
2222

2323
@base_command = T.let(
2424
begin
@@ -40,81 +40,43 @@ def initialize(uri, emitter, message_queue)
4040
super(emitter, message_queue)
4141
end
4242

43-
sig { params(node: SyntaxTree::CallNode).void }
43+
sig { params(node: YARP::CallNode).void }
4444
def on_call(node)
45-
add_group_code_lens(node)
46-
end
47-
48-
sig { params(node: SyntaxTree::CommandCall).void }
49-
def on_command_call(node)
50-
add_group_code_lens(node)
51-
end
52-
53-
sig { params(node: SyntaxTree::Command).void }
54-
def on_command(node)
55-
message_value = node.message.value
45+
message_value = node.message
5646
if message_value == "it"
57-
argument = node.arguments.parts.first
58-
59-
name = case argument
60-
when SyntaxTree::StringLiteral
61-
argument.parts.first.value
62-
when SyntaxTree::VarRef
63-
argument.value.value
64-
end
65-
47+
name = generate_name(node)
6648
add_test_code_lens(node, name: name, kind: :example)
6749
elsif message_value == "describe" || message_value == "context"
68-
add_group_code_lens(node)
69-
end
70-
end
71-
72-
private
50+
return if node.receiver && node.receiver.name.to_s != "RSpec"
7351

74-
sig do
75-
params(node: T.any(
76-
SyntaxTree::StringLiteral,
77-
SyntaxTree::ConstPathRef,
78-
SyntaxTree::ConstRef,
79-
SyntaxTree::TopConstRef,
80-
SyntaxTree::VarRef,
81-
)).returns(T.nilable(String))
82-
end
83-
def get_group_name(node)
84-
case node
85-
when SyntaxTree::StringLiteral
86-
node.parts.first.value
87-
when SyntaxTree::ConstPathRef, SyntaxTree::ConstRef, SyntaxTree::TopConstRef
88-
full_constant_name(node)
89-
when SyntaxTree::VarRef
90-
node.value.value
52+
name = generate_name(node)
53+
add_test_code_lens(node, name: name, kind: :group)
9154
end
9255
end
9356

94-
sig { params(node: T.any(SyntaxTree::CallNode, SyntaxTree::CommandCall, SyntaxTree::Command)).void }
95-
def add_group_code_lens(node)
96-
return unless node.message.value == "describe" || node.message.value == "context"
97-
98-
case node
99-
when SyntaxTree::CommandCall, SyntaxTree::CallNode
100-
return if node.receiver && node.receiver.value.value != "RSpec"
101-
end
102-
103-
argument = case node
104-
when SyntaxTree::CallNode
105-
node.arguments.arguments.parts.first
106-
when SyntaxTree::CommandCall, SyntaxTree::Command
107-
node.arguments.parts.first
57+
sig { params(node: YARP::CallNode).returns(String) }
58+
def generate_name(node)
59+
if node.arguments
60+
argument = node.arguments.arguments.first
61+
62+
case argument
63+
when YARP::StringNode
64+
argument.content
65+
when YARP::CallNode
66+
"<#{argument.name}>"
67+
when nil
68+
""
69+
else
70+
argument.slice
71+
end
72+
else
73+
"<unnamed>"
10874
end
109-
110-
name = get_group_name(argument)
111-
112-
return unless name
113-
114-
add_test_code_lens(node, name: name, kind: :group)
11575
end
11676

117-
sig { params(node: SyntaxTree::Node, name: String, kind: Symbol).void }
77+
private
78+
79+
sig { params(node: YARP::Node, name: String, kind: Symbol).void }
11880
def add_test_code_lens(node, name:, kind:)
11981
return unless @path
12082

ruby-lsp-rspec.gemspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
88
spec.authors = ["Stan Lo"]
99
spec.email = ["[email protected]"]
1010

11-
spec.summary = "RSpec extension for ruby-lsp"
12-
spec.description = "RSpec extension for ruby-lsp"
11+
spec.summary = "RSpec addon for ruby-lsp"
12+
spec.description = "RSpec addon for ruby-lsp"
1313
spec.homepage = "https://github.com/st0012/ruby-lsp-rspec"
1414
spec.license = "MIT"
1515
spec.required_ruby_version = ">= 3.0.0"
@@ -41,5 +41,5 @@ Gem::Specification.new do |spec|
4141
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
4242
spec.require_paths = ["lib"]
4343

44-
spec.add_dependency "ruby-lsp", "~> 0.10.1"
44+
spec.add_dependency "ruby-lsp", "~> 0.11.0"
4545
end

sorbet/rbi/gems/.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
**/*.rbi linguist-generated=true

0 commit comments

Comments
 (0)