ruby-lsp-ree 0.1.2 → 0.1.4
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 -0
- data/CHANGELOG.md +25 -11
- data/Gemfile +6 -0
- data/Gemfile.lock +36 -1
- data/Rakefile +5 -1
- data/lib/ruby_lsp/ruby_lsp_ree/addon.rb +11 -5
- data/lib/ruby_lsp/ruby_lsp_ree/{completion_utils.rb → handlers/completion_handler.rb} +104 -27
- data/lib/ruby_lsp/ruby_lsp_ree/{definition.rb → handlers/definition_handler.rb} +48 -37
- data/lib/ruby_lsp/ruby_lsp_ree/handlers/hover_handler.rb +49 -0
- data/lib/ruby_lsp/ruby_lsp_ree/listeners/completion_listener.rb +53 -0
- data/lib/ruby_lsp/ruby_lsp_ree/listeners/definition_listener.rb +63 -0
- data/lib/ruby_lsp/ruby_lsp_ree/listeners/hover_listener.rb +42 -0
- data/lib/ruby_lsp/ruby_lsp_ree/parsing/parsed_document.rb +63 -25
- data/lib/ruby_lsp/ruby_lsp_ree/parsing/parsed_document_builder.rb +32 -0
- data/lib/ruby_lsp/ruby_lsp_ree/parsing/parsed_link_node.rb +6 -1
- data/lib/ruby_lsp/ruby_lsp_ree/parsing/parsed_rspec_document.rb +57 -0
- data/lib/ruby_lsp/ruby_lsp_ree/ree_formatter.rb +2 -0
- data/lib/ruby_lsp/ruby_lsp_ree/ree_indexing_enhancement.rb +4 -4
- data/lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb +57 -8
- data/lib/ruby_lsp/ruby_lsp_ree/{ree_lsp_utils.rb → utils/ree_lsp_utils.rb} +8 -1
- data/lib/ruby_lsp_ree/version.rb +3 -5
- data/ruby-lsp-ree.gemspec +1 -1
- metadata +12 -7
- data/lib/ruby_lsp/ruby_lsp_ree/completion.rb +0 -108
@@ -1,108 +0,0 @@
|
|
1
|
-
require_relative "ree_lsp_utils"
|
2
|
-
require_relative "completion_utils"
|
3
|
-
require_relative "ree_object_finder"
|
4
|
-
|
5
|
-
module RubyLsp
|
6
|
-
module Ree
|
7
|
-
class Completion
|
8
|
-
include Requests::Support::Common
|
9
|
-
include RubyLsp::Ree::ReeLspUtils
|
10
|
-
include RubyLsp::Ree::CompletionUtils
|
11
|
-
|
12
|
-
CHARS_COUNT = 1
|
13
|
-
CANDIDATES_LIMIT = 100
|
14
|
-
|
15
|
-
def initialize(response_builder, node_context, index, dispatcher, uri)
|
16
|
-
@response_builder = response_builder
|
17
|
-
@index = index
|
18
|
-
@uri = uri
|
19
|
-
@node_context = node_context
|
20
|
-
|
21
|
-
dispatcher.register(self, :on_call_node_enter)
|
22
|
-
dispatcher.register(self, :on_constant_read_node_enter)
|
23
|
-
end
|
24
|
-
|
25
|
-
def on_constant_read_node_enter(node)
|
26
|
-
node_name = node.name.to_s
|
27
|
-
return if node_name.size < CHARS_COUNT
|
28
|
-
|
29
|
-
class_name_objects = @index.instance_variable_get(:@entries).keys.select{ _1.split('::').last[0...node_name.size] == node_name}
|
30
|
-
return if class_name_objects.size == 0
|
31
|
-
|
32
|
-
parsed_doc = RubyLsp::Ree::ParsedDocumentBuilder.build_from_ast(@node_context.parent, @uri)
|
33
|
-
|
34
|
-
completion_items = get_class_name_completion_items(class_name_objects, parsed_doc, node, @index, CANDIDATES_LIMIT)
|
35
|
-
put_items_into_response(completion_items)
|
36
|
-
end
|
37
|
-
|
38
|
-
def on_call_node_enter(node)
|
39
|
-
if receiver_is_enum?(node)
|
40
|
-
return enum_value_completion(node)
|
41
|
-
end
|
42
|
-
|
43
|
-
if receiver_is_dao?(node)
|
44
|
-
return dao_filter_completion(node)
|
45
|
-
end
|
46
|
-
|
47
|
-
if receiver_is_bean?(node)
|
48
|
-
return bean_method_completion(node)
|
49
|
-
end
|
50
|
-
|
51
|
-
return if node.receiver
|
52
|
-
return if node.name.to_s.size < CHARS_COUNT
|
53
|
-
|
54
|
-
ree_objects = ReeObjectFinder.search_objects(@index, node.name.to_s, CANDIDATES_LIMIT)
|
55
|
-
|
56
|
-
return if ree_objects.size == 0
|
57
|
-
|
58
|
-
parsed_doc = RubyLsp::Ree::ParsedDocumentBuilder.build_from_ast(@node_context.parent, @uri)
|
59
|
-
|
60
|
-
completion_items = get_ree_objects_completions_items(ree_objects, parsed_doc, node)
|
61
|
-
put_items_into_response(completion_items)
|
62
|
-
end
|
63
|
-
|
64
|
-
def receiver_is_enum?(node)
|
65
|
-
node.receiver && node.receiver.is_a?(Prism::CallNode) && ReeObjectFinder.find_enum(@index, node.receiver.name.to_s)
|
66
|
-
end
|
67
|
-
|
68
|
-
def receiver_is_dao?(node)
|
69
|
-
node.receiver && node.receiver.is_a?(Prism::CallNode) && ReeObjectFinder.find_dao(@index, node.receiver.name.to_s)
|
70
|
-
end
|
71
|
-
|
72
|
-
def receiver_is_bean?(node)
|
73
|
-
node.receiver && node.receiver.is_a?(Prism::CallNode) && ReeObjectFinder.find_bean(@index, node.receiver.name.to_s)
|
74
|
-
end
|
75
|
-
|
76
|
-
def enum_value_completion(node)
|
77
|
-
enum_obj = ReeObjectFinder.find_enum(@index, node.receiver.name.to_s)
|
78
|
-
location = node.receiver.location
|
79
|
-
|
80
|
-
completion_items = get_enum_values_completion_items(enum_obj, location)
|
81
|
-
put_items_into_response(completion_items)
|
82
|
-
end
|
83
|
-
|
84
|
-
def dao_filter_completion(node)
|
85
|
-
dao_obj = ReeObjectFinder.find_dao(@index, node.receiver.name.to_s)
|
86
|
-
location = node.receiver.location
|
87
|
-
|
88
|
-
completion_items = get_dao_filters_completion_items(dao_obj, location)
|
89
|
-
put_items_into_response(completion_items)
|
90
|
-
end
|
91
|
-
|
92
|
-
def bean_method_completion(node)
|
93
|
-
bean_obj = ReeObjectFinder.find_bean(@index, node.receiver.name.to_s)
|
94
|
-
location = node.receiver.location
|
95
|
-
|
96
|
-
completion_items = get_bean_methods_completion_items(bean_obj, location)
|
97
|
-
|
98
|
-
put_items_into_response(completion_items)
|
99
|
-
end
|
100
|
-
|
101
|
-
def put_items_into_response(items)
|
102
|
-
items.each do |item|
|
103
|
-
@response_builder << item
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|