Class: RubyLsp::Ree::ReeObjectFinder
- Inherits:
-
Object
- Object
- RubyLsp::Ree::ReeObjectFinder
show all
- Includes:
- ReeLspUtils
- Defined in:
- lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb
Defined Under Namespace
Classes: ReeObjectDecorator
Constant Summary
collapse
- MAX_LIMIT =
1000
- REE_OBJECT_STRING =
'ree_object'
Constants included
from ReeLspUtils
RubyLsp::Ree::ReeLspUtils::Entry
Instance Method Summary
collapse
#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
Returns a new instance of ReeObjectFinder.
27
28
29
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 27
def initialize(index)
@index = index
end
|
Instance Method Details
#find_classes(name) ⇒ Object
52
53
54
55
56
57
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 52
def find_classes(name)
keys = @index
.names
.select{ _1.split('::').last == name}
@index.instance_variable_get(:@entries).values_at(*keys)
end
|
#find_object(name) ⇒ Object
59
60
61
62
63
64
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 59
def find_object(name)
objects_by_name = @index[name]
return unless objects_by_name
objects_by_name.detect{ _1..to_s.lines.first&.chomp == REE_OBJECT_STRING }
end
|
#find_object_for_package(name, package_name) ⇒ Object
74
75
76
77
78
79
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 74
def find_object_for_package(name, package_name)
objects_by_name = @index[name]
return unless objects_by_name
objects_by_name.detect{ _1..to_s.lines.first&.chomp == REE_OBJECT_STRING && package_name_from_uri(_1.uri) == package_name }
end
|
#find_objects(name) ⇒ Object
66
67
68
69
70
71
72
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 66
def find_objects(name)
objects_by_name = @index[name]
return [] unless objects_by_name
ree_objects = objects_by_name.select{ _1..to_s.lines.first&.chomp == REE_OBJECT_STRING }
decorate_objects(ree_objects)
end
|
#find_objects_by_types(name, types) ⇒ Object
81
82
83
84
85
86
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 81
def find_objects_by_types(name, types)
objects_by_name = @index[name]
return [] unless objects_by_name
objects_by_name.select{ types.include?(object_type(_1)) }
end
|
#object_documentation(ree_object) ⇒ Object
95
96
97
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 95
def object_documentation(ree_object)
ree_object..lines[2..-1].join("\n").chomp
end
|
#object_type(ree_object) ⇒ Object
88
89
90
91
92
93
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 88
def object_type(ree_object)
type_str = ree_object..lines[1]&.chomp
return unless type_str
type_str.split(' ').last[1..-1].to_sym
end
|
#search_class_objects(name) ⇒ Object
41
42
43
44
45
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 41
def search_class_objects(name)
@index
.names
.select{ _1.split('::').last[0...name.size] == name}
end
|
#search_classes(name) ⇒ Object
47
48
49
50
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 47
def search_classes(name)
keys = search_class_objects(name)
@index.instance_variable_get(:@entries).values_at(*keys)
end
|
#search_objects(name, limit) ⇒ Object
31
32
33
34
35
36
37
38
39
|
# File 'lib/ruby_lsp/ruby_lsp_ree/ree_object_finder.rb', line 31
def search_objects(name, limit)
@index.prefix_search(name)
.take(MAX_LIMIT)
.flatten
.select{ _1. }
.select{ _1..to_s.lines.first&.chomp == REE_OBJECT_STRING }
.sort_by{ _1.name.length }
.take(limit)
end
|