ruby-lsp-rake 0.1.5 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5cdf5ce3b286b6f1824bcff07f386aff744fee063debf045a33f0a104ccb9a58
4
- data.tar.gz: 0f61d107e42ac8412f3f4ac53425c6d8dc0e4c90e11bcab050ee8a1aaa80719c
3
+ metadata.gz: 5eecc86f8a92c3d2f81d686d722f17d22af64985b63ca6ef2db1ca8fc604d773
4
+ data.tar.gz: 4f15df1db846b1f43063cffc2a32326ea515073993d3497160a21cd9a7f15571
5
5
  SHA512:
6
- metadata.gz: 44d24d9356c0893323402638a91d564562c66728233445901c32c0502aa6fbfa95ff5ed1cf6b6f94d80031e4f180a2b2b578e96080dd68f9c9c53f14e5b02358
7
- data.tar.gz: 98bb06c07335e47d6064101ed3761299215b3f25a5c090006931a257a74e3eb1ba4f5fbf7ad7f916779cafaf49b786fc266756abe14666de1a4140c16a9397f2
6
+ metadata.gz: d9d2bf49d58f3f86bbb9c64617f62b4b982c9d39dff124b3d82b2ffdd0647ae6a7ac47d2b7d13cca9bd5179308d64bed8e0c3df07b644990af0573ab2c6a16b9
7
+ data.tar.gz: 4a8c7bce406a07a7641f98efb9b73ea516cc33bf38278253f2674f3fc68381b101e6572eb32ffb3067935c59470f5bd44b62e4952b32adfb7717079f33ac53e6
@@ -4,6 +4,7 @@
4
4
  require "ruby_lsp/addon"
5
5
  require_relative "indexing_enhancement"
6
6
  require_relative "hover"
7
+ require_relative "definition"
7
8
 
8
9
  module RubyLsp
9
10
  module Rake
@@ -26,7 +27,7 @@ module RubyLsp
26
27
 
27
28
  sig { override.returns(String) }
28
29
  def version
29
- ::Ruby::Lsp::Rake::VERSION
30
+ ::RubyLsp::Rake::VERSION
30
31
  end
31
32
 
32
33
  sig do
@@ -39,6 +40,20 @@ module RubyLsp
39
40
  def create_hover_listener(response_builder, node_context, dispatcher)
40
41
  Hover.new(response_builder, node_context, dispatcher, @index)
41
42
  end
43
+
44
+ sig do
45
+ override.params(
46
+ response_builder: ResponseBuilders::CollectionResponseBuilder[T.any(
47
+ Interface::Location, Interface::LocationLink
48
+ )],
49
+ _uri: URI::Generic,
50
+ node_context: NodeContext,
51
+ dispatcher: Prism::Dispatcher
52
+ ).void
53
+ end
54
+ def create_definition_listener(response_builder, _uri, node_context, dispatcher)
55
+ Definition.new(response_builder, node_context, @index, dispatcher)
56
+ end
42
57
  end
43
58
  end
44
59
  end
@@ -0,0 +1,98 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module RubyLsp
5
+ module Rake
6
+ class Definition # rubocop:disable Style/Documentation
7
+ extend T::Sig
8
+ include Requests::Support::Common
9
+
10
+ sig do
11
+ params(
12
+ response_builder: RubyLsp::ResponseBuilders::CollectionResponseBuilder[T.any(
13
+ Interface::Location, Interface::LocationLink
14
+ )],
15
+ node_context: NodeContext,
16
+ index: RubyIndexer::Index,
17
+ dispatcher: Prism::Dispatcher
18
+ ).void
19
+ end
20
+ def initialize(response_builder, node_context, index, dispatcher)
21
+ @response_builder = response_builder
22
+ @node_context = node_context
23
+ @nesting = T.let(node_context.nesting, T::Array[String])
24
+ @index = index
25
+
26
+ dispatcher.register(self, :on_symbol_node_enter, :on_string_node_enter)
27
+ end
28
+
29
+ sig { params(node: Prism::SymbolNode).void }
30
+ def on_symbol_node_enter(node)
31
+ handle_prerequisite(node)
32
+ end
33
+
34
+ sig { params(node: Prism::StringNode).void }
35
+ def on_string_node_enter(node)
36
+ handle_prerequisite(node)
37
+ end
38
+
39
+ sig { params(node: T.any(Prism::SymbolNode, Prism::StringNode)).void }
40
+ def handle_prerequisite(node) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
41
+ call_node_name = @node_context.call_node&.name
42
+ return unless call_node_name == :task
43
+
44
+ name = case node
45
+ when Prism::StringNode
46
+ node.content
47
+ when Prism::SymbolNode
48
+ node.value
49
+ end
50
+
51
+ arg = @node_context.call_node&.arguments&.arguments&.first
52
+ case arg
53
+ when Prism::KeywordHashNode
54
+ kh = arg.child_nodes.first
55
+ case kh
56
+ when Prism::AssocNode
57
+ v = kh.value
58
+ case v
59
+ when Prism::StringNode
60
+ return unless name == v.content
61
+ when Prism::SymbolNode
62
+ return unless name == v.value
63
+ when Prism::ArrayNode
64
+ return unless v.elements.find do |node|
65
+ name == case node # rubocop:disable Metrics/BlockNesting
66
+ when Prism::StringNode
67
+ node.content
68
+ when Prism::SymbolNode
69
+ node.value
70
+ end
71
+ end
72
+ end
73
+ end
74
+ else
75
+ return
76
+ end
77
+
78
+ task_name = "task:#{name}"
79
+ return unless @index.indexed? task_name
80
+
81
+ entries = @index[task_name]
82
+
83
+ # refer to: https://github.com/Shopify/ruby-lsp-rails/blob/b7791290fb59b06dc99e28a991ee0607e3931a1e/lib/ruby_lsp/ruby_lsp_rails/definition.rb#L141-L152
84
+ entries.each do |entry|
85
+ loc = entry.location
86
+ uri = T.unsafe(URI::Generic).from_path(
87
+ path: entry.file_path,
88
+ fragment: "L#{loc.start_line},#{loc.start_column + 1}-#{loc.end_line},#{loc.end_column + 1}"
89
+ )
90
+ @response_builder << Interface::Location.new(
91
+ uri: uri,
92
+ range: range_from_location(entry.location)
93
+ )
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -33,7 +33,7 @@ module RubyLsp
33
33
  end
34
34
 
35
35
  sig { params(node: T.any(Prism::StringNode, Prism::SymbolNode)).void }
36
- def handle_prerequisite(node) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
36
+ def handle_prerequisite(node) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
37
37
  call_node_name = @node_context.call_node&.name
38
38
  return unless call_node_name == :task
39
39
 
@@ -58,7 +58,7 @@ module RubyLsp
58
58
  return unless name == v.value
59
59
  when Prism::ArrayNode
60
60
  return unless v.elements.find do |node|
61
- name == case node
61
+ name == case node # rubocop:disable Metrics/BlockNesting
62
62
  when Prism::StringNode
63
63
  node.content
64
64
  when Prism::SymbolNode
@@ -0,0 +1,8 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module RubyLsp
5
+ module Rake
6
+ VERSION = "0.2.0"
7
+ end
8
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lsp-rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koji NAKAMURA
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-12-25 00:00:00.000000000 Z
10
+ date: 2025-01-22 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: ruby-lsp
@@ -36,11 +35,11 @@ files:
36
35
  - README.md
37
36
  - Rakefile
38
37
  - img/dependency_task_links_on_hover.png
39
- - lib/ruby/lsp/rake.rb
40
- - lib/ruby/lsp/rake/version.rb
41
38
  - lib/ruby_lsp/ruby_lsp_rake/addon.rb
39
+ - lib/ruby_lsp/ruby_lsp_rake/definition.rb
42
40
  - lib/ruby_lsp/ruby_lsp_rake/hover.rb
43
41
  - lib/ruby_lsp/ruby_lsp_rake/indexing_enhancement.rb
42
+ - lib/ruby_lsp_rake/version.rb
44
43
  - sig/ruby/lsp/rake.rbs
45
44
  - sorbet/config
46
45
  - sorbet/rbi/annotations/.gitattributes
@@ -84,7 +83,6 @@ metadata:
84
83
  homepage_uri: https://github.com/kozy4324/ruby-lsp-rake
85
84
  source_code_uri: https://github.com/kozy4324/ruby-lsp-rake
86
85
  changelog_uri: https://github.com/kozy4324/ruby-lsp-rake/releases
87
- post_install_message:
88
86
  rdoc_options: []
89
87
  require_paths:
90
88
  - lib
@@ -99,8 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
97
  - !ruby/object:Gem::Version
100
98
  version: '0'
101
99
  requirements: []
102
- rubygems_version: 3.5.23
103
- signing_key:
100
+ rubygems_version: 3.6.2
104
101
  specification_version: 4
105
102
  summary: A Ruby LSP addon for Rake
106
103
  test_files: []
@@ -1,10 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Ruby
5
- module Lsp
6
- module Rake
7
- VERSION = "0.1.5"
8
- end
9
- end
10
- end
data/lib/ruby/lsp/rake.rb DELETED
@@ -1,13 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- require_relative "rake/version"
5
-
6
- module Ruby
7
- module Lsp
8
- module Rake
9
- class Error < StandardError; end
10
- # Your code goes here...
11
- end
12
- end
13
- end