Class: RubyLsp::Ree::CompletionHandler
- Inherits:
-
Object
- Object
- RubyLsp::Ree::CompletionHandler
show all
- Includes:
- Requests::Support::Common, ReeLspUtils
- Defined in:
- lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb
Constant Summary
collapse
- RECEIVER_OBJECT_TYPES =
[:enum, :dao, :bean, :async_bean]
- CANDIDATES_LIMIT =
100
Constants included
from ReeLspUtils
ReeLspUtils::Entry
Instance Method Summary
collapse
-
#get_bean_methods_completion_items(bean_obj, location, node) ⇒ Object
-
#get_class_name_completion_items(node) ⇒ Object
-
#get_dao_filters_completion_items(dao_obj, location, node) ⇒ Object
-
#get_enum_values_completion_items(enum_obj, location, node) ⇒ Object
-
#get_ree_object_methods_completions_items(ree_receiver, receiver_node, node) ⇒ Object
-
#get_ree_objects_completions_items(node) ⇒ Object
-
#get_ree_receiver(receiver_node) ⇒ Object
-
#initialize(index, uri, node_context) ⇒ CompletionHandler
constructor
A new instance of CompletionHandler.
#camelize, #find_local_file_path, #get_range_for_fn_insert, #get_ree_type, #get_uri_path, #package_name_from_spec_uri, #package_name_from_uri, #package_path_from_uri, #parameter_name, #path_from_package_folder, #signature_params_from_node, #spec_relative_file_path_from_uri, #underscore
Constructor Details
#initialize(index, uri, node_context) ⇒ CompletionHandler
Returns a new instance of CompletionHandler.
15
16
17
18
19
20
21
22
23
|
# File 'lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb', line 15
def initialize(index, uri, node_context)
@index = index
@uri = uri
@node_context = node_context
@root_node = @node_context.instance_variable_get(:@nesting_nodes).first
@finder = ReeObjectFinder.new(@index)
@mapper = RubyLsp::Ree::CompletionItemsMapper.new(@index)
@ree_context = RubyLsp::Ree::ReeContext.new(node_context)
end
|
Instance Method Details
#get_bean_methods_completion_items(bean_obj, location, node) ⇒ Object
46
47
48
49
|
# File 'lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb', line 46
def get_bean_methods_completion_items(bean_obj, location, node)
bean_node = RubyLsp::Ree::ParsedDocumentBuilder.build_from_uri(bean_obj.uri, :bean)
@mapper.map_ree_object_methods(bean_node.bean_methods, location, node, "method")
end
|
#get_class_name_completion_items(node) ⇒ Object
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb', line 62
def get_class_name_completion_items(node)
node_name = node.name.to_s
class_name_objects = @finder.search_class_objects(node_name)
return [] if class_name_objects.size == 0
parsed_doc = RubyLsp::Ree::ParsedDocumentBuilder.build_from_ast(@root_node, @uri)
@mapper.map_class_name_objects(class_name_objects.take(CANDIDATES_LIMIT), node, parsed_doc, @ree_context)
end
|
#get_dao_filters_completion_items(dao_obj, location, node) ⇒ Object
51
52
53
54
|
# File 'lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb', line 51
def get_dao_filters_completion_items(dao_obj, location, node)
dao_node = RubyLsp::Ree::ParsedDocumentBuilder.build_from_uri(dao_obj.uri, :dao)
@mapper.map_ree_object_methods(dao_node.filters, location, node, "filter")
end
|
#get_enum_values_completion_items(enum_obj, location, node) ⇒ Object
56
57
58
59
60
|
# File 'lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb', line 56
def get_enum_values_completion_items(enum_obj, location, node)
enum_node = RubyLsp::Ree::ParsedDocumentBuilder.build_from_uri(enum_obj.uri, :enum)
class_name = enum_node.full_class_name
@mapper.map_ree_object_methods(enum_node.values, location, node, "from: #{class_name}")
end
|
#get_ree_object_methods_completions_items(ree_receiver, receiver_node, node) ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb', line 31
def get_ree_object_methods_completions_items(ree_receiver, receiver_node, node)
location = receiver_node.location
case @finder.object_type(ree_receiver)
when :enum
get_enum_values_completion_items(ree_receiver, location, node)
when :bean, :async_bean
get_bean_methods_completion_items(ree_receiver, location, node)
when :dao
get_dao_filters_completion_items(ree_receiver, location, node)
else
[]
end
end
|
#get_ree_objects_completions_items(node) ⇒ Object
73
74
75
76
77
78
79
80
81
|
# File 'lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb', line 73
def get_ree_objects_completions_items(node)
ree_objects = @finder.search_objects(node.name.to_s, CANDIDATES_LIMIT)
return [] if ree_objects.size == 0
parsed_doc = RubyLsp::Ree::ParsedDocumentBuilder.build_from_ast(@root_node, @uri)
@mapper.map_ree_objects(ree_objects, node, parsed_doc)
end
|
#get_ree_receiver(receiver_node) ⇒ Object
25
26
27
28
29
|
# File 'lib/ruby_lsp/ruby_lsp_ree/handlers/completion_handler.rb', line 25
def get_ree_receiver(receiver_node)
return if !receiver_node || !receiver_node.is_a?(Prism::CallNode)
@finder.find_objects_by_types(receiver_node.name.to_s, RECEIVER_OBJECT_TYPES).first
end
|