ruby-lsp-ree 0.1.25 → 0.1.27
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 +4 -4
- data/.ruby-version +1 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +6 -2
- data/lib/ruby_lsp/ruby_lsp_ree/formatters/missing_imports_formatter.rb +1 -0
- data/lib/ruby_lsp/ruby_lsp_ree/formatters/unused_links_formatter.rb +15 -1
- data/lib/ruby_lsp/ruby_lsp_ree/parsing/body_parsers/body_objects_parser.rb +9 -1
- data/lib/ruby_lsp/ruby_lsp_ree/parsing/parsed_base_document.rb +4 -0
- data/lib/ruby_lsp/ruby_lsp_ree/parsing/parsed_document_builder.rb +12 -2
- data/lib/ruby_lsp/ruby_lsp_ree/parsing/parsed_entity_document.rb +24 -1
- data/lib/ruby_lsp/ruby_lsp_ree/ree_indexing_enhancement.rb +1 -1
- data/lib/ruby_lsp_ree/version.rb +1 -1
- data/ruby-lsp-ree.gemspec +1 -1
- metadata +4 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d23029bb34a76a14f958b8b3e5eab820f8cba36689edb56e6631c413b582cab6
|
|
4
|
+
data.tar.gz: 53019d360a4b95981c22b7f9a38392b1fcf103146258b9e3510728dfc0fafa2a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6ee0262d2ea64ea404027224327333d7a4c65ec6389fbebb6718cf0e8af1298f23e6146740f061f02378debe68e7ff0ef4375609bc72e6e52ad28e87e04d4ea1
|
|
7
|
+
data.tar.gz: ad6b4dea9ef74a883467e61025af3cf7db897eca3414953e5b2a477fdba76e47a93e90b79b03d717672050a9f235ac3e1caa56495a994be64c9f6718e4e2b8ec
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.1
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ruby-lsp-ree (0.1.
|
|
4
|
+
ruby-lsp-ree (0.1.27)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
@@ -9,6 +9,7 @@ GEM
|
|
|
9
9
|
diff-lcs (1.6.0)
|
|
10
10
|
language_server-protocol (3.17.0.4)
|
|
11
11
|
logger (1.6.6)
|
|
12
|
+
ostruct (0.6.3)
|
|
12
13
|
prism (1.3.0)
|
|
13
14
|
rake (13.2.1)
|
|
14
15
|
rbs (3.8.1)
|
|
@@ -40,10 +41,13 @@ GEM
|
|
|
40
41
|
sorbet-runtime (= 0.5.11835)
|
|
41
42
|
|
|
42
43
|
PLATFORMS
|
|
44
|
+
arm64-darwin-24
|
|
45
|
+
x86_64-darwin-22
|
|
43
46
|
x86_64-darwin-23
|
|
44
47
|
x86_64-linux
|
|
45
48
|
|
|
46
49
|
DEPENDENCIES
|
|
50
|
+
ostruct
|
|
47
51
|
rake (~> 13.0)
|
|
48
52
|
rspec
|
|
49
53
|
ruby-lsp (~> 0.25.0)
|
|
@@ -51,4 +55,4 @@ DEPENDENCIES
|
|
|
51
55
|
sorbet-static-and-runtime
|
|
52
56
|
|
|
53
57
|
BUNDLED WITH
|
|
54
|
-
|
|
58
|
+
4.0.6
|
|
@@ -29,6 +29,7 @@ module RubyLsp
|
|
|
29
29
|
objects_to_add.uniq!{ |obj| obj.name }
|
|
30
30
|
objects_to_add.reject!{ |obj| IGNORE_METHOD_CALL_NAMES.include?(obj.name) }
|
|
31
31
|
objects_to_add.reject!{ |obj| parsed_doc.includes_linked_object?(obj.name) }
|
|
32
|
+
objects_to_add.reject!{ |obj| parsed_doc.includes_special_object?(obj.name) }
|
|
32
33
|
return editor.source if objects_to_add.size == 0
|
|
33
34
|
|
|
34
35
|
editor.add_links(parsed_doc, objects_to_add, current_package)
|
|
@@ -51,7 +51,10 @@ module RubyLsp
|
|
|
51
51
|
|
|
52
52
|
if removed_links == links_count
|
|
53
53
|
parsed_doc.parse_links_container_node
|
|
54
|
-
|
|
54
|
+
|
|
55
|
+
if !has_non_link_dsl_calls?(parsed_doc)
|
|
56
|
+
editor.remove_link_block(parsed_doc.links_container_node, parsed_doc.links_container_block_node)
|
|
57
|
+
end
|
|
55
58
|
end
|
|
56
59
|
|
|
57
60
|
editor.source
|
|
@@ -66,6 +69,17 @@ module RubyLsp
|
|
|
66
69
|
def link_object_is_used?(parsed_doc, link_node, linked_object)
|
|
67
70
|
editor.contains_linked_object_usage?(parsed_doc, link_node, linked_object) || dsl_parser.contains_object_usage?(linked_object.usage_name)
|
|
68
71
|
end
|
|
72
|
+
|
|
73
|
+
NON_LINK_DSL_METHODS = [:benchmark, :singleton, :freeze, :with_caller, :factory, :after_init, :target, :tags].freeze
|
|
74
|
+
|
|
75
|
+
def has_non_link_dsl_calls?(parsed_doc)
|
|
76
|
+
block_node = parsed_doc.links_container_block_node
|
|
77
|
+
return false unless block_node&.body&.body
|
|
78
|
+
|
|
79
|
+
block_node.body.body.any? do |node|
|
|
80
|
+
node.is_a?(Prism::CallNode) && NON_LINK_DSL_METHODS.include?(node.name)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
69
83
|
end
|
|
70
84
|
end
|
|
71
85
|
end
|
|
@@ -48,7 +48,7 @@ class RubyLsp::Ree::BodyObjectsParser < RubyLsp::Ree::BasicParser
|
|
|
48
48
|
if node.receiver
|
|
49
49
|
target_objects += parse([node.receiver])
|
|
50
50
|
else
|
|
51
|
-
next if node.name == :link || node.name == :import # don't parse objects inside links
|
|
51
|
+
next if node.name == :link || node.name == :import || node.name == :benchmark # don't parse objects inside links/dsl calls
|
|
52
52
|
|
|
53
53
|
if @target_type == :call_object
|
|
54
54
|
target_objects << CallObject.new(name: node.name, type: :method_call)
|
|
@@ -101,6 +101,10 @@ class RubyLsp::Ree::BodyObjectsParser < RubyLsp::Ree::BasicParser
|
|
|
101
101
|
target_objects += parse(node.parts)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
+
if node.respond_to?(:exceptions) && node.exceptions
|
|
105
|
+
target_objects += parse(node.exceptions)
|
|
106
|
+
end
|
|
107
|
+
|
|
104
108
|
if node.respond_to?(:rescue_clause) && node.rescue_clause
|
|
105
109
|
target_objects += parse([node.rescue_clause])
|
|
106
110
|
end
|
|
@@ -120,6 +124,10 @@ class RubyLsp::Ree::BodyObjectsParser < RubyLsp::Ree::BasicParser
|
|
|
120
124
|
target_objects += parse([node.body])
|
|
121
125
|
end
|
|
122
126
|
end
|
|
127
|
+
|
|
128
|
+
if node.respond_to?(:arguments) && node.arguments
|
|
129
|
+
target_objects += parse_target_objects_from_args(node.arguments)
|
|
130
|
+
end
|
|
123
131
|
end
|
|
124
132
|
|
|
125
133
|
if node.respond_to?(:block) && node.block && node.block.is_a?(Prism::BlockNode)
|
|
@@ -40,6 +40,10 @@ class RubyLsp::Ree::ParsedBaseDocument
|
|
|
40
40
|
@link_nodes.map(&:linked_objects).flatten.map(&:name).include?(obj_name)
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
+
def includes_special_object?(obj_name)
|
|
44
|
+
false
|
|
45
|
+
end
|
|
46
|
+
|
|
43
47
|
def find_link_node(name)
|
|
44
48
|
@link_nodes.detect{ node_name(_1) == name }
|
|
45
49
|
end
|
|
@@ -75,13 +75,23 @@ class RubyLsp::Ree::ParsedDocumentBuilder
|
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def self.build_class_document(ast, package_name)
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
if has_build_dto?(ast)
|
|
79
|
+
document = RubyLsp::Ree::ParsedEntityDocument.new(ast, package_name)
|
|
80
|
+
else
|
|
81
|
+
document = RubyLsp::Ree::ParsedClassDocument.new(ast, package_name)
|
|
82
|
+
end
|
|
83
|
+
|
|
80
84
|
document.parse_links_container_node
|
|
81
85
|
document.parse_class_includes
|
|
82
86
|
document.parse_links
|
|
83
87
|
|
|
84
88
|
document
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def self.has_build_dto?(ast)
|
|
92
|
+
class_node = ast.statements.body.detect{ |node| node.is_a?(Prism::ClassNode) }
|
|
93
|
+
return false unless class_node&.body&.body
|
|
94
|
+
class_node.body.body.any? { |node| node.is_a?(Prism::CallNode) && node.name == :build_dto }
|
|
85
95
|
end
|
|
86
96
|
|
|
87
97
|
def self.build_enum_document(ast)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class RubyLsp::Ree::ParsedEntityDocument < RubyLsp::Ree::ParsedClassDocument
|
|
2
2
|
include RubyLsp::Ree::ReeLspUtils
|
|
3
3
|
|
|
4
|
-
attr_reader :columns, :build_dto_node
|
|
4
|
+
attr_reader :columns, :build_dto_node, :collections
|
|
5
5
|
|
|
6
6
|
class EntityField
|
|
7
7
|
attr_reader :name, :location
|
|
@@ -12,12 +12,25 @@ class RubyLsp::Ree::ParsedEntityDocument < RubyLsp::Ree::ParsedClassDocument
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
class EntityCollection
|
|
16
|
+
attr_reader :name, :location
|
|
17
|
+
|
|
18
|
+
def initialize(name:, location:)
|
|
19
|
+
@name = name
|
|
20
|
+
@location = location
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
15
24
|
def initialize(ast, package_name = nil)
|
|
16
25
|
super
|
|
17
26
|
parse_class_includes
|
|
18
27
|
parse_build_dto_structure
|
|
19
28
|
end
|
|
20
29
|
|
|
30
|
+
def includes_special_object?(obj_name)
|
|
31
|
+
super || @collections.map(&:name).include?(obj_name)
|
|
32
|
+
end
|
|
33
|
+
|
|
21
34
|
private
|
|
22
35
|
|
|
23
36
|
def parse_build_dto_structure
|
|
@@ -37,5 +50,15 @@ class RubyLsp::Ree::ParsedEntityDocument < RubyLsp::Ree::ParsedClassDocument
|
|
|
37
50
|
location: _1.location
|
|
38
51
|
)
|
|
39
52
|
end
|
|
53
|
+
|
|
54
|
+
@collections = @build_dto_node.block.body.body
|
|
55
|
+
.select{ _1.name == :collection }
|
|
56
|
+
.map do
|
|
57
|
+
EntityCollection.new(
|
|
58
|
+
name: _1.arguments.arguments.first.unescaped,
|
|
59
|
+
location: _1.location
|
|
60
|
+
)
|
|
61
|
+
end
|
|
62
|
+
|
|
40
63
|
end
|
|
41
64
|
end
|
data/lib/ruby_lsp_ree/version.rb
CHANGED
data/ruby-lsp-ree.gemspec
CHANGED
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.description = "A Ruby LSP addon that adds extra editor functionality for Ree applications"
|
|
13
13
|
spec.homepage = "https://github.com/glabix/ree/tree/main/ruby-lsp-ree"
|
|
14
14
|
spec.license = "MIT"
|
|
15
|
-
spec.required_ruby_version = ">= 3.
|
|
15
|
+
spec.required_ruby_version = ">= 3.4"
|
|
16
16
|
|
|
17
17
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
18
18
|
spec.metadata["source_code_uri"] = "https://github.com/glabix/ree/tree/main/ruby-lsp-ree"
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby-lsp-ree
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.27
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ruslan Gatiyatov
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies: []
|
|
13
12
|
description: A Ruby LSP addon that adds extra editor functionality for Ree applications
|
|
14
13
|
email:
|
|
@@ -87,7 +86,6 @@ metadata:
|
|
|
87
86
|
homepage_uri: https://github.com/glabix/ree/tree/main/ruby-lsp-ree
|
|
88
87
|
source_code_uri: https://github.com/glabix/ree/tree/main/ruby-lsp-ree
|
|
89
88
|
changelog_uri: https://github.com/glabix/ree/blob/main/ruby-lsp-ree/CHANGELOG.md
|
|
90
|
-
post_install_message:
|
|
91
89
|
rdoc_options: []
|
|
92
90
|
require_paths:
|
|
93
91
|
- lib
|
|
@@ -95,15 +93,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
95
93
|
requirements:
|
|
96
94
|
- - ">="
|
|
97
95
|
- !ruby/object:Gem::Version
|
|
98
|
-
version: '3.
|
|
96
|
+
version: '3.4'
|
|
99
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
98
|
requirements:
|
|
101
99
|
- - ">="
|
|
102
100
|
- !ruby/object:Gem::Version
|
|
103
101
|
version: '0'
|
|
104
102
|
requirements: []
|
|
105
|
-
rubygems_version:
|
|
106
|
-
signing_key:
|
|
103
|
+
rubygems_version: 4.0.3
|
|
107
104
|
specification_version: 4
|
|
108
105
|
summary: Ruby LSP addon for Ree framework.
|
|
109
106
|
test_files: []
|