ruby-lsp-ree 0.1.26 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8c04abd3209490247cd5ba187ba8ad2e771feb891fc03c283301b2fbdc7903b
4
- data.tar.gz: d4bc2bc8073d181b26ef8b2e007e6e50f511e704525c22a53067bcad0cf8ddf0
3
+ metadata.gz: d23029bb34a76a14f958b8b3e5eab820f8cba36689edb56e6631c413b582cab6
4
+ data.tar.gz: 53019d360a4b95981c22b7f9a38392b1fcf103146258b9e3510728dfc0fafa2a
5
5
  SHA512:
6
- metadata.gz: 573a165703a4a782a8453fe0494310fb8845f7983c61a1d13ad8e05021fa2dba456302a2278c53efeeddb03afcdde4ed637239efbf814419301170592fa9eb60
7
- data.tar.gz: fcd8df3fd0f56bb5183a94a276d2e40112a62d04679c73648e630ed791349deb32a95c3ecf2d2098b64f2dbb730999c08a1c7a4f82a348fa2e1c4bc2e997c5ab
6
+ metadata.gz: 6ee0262d2ea64ea404027224327333d7a4c65ec6389fbebb6718cf0e8af1298f23e6146740f061f02378debe68e7ff0ef4375609bc72e6e52ad28e87e04d4ea1
7
+ data.tar.gz: ad6b4dea9ef74a883467e61025af3cf7db897eca3414953e5b2a477fdba76e47a93e90b79b03d717672050a9f235ac3e1caa56495a994be64c9f6718e4e2b8ec
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.4.1
1
+ 4.0.1
data/Gemfile CHANGED
@@ -8,6 +8,7 @@ gemspec
8
8
  gem "rake", "~> 13.0"
9
9
 
10
10
  group :test do
11
+ gem 'ostruct'
11
12
  gem 'rspec'
12
13
  gem 'ruby-lsp', '~> 0.25.0'
13
14
  gem "sorbet-static-and-runtime"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-lsp-ree (0.1.25)
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,11 +41,13 @@ GEM
40
41
  sorbet-runtime (= 0.5.11835)
41
42
 
42
43
  PLATFORMS
44
+ arm64-darwin-24
43
45
  x86_64-darwin-22
44
46
  x86_64-darwin-23
45
47
  x86_64-linux
46
48
 
47
49
  DEPENDENCIES
50
+ ostruct
48
51
  rake (~> 13.0)
49
52
  rspec
50
53
  ruby-lsp (~> 0.25.0)
@@ -52,4 +55,4 @@ DEPENDENCIES
52
55
  sorbet-static-and-runtime
53
56
 
54
57
  BUNDLED WITH
55
- 2.6.3
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)
@@ -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
- document = RubyLsp::Ree::ParsedClassDocument.new(ast, package_name)
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
@@ -81,7 +81,7 @@ module RubyLsp
81
81
  when Prism::StringNode
82
82
  str_node.unescaped
83
83
  when Prism::InterpolatedStringNode
84
- str_node.parts.map(&:unescaped).join
84
+ str_node.parts.select{ it.is_a?(Prism::StringNode) }.map(&:unescaped).join
85
85
  else
86
86
  ''
87
87
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RubyLsp
4
4
  module Ree
5
- VERSION = "0.1.26"
5
+ VERSION = "0.1.27"
6
6
  end
7
7
  end
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.1"
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,13 +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.26
4
+ version: 0.1.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-02-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: A Ruby LSP addon that adds extra editor functionality for Ree applications
13
13
  email:
@@ -93,14 +93,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '3.1'
96
+ version: '3.4'
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - ">="
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0'
102
102
  requirements: []
103
- rubygems_version: 3.6.2
103
+ rubygems_version: 4.0.3
104
104
  specification_version: 4
105
105
  summary: Ruby LSP addon for Ree framework.
106
106
  test_files: []