ruby-lsp-rails 0.2.7 → 0.2.8

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: d9abe40b8b01b5f0e7e81a3831b3da7fa57902d64f17cb0ce3a950d043d895ab
4
- data.tar.gz: 02b60ff2b040617a25fea20d715066a17092459532f56dc08a4350997e1369bc
3
+ metadata.gz: c3d8b40085e6c7ca1e23283423a0966da489180e36e4fb50415f41b1a37f5294
4
+ data.tar.gz: e98455cb80f6c386e9aa1c3fa516a29cbf0027826aed8c5af029cc1de61aaa05
5
5
  SHA512:
6
- metadata.gz: e76db2c3f6ea300e1b7a935b958a60b18a322e5039f518a0ccbc4efe2dbe7c69f65401987c0969d9fff479e3526831600a24788f477cbd19d3a2d528dc63a293
7
- data.tar.gz: 1556932fe8c67752607b15e2520c2f71c0c88c2e1a005c78c1c72b31e49a2efac9e38a9da499bb91478ea8f8386661a269c18ab300809823d80c519cf517afa1
6
+ metadata.gz: ff23cfda2194b449136438eee3475801c4568d7efa9dea08c9c60bd11f732af31c10a30b95014c7d366fbf5ad86dd7471dd3419ef4ef2808f031307d1ffc841e
7
+ data.tar.gz: 4a776b1c73b4c2683ba6db906afc3dccd2221f0dd4943a56d1a7fd1f0b4c43f92a789231d82e85aec2ba664fd505013c3c3a594a7b57d6931b35bfd433998ca0
@@ -17,8 +17,8 @@ module RubyLsp
17
17
  @client ||= T.let(RailsClient.new, T.nilable(RailsClient))
18
18
  end
19
19
 
20
- sig { override.void }
21
- def activate
20
+ sig { override.params(message_queue: Thread::Queue).void }
21
+ def activate(message_queue)
22
22
  client.check_if_server_is_running!
23
23
  end
24
24
 
@@ -30,11 +30,10 @@ module RubyLsp
30
30
  override.params(
31
31
  uri: URI::Generic,
32
32
  dispatcher: Prism::Dispatcher,
33
- message_queue: Thread::Queue,
34
33
  ).returns(T.nilable(Listener[T::Array[Interface::CodeLens]]))
35
34
  end
36
- def create_code_lens_listener(uri, dispatcher, message_queue)
37
- CodeLens.new(uri, dispatcher, message_queue)
35
+ def create_code_lens_listener(uri, dispatcher)
36
+ CodeLens.new(uri, dispatcher)
38
37
  end
39
38
 
40
39
  sig do
@@ -42,11 +41,10 @@ module RubyLsp
42
41
  nesting: T::Array[String],
43
42
  index: RubyIndexer::Index,
44
43
  dispatcher: Prism::Dispatcher,
45
- message_queue: Thread::Queue,
46
44
  ).returns(T.nilable(Listener[T.nilable(Interface::Hover)]))
47
45
  end
48
- def create_hover_listener(nesting, index, dispatcher, message_queue)
49
- Hover.new(client, nesting, index, dispatcher, message_queue)
46
+ def create_hover_listener(nesting, index, dispatcher)
47
+ Hover.new(client, nesting, index, dispatcher)
50
48
  end
51
49
 
52
50
  sig { override.returns(String) }
@@ -42,13 +42,16 @@ module RubyLsp
42
42
  sig { override.returns(ResponseType) }
43
43
  attr_reader :_response
44
44
 
45
- sig { params(uri: URI::Generic, dispatcher: Prism::Dispatcher, message_queue: Thread::Queue).void }
46
- def initialize(uri, dispatcher, message_queue)
45
+ sig { params(uri: URI::Generic, dispatcher: Prism::Dispatcher).void }
46
+ def initialize(uri, dispatcher)
47
47
  @_response = T.let([], ResponseType)
48
48
  @path = T.let(uri.to_standardized_path, T.nilable(String))
49
- dispatcher.register(self, :on_call_node_enter, :on_class_node_enter, :on_def_node_enter)
49
+ @group_id = T.let(1, Integer)
50
+ @group_id_stack = T.let([], T::Array[Integer])
50
51
 
51
- super(dispatcher, message_queue)
52
+ dispatcher.register(self, :on_call_node_enter, :on_class_node_enter, :on_def_node_enter, :on_class_node_leave)
53
+
54
+ super(dispatcher)
52
55
  end
53
56
 
54
57
  sig { params(node: Prism::CallNode).void }
@@ -62,13 +65,11 @@ module RubyLsp
62
65
  first_argument = arguments.first
63
66
 
64
67
  content = case first_argument
65
- when Prism::StringConcatNode
66
- left = first_argument.left
67
- right = first_argument.right
68
- # We only support two lines of concatenation on test names
69
- if left.is_a?(Prism::StringNode) &&
70
- right.is_a?(Prism::StringNode)
71
- left.content + right.content
68
+ when Prism::InterpolatedStringNode
69
+ parts = first_argument.parts
70
+
71
+ if parts.all? { |part| part.is_a?(Prism::StringNode) }
72
+ T.cast(parts, T::Array[Prism::StringNode]).map(&:content).join
72
73
  end
73
74
  when Prism::StringNode
74
75
  first_argument.content
@@ -99,6 +100,14 @@ module RubyLsp
99
100
  command = "#{BASE_COMMAND} #{@path}"
100
101
  add_test_code_lens(node, name: class_name, command: command, kind: :group)
101
102
  end
103
+
104
+ @group_id_stack.push(@group_id)
105
+ @group_id += 1
106
+ end
107
+
108
+ sig { params(node: Prism::ClassNode).void }
109
+ def on_class_node_leave(node)
110
+ @group_id_stack.pop
102
111
  end
103
112
 
104
113
  private
@@ -119,12 +128,15 @@ module RubyLsp
119
128
  },
120
129
  ]
121
130
 
131
+ grouping_data = { group_id: @group_id_stack.last, kind: kind }
132
+ grouping_data[:id] = @group_id if kind == :group
133
+
122
134
  @_response << create_code_lens(
123
135
  node,
124
136
  title: "Run",
125
137
  command_name: "rubyLsp.runTest",
126
138
  arguments: arguments,
127
- data: { type: "test", kind: kind },
139
+ data: { type: "test", **grouping_data },
128
140
  )
129
141
 
130
142
  @_response << create_code_lens(
@@ -132,7 +144,7 @@ module RubyLsp
132
144
  title: "Run In Terminal",
133
145
  command_name: "rubyLsp.runTestInTerminal",
134
146
  arguments: arguments,
135
- data: { type: "test_in_terminal", kind: kind },
147
+ data: { type: "test_in_terminal", **grouping_data },
136
148
  )
137
149
 
138
150
  @_response << create_code_lens(
@@ -140,7 +152,7 @@ module RubyLsp
140
152
  title: "Debug",
141
153
  command_name: "rubyLsp.debugTest",
142
154
  arguments: arguments,
143
- data: { type: "debug", kind: kind },
155
+ data: { type: "debug", **grouping_data },
144
156
  )
145
157
  end
146
158
  end
@@ -31,11 +31,10 @@ module RubyLsp
31
31
  nesting: T::Array[String],
32
32
  index: RubyIndexer::Index,
33
33
  dispatcher: Prism::Dispatcher,
34
- message_queue: Thread::Queue,
35
34
  ).void
36
35
  end
37
- def initialize(client, nesting, index, dispatcher, message_queue)
38
- super(dispatcher, message_queue)
36
+ def initialize(client, nesting, index, dispatcher)
37
+ super(dispatcher)
39
38
 
40
39
  @_response = T.let(nil, ResponseType)
41
40
  @client = client
@@ -3,6 +3,6 @@
3
3
 
4
4
  module RubyLsp
5
5
  module Rails
6
- VERSION = "0.2.7"
6
+ VERSION = "0.2.8"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,17 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lsp-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-19 00:00:00.000000000 Z
11
+ date: 2023-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: actionpack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '6.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '6.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - ">="
@@ -30,20 +58,20 @@ dependencies:
30
58
  requirements:
31
59
  - - ">="
32
60
  - !ruby/object:Gem::Version
33
- version: 0.12.0
61
+ version: 0.13.0
34
62
  - - "<"
35
63
  - !ruby/object:Gem::Version
36
- version: 0.13.0
64
+ version: 0.14.0
37
65
  type: :runtime
38
66
  prerelease: false
39
67
  version_requirements: !ruby/object:Gem::Requirement
40
68
  requirements:
41
69
  - - ">="
42
70
  - !ruby/object:Gem::Version
43
- version: 0.12.0
71
+ version: 0.13.0
44
72
  - - "<"
45
73
  - !ruby/object:Gem::Version
46
- version: 0.13.0
74
+ version: 0.14.0
47
75
  - !ruby/object:Gem::Dependency
48
76
  name: sorbet-runtime
49
77
  requirement: !ruby/object:Gem::Requirement