rucoa 0.5.0 → 0.5.1
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -1
- data/lib/rucoa/configuration.rb +6 -6
- data/lib/rucoa/definition_builders/yard_method_definition_builder.rb +29 -2
- data/lib/rucoa/handlers/text_document_document_symbol_handler.rb +4 -3
- data/lib/rucoa/handlers/text_document_selection_range_handler.rb +3 -3
- data/lib/rucoa/handlers/text_document_signature_help_handler.rb +2 -2
- data/lib/rucoa/node_inspector.rb +11 -9
- data/lib/rucoa/position.rb +2 -2
- data/lib/rucoa/version.rb +1 -1
- data/rucoa.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ffd244eb4ed0935120e2d33a03798897a4880e06ff999c1779a920e4926215c
|
4
|
+
data.tar.gz: fe7296dba2ff6d185a729e6649cd9630a5644961837d28306f3a5a193643d38e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f9965f568980d2f069a5670dcf5e008986399b8826a331410bdd0f31cacf10a01068bc8e37109241ccd2c1e79bf9f0bc639600b7608260fffd02b07251e310b
|
7
|
+
data.tar.gz: 1143b279fbbf845f07f0654b37eadf20226d96b1dc930ceea5fd9fc3daf90b6bd786d3a55c08b9601019d85b0e79284de1268de5ed628136cb0097be3e6af846
|
data/Gemfile.lock
CHANGED
data/lib/rucoa/configuration.rb
CHANGED
@@ -6,32 +6,32 @@ module Rucoa
|
|
6
6
|
@settings = {}
|
7
7
|
end
|
8
8
|
|
9
|
-
# @return [
|
9
|
+
# @return [void]
|
10
10
|
def disable_code_action
|
11
11
|
disable('codeAction')
|
12
12
|
end
|
13
13
|
|
14
|
-
# @return [
|
14
|
+
# @return [void]
|
15
15
|
def disable_diagnostics
|
16
16
|
disable('diagnostics')
|
17
17
|
end
|
18
18
|
|
19
|
-
# @return [
|
19
|
+
# @return [void]
|
20
20
|
def disable_document_symbol
|
21
21
|
disable('documentSymbol')
|
22
22
|
end
|
23
23
|
|
24
|
-
# @return [
|
24
|
+
# @return [void]
|
25
25
|
def disable_formatting
|
26
26
|
disable('formatting')
|
27
27
|
end
|
28
28
|
|
29
|
-
# @return [
|
29
|
+
# @return [void]
|
30
30
|
def disable_selection_range
|
31
31
|
disable('selectionRange')
|
32
32
|
end
|
33
33
|
|
34
|
-
# @return [
|
34
|
+
# @return [void]
|
35
35
|
def disable_signature_help
|
36
36
|
disable('signatureHelp')
|
37
37
|
end
|
@@ -131,10 +131,37 @@ module Rucoa
|
|
131
131
|
end
|
132
132
|
|
133
133
|
# @return [Array<String>]
|
134
|
+
# @return [String]
|
135
|
+
# @example returns return type annotated by YARD @return tags
|
136
|
+
# definitions = Rucoa::YardStringDocumentLoader.call(
|
137
|
+
# content: <<~RUBY,
|
138
|
+
# # @return [String]
|
139
|
+
# def foo
|
140
|
+
# 'foo'
|
141
|
+
# end
|
142
|
+
# RUBY
|
143
|
+
# path: '/path/to/foo.rb'
|
144
|
+
# )
|
145
|
+
# expect(definitions.first.return_types).to eq(
|
146
|
+
# %w[
|
147
|
+
# String
|
148
|
+
# ]
|
149
|
+
# )
|
150
|
+
# @example ignores empty @return tags
|
151
|
+
# definitions = Rucoa::YardStringDocumentLoader.call(
|
152
|
+
# content: <<~RUBY,
|
153
|
+
# # @return []
|
154
|
+
# def foo
|
155
|
+
# 'foo'
|
156
|
+
# end
|
157
|
+
# RUBY
|
158
|
+
# path: '/path/to/foo.rb'
|
159
|
+
# )
|
160
|
+
# expect(definitions.first.return_types).to eq([])
|
134
161
|
def return_types
|
135
162
|
return %w[Object] if return_tags.empty?
|
136
163
|
|
137
|
-
return_tags.flat_map(&:types).map do |type|
|
164
|
+
return_tags.flat_map(&:types).compact.map do |type|
|
138
165
|
YardType.new(type).to_rucoa_type
|
139
166
|
end
|
140
167
|
end
|
@@ -173,7 +200,7 @@ module Rucoa
|
|
173
200
|
# 'Hash{Symbol => Object}'
|
174
201
|
# )
|
175
202
|
# expect(yard_type.to_rucoa_type).to eq('Hash')
|
176
|
-
# @
|
203
|
+
# @example scrubs "Array<Array<Integer>>" to "Array"
|
177
204
|
# yard_type = Rucoa::DefinitionBuilders::YardMethodDefinitionBuilder::YardType.new(
|
178
205
|
# 'Array<Array<Integer>>'
|
179
206
|
# )
|
@@ -40,7 +40,7 @@ module Rucoa
|
|
40
40
|
]
|
41
41
|
|
42
42
|
def call
|
43
|
-
return unless
|
43
|
+
return unless responsible?
|
44
44
|
|
45
45
|
respond(document_symbols)
|
46
46
|
end
|
@@ -206,8 +206,9 @@ module Rucoa
|
|
206
206
|
end
|
207
207
|
|
208
208
|
# @return [Boolean]
|
209
|
-
def
|
210
|
-
configuration.enables_document_symbol? &&
|
209
|
+
def responsible?
|
210
|
+
configuration.enables_document_symbol? &&
|
211
|
+
!source.nil?
|
211
212
|
end
|
212
213
|
|
213
214
|
# @return [Rucoa::Source]
|
@@ -4,7 +4,7 @@ module Rucoa
|
|
4
4
|
module Handlers
|
5
5
|
class TextDocumentSelectionRangeHandler < Base
|
6
6
|
def call
|
7
|
-
return unless
|
7
|
+
return unless responsible?
|
8
8
|
|
9
9
|
respond(
|
10
10
|
positions.filter_map do |position|
|
@@ -19,9 +19,9 @@ module Rucoa
|
|
19
19
|
private
|
20
20
|
|
21
21
|
# @return [Boolean]
|
22
|
-
def
|
22
|
+
def responsible?
|
23
23
|
configuration.enables_selection_range? &&
|
24
|
-
source
|
24
|
+
!source.nil?
|
25
25
|
end
|
26
26
|
|
27
27
|
# @return [Rucoa::Source]
|
@@ -11,7 +11,7 @@ module Rucoa
|
|
11
11
|
|
12
12
|
# @return [Hash]
|
13
13
|
def signature_help
|
14
|
-
return unless
|
14
|
+
return unless responsible?
|
15
15
|
|
16
16
|
{
|
17
17
|
signatures: signature_informations
|
@@ -19,7 +19,7 @@ module Rucoa
|
|
19
19
|
end
|
20
20
|
|
21
21
|
# @return [Boolean]
|
22
|
-
def
|
22
|
+
def responsible?
|
23
23
|
configuration.enables_signature_help? &&
|
24
24
|
node.is_a?(Nodes::SendNode)
|
25
25
|
end
|
data/lib/rucoa/node_inspector.rb
CHANGED
@@ -11,16 +11,16 @@ module Rucoa
|
|
11
11
|
@node = node
|
12
12
|
end
|
13
13
|
|
14
|
-
# @return [Array<String
|
14
|
+
# @return [Array<String>]
|
15
15
|
def method_definitions
|
16
|
-
|
16
|
+
method_full_qualified_names.flat_map do |full_qualified_name|
|
17
17
|
@definition_store.select_by_full_qualified_name(full_qualified_name)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
# @return [Array<String
|
21
|
+
# @return [Array<String>]
|
22
22
|
def method_receiver_types
|
23
|
-
return unless @node.is_a?(Nodes::SendNode)
|
23
|
+
return [] unless @node.is_a?(Nodes::SendNode)
|
24
24
|
|
25
25
|
if @node.receiver
|
26
26
|
self.class.new(
|
@@ -32,7 +32,7 @@ module Rucoa
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
# @return [Array<String
|
35
|
+
# @return [Array<String>]
|
36
36
|
def return_types
|
37
37
|
case @node.type
|
38
38
|
when :const
|
@@ -67,14 +67,16 @@ module Rucoa
|
|
67
67
|
%w[Regexp]
|
68
68
|
when true
|
69
69
|
%w[TrueClass]
|
70
|
+
else
|
71
|
+
[]
|
70
72
|
end
|
71
73
|
end
|
72
74
|
|
73
75
|
private
|
74
76
|
|
75
|
-
# @return [Array<String
|
76
|
-
def
|
77
|
-
method_receiver_types
|
77
|
+
# @return [Array<String>]
|
78
|
+
def method_full_qualified_names
|
79
|
+
method_receiver_types.map do |type|
|
78
80
|
[
|
79
81
|
type,
|
80
82
|
@node.name
|
@@ -101,7 +103,7 @@ module Rucoa
|
|
101
103
|
|
102
104
|
# @return [Array<String>]
|
103
105
|
def return_types_for_send
|
104
|
-
|
106
|
+
method_full_qualified_names.flat_map do |full_qualified_name|
|
105
107
|
@definition_store.select_by_full_qualified_name(full_qualified_name).flat_map(&:return_types)
|
106
108
|
end.uniq
|
107
109
|
end
|
data/lib/rucoa/position.rb
CHANGED
data/lib/rucoa/version.rb
CHANGED
data/rucoa.gemspec
CHANGED
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.5.
|
4
|
+
version: 0.5.1
|
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-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: yard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description:
|
56
70
|
email:
|
57
71
|
- r7kamura@gmail.com
|