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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26ce3da4d64d7bb6e48fe5691055ca3f78f3455f27c72c63ddc5691e56bddd6c
4
- data.tar.gz: 5f5371e99f045a27c434f73acb1f3eaa7191c02e3d25a6cbbc1f6de304f798f6
3
+ metadata.gz: d23029bb34a76a14f958b8b3e5eab820f8cba36689edb56e6631c413b582cab6
4
+ data.tar.gz: 53019d360a4b95981c22b7f9a38392b1fcf103146258b9e3510728dfc0fafa2a
5
5
  SHA512:
6
- metadata.gz: 8fa9a236ddb1e5bef4b79170423f79e566c98f9fceae7baae5ef8a62595d2eff5e321016da8c23f1565b864a714dbb5e9c68caf04b301fdeed03efefe65e98ea
7
- data.tar.gz: '079e28850e8302a889f556d9844cae69d5be21cff0b0d389c68445acbf907091d96965319c5c291a0b8c964c3945c27a72835fc393c0d56974b6f05be8235a6a'
6
+ metadata.gz: 6ee0262d2ea64ea404027224327333d7a4c65ec6389fbebb6718cf0e8af1298f23e6146740f061f02378debe68e7ff0ef4375609bc72e6e52ad28e87e04d4ea1
7
+ data.tar.gz: ad6b4dea9ef74a883467e61025af3cf7db897eca3414953e5b2a477fdba76e47a93e90b79b03d717672050a9f235ac3e1caa56495a994be64c9f6718e4e2b8ec
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.3.0
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,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
- 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)
@@ -51,7 +51,10 @@ module RubyLsp
51
51
 
52
52
  if removed_links == links_count
53
53
  parsed_doc.parse_links_container_node
54
- editor.remove_link_block(parsed_doc.links_container_node, parsed_doc.links_container_block_node)
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
- 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.25"
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,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.25
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: 2025-07-11 00:00:00.000000000 Z
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.1'
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: 3.5.3
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: []