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.
@@ -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