Class: LanguageServer::Project
- Inherits:
-
Object
- Object
- LanguageServer::Project
show all
- Defined in:
- lib/language_server/project.rb,
lib/language_server/project/node.rb,
lib/language_server/project/parser.rb
Defined Under Namespace
Classes: Class, ConstPathRef, Constant, LiteralValue, Module, Node, Parser, VarRef
Instance Method Summary
collapse
Constructor Details
#initialize(file_store) ⇒ Project
Returns a new instance of Project.
5
6
7
8
9
10
|
# File 'lib/language_server/project.rb', line 5
def initialize(file_store)
@file_store = file_store
@result_store = {}
fetch_result
end
|
Instance Method Details
#classes(uri: nil, line: nil, character: nil) ⇒ Object
39
40
41
42
43
|
# File 'lib/language_server/project.rb', line 39
def classes(uri: nil, line: nil, character: nil)
node = find_nearest_node(uri: uri, line: line, character: character) if uri && line && character
lazy_classes.select { |n| n.names[0..-2] == Array(node && node.names).first(n.names.size - 1) }.force
end
|
#constants(uri: nil, line: nil, character: nil) ⇒ Object
27
28
29
30
31
|
# File 'lib/language_server/project.rb', line 27
def constants(uri: nil, line: nil, character: nil)
node = find_nearest_node(uri: uri, line: line, character: character) if uri && line && character
lazy_constants.select { |n| n.names[0..-2] == Array(node && node.names).first(n.names.size - 1) }.force
end
|
#find_definitions(uri:, line:, character:) ⇒ Object
12
13
14
15
16
17
18
19
20
|
# File 'lib/language_server/project.rb', line 12
def find_definitions(uri:, line:, character:)
result = result_store[file_store.path_from_remote_uri(uri)]
ref = result.refs.select { |node| node.lines.include?(line) && node.characters.include?(character) }.min_by { |node| node.characters.size }
return [] unless ref
lazy_modules.select { |n| n.full_name == ref.full_name }.force + lazy_classes.select { |n| n.full_name == ref.full_name }.force
end
|
#modules(uri: nil, line: nil, character: nil) ⇒ Object
33
34
35
36
37
|
# File 'lib/language_server/project.rb', line 33
def modules(uri: nil, line: nil, character: nil)
node = find_nearest_node(uri: uri, line: line, character: character) if uri && line && character
lazy_modules.select { |n| n.names[0..-2] == Array(node && node.names).first(n.names.size - 1) }.force
end
|
#recalculate_result(uri) ⇒ Object
22
23
24
25
|
# File 'lib/language_server/project.rb', line 22
def recalculate_result(uri)
path = file_store.path_from_remote_uri(uri)
calculate(file_store.read(path), path)
end
|