ruby-lsp-rake 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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