rucoa 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -3
- data/Gemfile.lock +3 -3
- data/README.md +4 -1
- data/lib/rucoa/configuration.rb +22 -12
- data/lib/rucoa/definition_store.rb +131 -131
- data/lib/rucoa/definitions/method_definition.rb +11 -11
- data/lib/rucoa/handler_concerns/configuration_requestable.rb +7 -7
- data/lib/rucoa/handler_concerns/diagnostics_publishable.rb +11 -11
- data/lib/rucoa/handler_concerns/text_document_position_parameters.rb +29 -0
- data/lib/rucoa/handler_concerns/text_document_uri_parameters.rb +21 -0
- data/lib/rucoa/handler_concerns.rb +2 -0
- data/lib/rucoa/handlers/base.rb +9 -9
- data/lib/rucoa/handlers/initialize_handler.rb +1 -0
- data/lib/rucoa/handlers/initialized_handler.rb +16 -16
- data/lib/rucoa/handlers/text_document_code_action_handler.rb +12 -12
- data/lib/rucoa/handlers/text_document_completion_handler.rb +85 -99
- data/lib/rucoa/handlers/text_document_definition_handler.rb +11 -30
- data/lib/rucoa/handlers/text_document_did_close_handler.rb +2 -8
- data/lib/rucoa/handlers/text_document_did_open_handler.rb +3 -7
- data/lib/rucoa/handlers/text_document_document_highlight_handler.rb +256 -0
- data/lib/rucoa/handlers/text_document_document_symbol_handler.rb +47 -76
- data/lib/rucoa/handlers/text_document_formatting_handler.rb +15 -23
- data/lib/rucoa/handlers/text_document_hover_handler.rb +24 -43
- data/lib/rucoa/handlers/text_document_range_formatting_handler.rb +17 -25
- data/lib/rucoa/handlers/text_document_selection_range_handler.rb +11 -19
- data/lib/rucoa/handlers/text_document_signature_help_handler.rb +17 -36
- data/lib/rucoa/handlers.rb +1 -0
- data/lib/rucoa/node_concerns/body.rb +1 -1
- data/lib/rucoa/node_concerns/qualified_name.rb +5 -5
- data/lib/rucoa/node_concerns/rescue.rb +21 -0
- data/lib/rucoa/node_concerns.rb +1 -0
- data/lib/rucoa/node_inspector.rb +5 -5
- data/lib/rucoa/nodes/base.rb +48 -48
- data/lib/rucoa/nodes/begin_node.rb +2 -0
- data/lib/rucoa/nodes/block_node.rb +24 -0
- data/lib/rucoa/nodes/case_node.rb +24 -0
- data/lib/rucoa/nodes/const_node.rb +26 -26
- data/lib/rucoa/nodes/def_node.rb +14 -13
- data/lib/rucoa/nodes/ensure_node.rb +19 -0
- data/lib/rucoa/nodes/for_node.rb +8 -0
- data/lib/rucoa/nodes/if_node.rb +32 -0
- data/lib/rucoa/nodes/resbody_node.rb +8 -0
- data/lib/rucoa/nodes/rescue_node.rb +17 -0
- data/lib/rucoa/nodes/send_node.rb +40 -0
- data/lib/rucoa/nodes/until_node.rb +8 -0
- data/lib/rucoa/nodes/when_node.rb +8 -0
- data/lib/rucoa/nodes/while_node.rb +8 -0
- data/lib/rucoa/nodes.rb +10 -1
- data/lib/rucoa/parser_builder.rb +16 -2
- data/lib/rucoa/range.rb +9 -3
- data/lib/rucoa/rbs/constant_definition_mapper.rb +5 -5
- data/lib/rucoa/rbs/method_definition_mapper.rb +18 -18
- data/lib/rucoa/rbs/module_definition_mapper.rb +13 -13
- data/lib/rucoa/rbs/ruby_definitions_loader.rb +5 -5
- data/lib/rucoa/rubocop/configuration_checker.rb +7 -7
- data/lib/rucoa/server.rb +24 -23
- data/lib/rucoa/source.rb +5 -5
- data/lib/rucoa/source_store.rb +8 -8
- data/lib/rucoa/version.rb +1 -1
- data/lib/rucoa/yard/definition_generators/method_definition_generator.rb +1 -1
- metadata +16 -3
- data/lib/rucoa/nodes/defs_node.rb +0 -33
@@ -43,11 +43,6 @@ module Rucoa
|
|
43
43
|
|
44
44
|
private
|
45
45
|
|
46
|
-
# @return [Array<RBS::AST::Declarations::Base>]
|
47
|
-
def declarations
|
48
|
-
class_declarations + constant_declarations
|
49
|
-
end
|
50
|
-
|
51
46
|
# @return [Array<RBS::AST::Declarations::Class>]
|
52
47
|
def class_declarations
|
53
48
|
environment.class_decls.values.flat_map do |multi_entry|
|
@@ -60,6 +55,11 @@ module Rucoa
|
|
60
55
|
environment.constant_decls.values.map(&:decl)
|
61
56
|
end
|
62
57
|
|
58
|
+
# @return [Array<RBS::AST::Declarations::Base>]
|
59
|
+
def declarations
|
60
|
+
class_declarations + constant_declarations
|
61
|
+
end
|
62
|
+
|
63
63
|
# @return [RBS::Environment]
|
64
64
|
def environment
|
65
65
|
@environment ||= ::RBS::Environment.from_loader(
|
@@ -19,13 +19,6 @@ module Rucoa
|
|
19
19
|
|
20
20
|
private
|
21
21
|
|
22
|
-
# @return [Boolean]
|
23
|
-
def rubocop_configured_for_current_directory?
|
24
|
-
each_current_and_ancestor_pathname.any? do |pathname|
|
25
|
-
pathname.join('.rubocop.yml').exist?
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
22
|
# @return [Enumerable<Pathname>]
|
30
23
|
def each_current_and_ancestor_pathname
|
31
24
|
return to_enum(__method__) unless block_given?
|
@@ -39,6 +32,13 @@ module Rucoa
|
|
39
32
|
end
|
40
33
|
self
|
41
34
|
end
|
35
|
+
|
36
|
+
# @return [Boolean]
|
37
|
+
def rubocop_configured_for_current_directory?
|
38
|
+
each_current_and_ancestor_pathname.any? do |pathname|
|
39
|
+
pathname.join('.rubocop.yml').exist?
|
40
|
+
end
|
41
|
+
end
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
data/lib/rucoa/server.rb
CHANGED
@@ -17,6 +17,7 @@ module Rucoa
|
|
17
17
|
'textDocument/didChange' => Handlers::TextDocumentDidChangeHandler,
|
18
18
|
'textDocument/didClose' => Handlers::TextDocumentDidCloseHandler,
|
19
19
|
'textDocument/didOpen' => Handlers::TextDocumentDidOpenHandler,
|
20
|
+
'textDocument/documentHighlight' => Handlers::TextDocumentDocumentHighlightHandler,
|
20
21
|
'textDocument/documentSymbol' => Handlers::TextDocumentDocumentSymbolHandler,
|
21
22
|
'textDocument/formatting' => Handlers::TextDocumentFormattingHandler,
|
22
23
|
'textDocument/hover' => Handlers::TextDocumentHoverHandler,
|
@@ -62,6 +63,19 @@ module Rucoa
|
|
62
63
|
@definition_store.bulk_add(DefinitionArchiver.load)
|
63
64
|
end
|
64
65
|
|
66
|
+
# @return [void]
|
67
|
+
def finish
|
68
|
+
exit(0)
|
69
|
+
end
|
70
|
+
|
71
|
+
# @note This method is for testing.
|
72
|
+
# @return [Array<Hash>]
|
73
|
+
def responses
|
74
|
+
io = @writer.io
|
75
|
+
io.rewind
|
76
|
+
MessageReader.new(io).read.to_a
|
77
|
+
end
|
78
|
+
|
65
79
|
# @return [void]
|
66
80
|
def start
|
67
81
|
@reader.read do |message|
|
@@ -75,11 +89,6 @@ module Rucoa
|
|
75
89
|
end
|
76
90
|
end
|
77
91
|
|
78
|
-
# @return [void]
|
79
|
-
def finish
|
80
|
-
exit(0)
|
81
|
-
end
|
82
|
-
|
83
92
|
# @yieldparam response [Hash]
|
84
93
|
# @param message [Hash]
|
85
94
|
# @return [void]
|
@@ -94,15 +103,18 @@ module Rucoa
|
|
94
103
|
end
|
95
104
|
end
|
96
105
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
MessageReader.new(io).read.to_a
|
106
|
+
private
|
107
|
+
|
108
|
+
# @yieldparam log [String]
|
109
|
+
def debug(&block)
|
110
|
+
@logger.debug(&block) if configuration.enables_debug?
|
103
111
|
end
|
104
112
|
|
105
|
-
|
113
|
+
# @param request_method [String]
|
114
|
+
# @return [Class, nil]
|
115
|
+
def find_client_request_handler(request_method)
|
116
|
+
METHOD_TO_HANDLER_MAP[request_method]
|
117
|
+
end
|
106
118
|
|
107
119
|
# @param request [Hash]
|
108
120
|
# @return [void]
|
@@ -114,11 +126,6 @@ module Rucoa
|
|
114
126
|
end
|
115
127
|
end
|
116
128
|
|
117
|
-
# @yieldparam log [String]
|
118
|
-
def debug(&block)
|
119
|
-
@logger.debug(&block) if configuration.enables_debug?
|
120
|
-
end
|
121
|
-
|
122
129
|
# @param request [Hash]
|
123
130
|
# @return [void]
|
124
131
|
def handle_client_request(request)
|
@@ -134,12 +141,6 @@ module Rucoa
|
|
134
141
|
@client_response_handlers.delete(response['id'])&.call(response)
|
135
142
|
end
|
136
143
|
|
137
|
-
# @param request_method [String]
|
138
|
-
# @return [Class, nil]
|
139
|
-
def find_client_request_handler(request_method)
|
140
|
-
METHOD_TO_HANDLER_MAP[request_method]
|
141
|
-
end
|
142
|
-
|
143
144
|
# @param message [Hash]
|
144
145
|
# @return [void]
|
145
146
|
def write_server_request(
|
data/lib/rucoa/source.rb
CHANGED
@@ -62,6 +62,11 @@ module Rucoa
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
# @return [Boolean]
|
66
|
+
def failed_to_parse?
|
67
|
+
parse_result.failed?
|
68
|
+
end
|
69
|
+
|
65
70
|
# @return [String, nil]
|
66
71
|
# @example returns path for file URI
|
67
72
|
# source = Rucoa::Source.new(
|
@@ -96,11 +101,6 @@ module Rucoa
|
|
96
101
|
parse_result.root_node
|
97
102
|
end
|
98
103
|
|
99
|
-
# @return [Boolean]
|
100
|
-
def failed_to_parse?
|
101
|
-
parse_result.failed?
|
102
|
-
end
|
103
|
-
|
104
104
|
# @return [Boolean]
|
105
105
|
def untitled?
|
106
106
|
uri_object.scheme == 'untitled'
|
data/lib/rucoa/source_store.rb
CHANGED
@@ -6,10 +6,10 @@ module Rucoa
|
|
6
6
|
@data = {}
|
7
7
|
end
|
8
8
|
|
9
|
-
# @
|
10
|
-
# @return [
|
11
|
-
def
|
12
|
-
@data
|
9
|
+
# @yieldparam uri [String]
|
10
|
+
# @return [Enumerable<String>]
|
11
|
+
def each_uri(&block)
|
12
|
+
@data.each_key(&block)
|
13
13
|
end
|
14
14
|
|
15
15
|
# @param uri [String]
|
@@ -18,10 +18,10 @@ module Rucoa
|
|
18
18
|
@data[uri]
|
19
19
|
end
|
20
20
|
|
21
|
-
# @
|
22
|
-
# @return [
|
23
|
-
def
|
24
|
-
@data.
|
21
|
+
# @param source [Rucoa::Source]
|
22
|
+
# @return [void]
|
23
|
+
def update(source)
|
24
|
+
@data[source.uri] = source
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
data/lib/rucoa/version.rb
CHANGED
@@ -36,7 +36,7 @@ module Rucoa
|
|
36
36
|
# ).definitions
|
37
37
|
# expect(definitions[1].qualified_name).to eq('Foo.bar')
|
38
38
|
def call
|
39
|
-
return [] unless @node.is_a?(Nodes::DefNode)
|
39
|
+
return [] unless @node.is_a?(Nodes::DefNode)
|
40
40
|
|
41
41
|
[
|
42
42
|
Definitions::MethodDefinition.new(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rucoa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -104,6 +104,8 @@ files:
|
|
104
104
|
- lib/rucoa/handler_concerns.rb
|
105
105
|
- lib/rucoa/handler_concerns/configuration_requestable.rb
|
106
106
|
- lib/rucoa/handler_concerns/diagnostics_publishable.rb
|
107
|
+
- lib/rucoa/handler_concerns/text_document_position_parameters.rb
|
108
|
+
- lib/rucoa/handler_concerns/text_document_uri_parameters.rb
|
107
109
|
- lib/rucoa/handlers.rb
|
108
110
|
- lib/rucoa/handlers/base.rb
|
109
111
|
- lib/rucoa/handlers/exit_handler.rb
|
@@ -116,6 +118,7 @@ files:
|
|
116
118
|
- lib/rucoa/handlers/text_document_did_change_handler.rb
|
117
119
|
- lib/rucoa/handlers/text_document_did_close_handler.rb
|
118
120
|
- lib/rucoa/handlers/text_document_did_open_handler.rb
|
121
|
+
- lib/rucoa/handlers/text_document_document_highlight_handler.rb
|
119
122
|
- lib/rucoa/handlers/text_document_document_symbol_handler.rb
|
120
123
|
- lib/rucoa/handlers/text_document_formatting_handler.rb
|
121
124
|
- lib/rucoa/handlers/text_document_hover_handler.rb
|
@@ -129,22 +132,32 @@ files:
|
|
129
132
|
- lib/rucoa/node_concerns.rb
|
130
133
|
- lib/rucoa/node_concerns/body.rb
|
131
134
|
- lib/rucoa/node_concerns/qualified_name.rb
|
135
|
+
- lib/rucoa/node_concerns/rescue.rb
|
132
136
|
- lib/rucoa/node_inspector.rb
|
133
137
|
- lib/rucoa/nodes.rb
|
134
138
|
- lib/rucoa/nodes/base.rb
|
135
139
|
- lib/rucoa/nodes/begin_node.rb
|
140
|
+
- lib/rucoa/nodes/block_node.rb
|
141
|
+
- lib/rucoa/nodes/case_node.rb
|
136
142
|
- lib/rucoa/nodes/casgn_node.rb
|
137
143
|
- lib/rucoa/nodes/cbase_node.rb
|
138
144
|
- lib/rucoa/nodes/class_node.rb
|
139
145
|
- lib/rucoa/nodes/const_node.rb
|
140
146
|
- lib/rucoa/nodes/def_node.rb
|
141
|
-
- lib/rucoa/nodes/
|
147
|
+
- lib/rucoa/nodes/ensure_node.rb
|
148
|
+
- lib/rucoa/nodes/for_node.rb
|
149
|
+
- lib/rucoa/nodes/if_node.rb
|
142
150
|
- lib/rucoa/nodes/lvar_node.rb
|
143
151
|
- lib/rucoa/nodes/module_node.rb
|
152
|
+
- lib/rucoa/nodes/resbody_node.rb
|
153
|
+
- lib/rucoa/nodes/rescue_node.rb
|
144
154
|
- lib/rucoa/nodes/sclass_node.rb
|
145
155
|
- lib/rucoa/nodes/send_node.rb
|
146
156
|
- lib/rucoa/nodes/str_node.rb
|
147
157
|
- lib/rucoa/nodes/sym_node.rb
|
158
|
+
- lib/rucoa/nodes/until_node.rb
|
159
|
+
- lib/rucoa/nodes/when_node.rb
|
160
|
+
- lib/rucoa/nodes/while_node.rb
|
148
161
|
- lib/rucoa/parse_result.rb
|
149
162
|
- lib/rucoa/parser.rb
|
150
163
|
- lib/rucoa/parser_builder.rb
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Rucoa
|
4
|
-
module Nodes
|
5
|
-
class DefsNode < Base
|
6
|
-
# @return [String]
|
7
|
-
def qualified_name
|
8
|
-
[
|
9
|
-
namespace,
|
10
|
-
method_marker,
|
11
|
-
name
|
12
|
-
].join
|
13
|
-
end
|
14
|
-
|
15
|
-
# @return [String]
|
16
|
-
def name
|
17
|
-
children[1].to_s
|
18
|
-
end
|
19
|
-
|
20
|
-
# @return [Boolean]
|
21
|
-
def singleton?
|
22
|
-
true
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
# @return [String]
|
28
|
-
def method_marker
|
29
|
-
'.'
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|