rucoa 0.11.0 → 0.13.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 +12 -3
- data/Gemfile.lock +3 -3
- data/README.md +6 -1
- data/images/document-highlight.gif +0 -0
- 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 +531 -0
- data/lib/rucoa/handlers/text_document_document_symbol_handler.rb +47 -76
- data/lib/rucoa/handlers/text_document_formatting_handler.rb +16 -24
- 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/modifier.rb +35 -0
- data/lib/rucoa/node_concerns/qualified_name.rb +5 -5
- data/lib/rucoa/node_concerns/rescue.rb +21 -0
- data/lib/rucoa/node_concerns/variable.rb +26 -0
- data/lib/rucoa/node_concerns.rb +3 -0
- data/lib/rucoa/node_inspector.rb +5 -5
- data/lib/rucoa/nodes/arg_node.rb +26 -0
- data/lib/rucoa/nodes/args_node.rb +14 -0
- data/lib/rucoa/nodes/base.rb +111 -47
- data/lib/rucoa/nodes/begin_node.rb +2 -0
- data/lib/rucoa/nodes/block_node.rb +38 -0
- data/lib/rucoa/nodes/case_node.rb +24 -0
- data/lib/rucoa/nodes/const_node.rb +26 -26
- data/lib/rucoa/nodes/cvar_node.rb +9 -0
- data/lib/rucoa/nodes/cvasgn_node.rb +9 -0
- data/lib/rucoa/nodes/def_node.rb +28 -13
- data/lib/rucoa/nodes/ensure_node.rb +19 -0
- data/lib/rucoa/nodes/for_node.rb +8 -0
- data/lib/rucoa/nodes/gvar_node.rb +9 -0
- data/lib/rucoa/nodes/gvasgn_node.rb +9 -0
- data/lib/rucoa/nodes/if_node.rb +34 -0
- data/lib/rucoa/nodes/ivar_node.rb +9 -0
- data/lib/rucoa/nodes/ivasgn_node.rb +9 -0
- data/lib/rucoa/nodes/lvar_node.rb +1 -18
- data/lib/rucoa/nodes/lvasgn_node.rb +9 -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 +9 -0
- data/lib/rucoa/nodes/when_node.rb +8 -0
- data/lib/rucoa/nodes/while_node.rb +9 -0
- data/lib/rucoa/nodes.rb +19 -1
- data/lib/rucoa/parser_builder.rb +26 -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 +6 -6
- 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
- data/lib/rucoa/yard/definitions_loader.rb +1 -1
- data/rucoa.gemspec +0 -1
- metadata +28 -4
- data/lib/rucoa/nodes/defs_node.rb +0 -33
@@ -3,19 +3,14 @@
|
|
3
3
|
module Rucoa
|
4
4
|
module Handlers
|
5
5
|
class TextDocumentFormattingHandler < Base
|
6
|
+
include HandlerConcerns::TextDocumentUriParameters
|
7
|
+
|
6
8
|
def call
|
7
9
|
respond(edits)
|
8
10
|
end
|
9
11
|
|
10
12
|
private
|
11
13
|
|
12
|
-
# @return [Boolean]
|
13
|
-
def formattable?
|
14
|
-
configuration.enables_formatting? &&
|
15
|
-
source &&
|
16
|
-
Rubocop::ConfigurationChecker.call
|
17
|
-
end
|
18
|
-
|
19
14
|
# @return [Array<Hash>]
|
20
15
|
def edits
|
21
16
|
return [] unless formattable?
|
@@ -23,22 +18,11 @@ module Rucoa
|
|
23
18
|
[text_edit]
|
24
19
|
end
|
25
20
|
|
26
|
-
# @return [
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
# @return [String]
|
32
|
-
def uri
|
33
|
-
request.dig('params', 'textDocument', 'uri')
|
34
|
-
end
|
35
|
-
|
36
|
-
# @return [Hash]
|
37
|
-
def text_edit
|
38
|
-
{
|
39
|
-
newText: new_text,
|
40
|
-
range: range
|
41
|
-
}
|
21
|
+
# @return [Boolean]
|
22
|
+
def formattable?
|
23
|
+
configuration.enables_formatting? &&
|
24
|
+
source &&
|
25
|
+
Rubocop::ConfigurationChecker.call
|
42
26
|
end
|
43
27
|
|
44
28
|
# @return [String]
|
@@ -54,11 +38,19 @@ module Rucoa
|
|
54
38
|
line: 1
|
55
39
|
),
|
56
40
|
Position.new(
|
57
|
-
column: @source.content.lines.last
|
41
|
+
column: @source.content.lines.last&.length || 0,
|
58
42
|
line: @source.content.lines.count + 1
|
59
43
|
)
|
60
44
|
).to_vscode_range
|
61
45
|
end
|
46
|
+
|
47
|
+
# @return [Hash]
|
48
|
+
def text_edit
|
49
|
+
{
|
50
|
+
newText: new_text,
|
51
|
+
range: range
|
52
|
+
}
|
53
|
+
end
|
62
54
|
end
|
63
55
|
end
|
64
56
|
end
|
@@ -3,28 +3,15 @@
|
|
3
3
|
module Rucoa
|
4
4
|
module Handlers
|
5
5
|
class TextDocumentHoverHandler < Base
|
6
|
+
include HandlerConcerns::TextDocumentPositionParameters
|
7
|
+
include HandlerConcerns::TextDocumentUriParameters
|
8
|
+
|
6
9
|
def call
|
7
10
|
respond(hover)
|
8
11
|
end
|
9
12
|
|
10
13
|
private
|
11
14
|
|
12
|
-
# @return [Hash, nil]
|
13
|
-
def hover
|
14
|
-
return unless responsible?
|
15
|
-
|
16
|
-
{
|
17
|
-
contents: contents,
|
18
|
-
range: range.to_vscode_range
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
# @return [Boolean]
|
23
|
-
def responsible?
|
24
|
-
configuration.enables_hover? &&
|
25
|
-
!contents.nil?
|
26
|
-
end
|
27
|
-
|
28
15
|
# @return [String, nil]
|
29
16
|
def contents
|
30
17
|
@contents ||=
|
@@ -42,33 +29,6 @@ module Rucoa
|
|
42
29
|
end
|
43
30
|
end
|
44
31
|
|
45
|
-
# @return [Rucoa::Range]
|
46
|
-
def range
|
47
|
-
Range.from_parser_range(node.location.expression)
|
48
|
-
end
|
49
|
-
|
50
|
-
# @return [Rucoa::Nodes::Base, nil]
|
51
|
-
def node
|
52
|
-
@node ||= source&.node_at(position)
|
53
|
-
end
|
54
|
-
|
55
|
-
# @return [Rucoa::Source, nil]
|
56
|
-
def source
|
57
|
-
@source ||= source_store.get(uri)
|
58
|
-
end
|
59
|
-
|
60
|
-
# @return [String]
|
61
|
-
def uri
|
62
|
-
request.dig('params', 'textDocument', 'uri')
|
63
|
-
end
|
64
|
-
|
65
|
-
# @return [Rucoa::Position]
|
66
|
-
def position
|
67
|
-
Position.from_vscode_position(
|
68
|
-
request.dig('params', 'position')
|
69
|
-
)
|
70
|
-
end
|
71
|
-
|
72
32
|
# @return [Rucoa::Definitions::Base, nil]
|
73
33
|
def definition
|
74
34
|
return unless node
|
@@ -78,6 +38,27 @@ module Rucoa
|
|
78
38
|
node: node
|
79
39
|
).definitions.first
|
80
40
|
end
|
41
|
+
|
42
|
+
# @return [Hash, nil]
|
43
|
+
def hover
|
44
|
+
return unless responsible?
|
45
|
+
|
46
|
+
{
|
47
|
+
contents: contents,
|
48
|
+
range: range.to_vscode_range
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
# @return [Rucoa::Range]
|
53
|
+
def range
|
54
|
+
Range.from_parser_range(node.location.expression)
|
55
|
+
end
|
56
|
+
|
57
|
+
# @return [Boolean]
|
58
|
+
def responsible?
|
59
|
+
configuration.enables_hover? &&
|
60
|
+
!contents.nil?
|
61
|
+
end
|
81
62
|
end
|
82
63
|
end
|
83
64
|
end
|
@@ -3,12 +3,26 @@
|
|
3
3
|
module Rucoa
|
4
4
|
module Handlers
|
5
5
|
class TextDocumentRangeFormattingHandler < Base
|
6
|
+
include HandlerConcerns::TextDocumentUriParameters
|
7
|
+
|
6
8
|
def call
|
7
9
|
respond(edits)
|
8
10
|
end
|
9
11
|
|
10
12
|
private
|
11
13
|
|
14
|
+
# @return [Array<RuboCop::Cop::Corrector>]
|
15
|
+
def correctable_offenses
|
16
|
+
offenses.select(&:corrector)
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [Array(Rucoa::Range, String)]
|
20
|
+
def correctable_replacements
|
21
|
+
replacements.select do |replacement_range, _|
|
22
|
+
range.contain?(replacement_range)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
12
26
|
# @return [Array<Hash>]
|
13
27
|
def edits
|
14
28
|
return [] unless formattable?
|
@@ -28,14 +42,9 @@ module Rucoa
|
|
28
42
|
Rubocop::ConfigurationChecker.call
|
29
43
|
end
|
30
44
|
|
31
|
-
# @return [
|
32
|
-
def
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
# @return [String]
|
37
|
-
def uri
|
38
|
-
request.dig('params', 'textDocument', 'uri')
|
45
|
+
# @return [Array<RuboCop::Cop::Offense>]
|
46
|
+
def offenses
|
47
|
+
Rubocop::Investigator.call(source: source)
|
39
48
|
end
|
40
49
|
|
41
50
|
# @return [Rucoa::Range]
|
@@ -45,23 +54,6 @@ module Rucoa
|
|
45
54
|
)
|
46
55
|
end
|
47
56
|
|
48
|
-
# @return [Array<RuboCop::Cop::Corrector>]
|
49
|
-
def correctable_offenses
|
50
|
-
offenses.select(&:corrector)
|
51
|
-
end
|
52
|
-
|
53
|
-
# @return [Array(Rucoa::Range, String)]
|
54
|
-
def correctable_replacements
|
55
|
-
replacements.select do |replacement_range, _|
|
56
|
-
range.contain?(replacement_range)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# @return [Array<RuboCop::Cop::Offense>]
|
61
|
-
def offenses
|
62
|
-
Rubocop::Investigator.call(source: source)
|
63
|
-
end
|
64
|
-
|
65
57
|
# @return [Array(Rucoa::Range, String)]
|
66
58
|
def replacements
|
67
59
|
correctable_offenses.map(&:corrector).flat_map(&:as_replacements).map do |replacement_range, replacement|
|
@@ -3,6 +3,8 @@
|
|
3
3
|
module Rucoa
|
4
4
|
module Handlers
|
5
5
|
class TextDocumentSelectionRangeHandler < Base
|
6
|
+
include HandlerConcerns::TextDocumentUriParameters
|
7
|
+
|
6
8
|
def call
|
7
9
|
return unless responsible?
|
8
10
|
|
@@ -18,17 +20,6 @@ module Rucoa
|
|
18
20
|
|
19
21
|
private
|
20
22
|
|
21
|
-
# @return [Boolean]
|
22
|
-
def responsible?
|
23
|
-
configuration.enables_selection_range? &&
|
24
|
-
!source.nil?
|
25
|
-
end
|
26
|
-
|
27
|
-
# @return [Rucoa::Source]
|
28
|
-
def source
|
29
|
-
@source ||= source_store.get(uri)
|
30
|
-
end
|
31
|
-
|
32
23
|
# @return [Array<Rucoa::Position>]
|
33
24
|
def positions
|
34
25
|
request.dig('params', 'positions').map do |position|
|
@@ -36,9 +27,10 @@ module Rucoa
|
|
36
27
|
end
|
37
28
|
end
|
38
29
|
|
39
|
-
# @return [
|
40
|
-
def
|
41
|
-
|
30
|
+
# @return [Boolean]
|
31
|
+
def responsible?
|
32
|
+
configuration.enables_selection_range? &&
|
33
|
+
!source.nil?
|
42
34
|
end
|
43
35
|
|
44
36
|
class SelectionRangeProvider
|
@@ -128,6 +120,11 @@ module Rucoa
|
|
128
120
|
|
129
121
|
private
|
130
122
|
|
123
|
+
# @return [Rucoa::Range]
|
124
|
+
def expression_range
|
125
|
+
Range.from_parser_range(@node.location.expression)
|
126
|
+
end
|
127
|
+
|
131
128
|
# @return [Rucoa::Range]
|
132
129
|
def inner_range
|
133
130
|
Range.new(
|
@@ -135,11 +132,6 @@ module Rucoa
|
|
135
132
|
Position.from_parser_range_beginning(@node.location.end)
|
136
133
|
)
|
137
134
|
end
|
138
|
-
|
139
|
-
# @return [Rucoa::Range]
|
140
|
-
def expression_range
|
141
|
-
Range.from_parser_range(@node.location.expression)
|
142
|
-
end
|
143
135
|
end
|
144
136
|
end
|
145
137
|
end
|
@@ -3,12 +3,29 @@
|
|
3
3
|
module Rucoa
|
4
4
|
module Handlers
|
5
5
|
class TextDocumentSignatureHelpHandler < Base
|
6
|
+
include HandlerConcerns::TextDocumentPositionParameters
|
7
|
+
include HandlerConcerns::TextDocumentUriParameters
|
8
|
+
|
6
9
|
def call
|
7
10
|
respond(signature_help)
|
8
11
|
end
|
9
12
|
|
10
13
|
private
|
11
14
|
|
15
|
+
# @return [Array<Rucoa::Definitions::MethodDefinition>]
|
16
|
+
def method_definitions
|
17
|
+
NodeInspector.new(
|
18
|
+
definition_store: definition_store,
|
19
|
+
node: node
|
20
|
+
).method_definitions
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [Boolean]
|
24
|
+
def responsible?
|
25
|
+
configuration.enables_signature_help? &&
|
26
|
+
node.is_a?(Nodes::SendNode)
|
27
|
+
end
|
28
|
+
|
12
29
|
# @return [Hash]
|
13
30
|
def signature_help
|
14
31
|
return unless responsible?
|
@@ -18,12 +35,6 @@ module Rucoa
|
|
18
35
|
}
|
19
36
|
end
|
20
37
|
|
21
|
-
# @return [Boolean]
|
22
|
-
def responsible?
|
23
|
-
configuration.enables_signature_help? &&
|
24
|
-
node.is_a?(Nodes::SendNode)
|
25
|
-
end
|
26
|
-
|
27
38
|
# @return [Array<Hash>]
|
28
39
|
def signature_informations
|
29
40
|
method_definitions.map do |method_definition|
|
@@ -33,36 +44,6 @@ module Rucoa
|
|
33
44
|
}
|
34
45
|
end
|
35
46
|
end
|
36
|
-
|
37
|
-
# @return [Array<Rucoa::Definitions::MethodDefinition>]
|
38
|
-
def method_definitions
|
39
|
-
NodeInspector.new(
|
40
|
-
definition_store: definition_store,
|
41
|
-
node: node
|
42
|
-
).method_definitions
|
43
|
-
end
|
44
|
-
|
45
|
-
# @return [Rucoa::Nodes::Base, nil]
|
46
|
-
def node
|
47
|
-
@node ||= source.node_at(position)
|
48
|
-
end
|
49
|
-
|
50
|
-
# @return [Rucoa::Position]
|
51
|
-
def position
|
52
|
-
Position.from_vscode_position(
|
53
|
-
request.dig('params', 'position')
|
54
|
-
)
|
55
|
-
end
|
56
|
-
|
57
|
-
# @return [Rucoa::Source]
|
58
|
-
def source
|
59
|
-
source_store.get(uri)
|
60
|
-
end
|
61
|
-
|
62
|
-
# @return [String]
|
63
|
-
def uri
|
64
|
-
request.dig('params', 'textDocument', 'uri')
|
65
|
-
end
|
66
47
|
end
|
67
48
|
end
|
68
49
|
end
|
data/lib/rucoa/handlers.rb
CHANGED
@@ -13,6 +13,7 @@ module Rucoa
|
|
13
13
|
autoload :TextDocumentDidChangeHandler, 'rucoa/handlers/text_document_did_change_handler'
|
14
14
|
autoload :TextDocumentDidCloseHandler, 'rucoa/handlers/text_document_did_close_handler'
|
15
15
|
autoload :TextDocumentDidOpenHandler, 'rucoa/handlers/text_document_did_open_handler'
|
16
|
+
autoload :TextDocumentDocumentHighlightHandler, 'rucoa/handlers/text_document_document_highlight_handler'
|
16
17
|
autoload :TextDocumentDocumentSymbolHandler, 'rucoa/handlers/text_document_document_symbol_handler'
|
17
18
|
autoload :TextDocumentFormattingHandler, 'rucoa/handlers/text_document_formatting_handler'
|
18
19
|
autoload :TextDocumentHoverHandler, 'rucoa/handlers/text_document_hover_handler'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rucoa
|
4
|
+
module NodeConcerns
|
5
|
+
module Modifier
|
6
|
+
# @return [Boolean]
|
7
|
+
# @example returns true on modifier if node
|
8
|
+
# node = Rucoa::Source.new(
|
9
|
+
# content: <<~RUBY,
|
10
|
+
# 1 if true
|
11
|
+
# RUBY
|
12
|
+
# uri: 'file:///path/to/example.rb'
|
13
|
+
# ).node_at(
|
14
|
+
# Rucoa::Position.new(
|
15
|
+
# column: 2,
|
16
|
+
# line: 1
|
17
|
+
# )
|
18
|
+
# )
|
19
|
+
# expect(node).to be_modifier
|
20
|
+
# @example returns false on non-modifier if node
|
21
|
+
# node = Rucoa::Source.new(
|
22
|
+
# content: <<~RUBY,
|
23
|
+
# if true
|
24
|
+
# 1
|
25
|
+
# end
|
26
|
+
# RUBY
|
27
|
+
# uri: 'file:///path/to/example.rb'
|
28
|
+
# ).root_node
|
29
|
+
# expect(node).not_to be_modifier
|
30
|
+
def modifier?
|
31
|
+
location.end.nil?
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -3,6 +3,11 @@
|
|
3
3
|
module Rucoa
|
4
4
|
module NodeConcerns
|
5
5
|
module QualifiedName
|
6
|
+
# @return [String]
|
7
|
+
def name
|
8
|
+
raise NotImplementedError
|
9
|
+
end
|
10
|
+
|
6
11
|
# @return [String]
|
7
12
|
def qualified_name
|
8
13
|
[
|
@@ -10,11 +15,6 @@ module Rucoa
|
|
10
15
|
*each_ancestor(:class, :constant, :module).map(&:name)
|
11
16
|
].reverse.join('::')
|
12
17
|
end
|
13
|
-
|
14
|
-
# @return [String]
|
15
|
-
def name
|
16
|
-
raise NotImplementedError
|
17
|
-
end
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rucoa
|
4
|
+
module NodeConcerns
|
5
|
+
module Rescue
|
6
|
+
# @return [Rucoa::Nodes::EnsureNode, nil]
|
7
|
+
def ensure
|
8
|
+
return unless body.is_a?(Nodes::EnsureNode)
|
9
|
+
|
10
|
+
body
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [Rucoa::Nodes::RescueNode, nil]
|
14
|
+
def rescue
|
15
|
+
return unless body.is_a?(Nodes::RescueNode)
|
16
|
+
|
17
|
+
body
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rucoa
|
4
|
+
module NodeConcerns
|
5
|
+
module Variable
|
6
|
+
# @return [String]
|
7
|
+
# @example returns variable name
|
8
|
+
# node = Rucoa::Source.new(
|
9
|
+
# content: <<~RUBY,
|
10
|
+
# foo = 1
|
11
|
+
# foo
|
12
|
+
# RUBY
|
13
|
+
# uri: 'file:///path/to/example.rb'
|
14
|
+
# ).node_at(
|
15
|
+
# Rucoa::Position.new(
|
16
|
+
# column: 0,
|
17
|
+
# line: 2
|
18
|
+
# )
|
19
|
+
# )
|
20
|
+
# expect(node.name).to eq('foo')
|
21
|
+
def name
|
22
|
+
children[0].to_s
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/rucoa/node_concerns.rb
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
module Rucoa
|
4
4
|
module NodeConcerns
|
5
5
|
autoload :Body, 'rucoa/node_concerns/body'
|
6
|
+
autoload :Modifier, 'rucoa/node_concerns/modifier'
|
6
7
|
autoload :QualifiedName, 'rucoa/node_concerns/qualified_name'
|
8
|
+
autoload :Rescue, 'rucoa/node_concerns/rescue'
|
9
|
+
autoload :Variable, 'rucoa/node_concerns/variable'
|
7
10
|
end
|
8
11
|
end
|
data/lib/rucoa/node_inspector.rb
CHANGED
@@ -103,11 +103,6 @@ module Rucoa
|
|
103
103
|
)
|
104
104
|
end
|
105
105
|
|
106
|
-
# @return [Boolean]
|
107
|
-
def singleton_method_call?
|
108
|
-
@node.is_a?(Nodes::ConstNode)
|
109
|
-
end
|
110
|
-
|
111
106
|
# @return [String, nil]
|
112
107
|
def nearest_def_qualified_name
|
113
108
|
@node.each_ancestor(:def).first&.qualified_name
|
@@ -147,5 +142,10 @@ module Rucoa
|
|
147
142
|
)&.return_types
|
148
143
|
end.compact
|
149
144
|
end
|
145
|
+
|
146
|
+
# @return [Boolean]
|
147
|
+
def singleton_method_call?
|
148
|
+
@node.is_a?(Nodes::ConstNode)
|
149
|
+
end
|
150
150
|
end
|
151
151
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rucoa
|
4
|
+
module Nodes
|
5
|
+
class ArgNode < Base
|
6
|
+
# @return [String]
|
7
|
+
# @example returns variable name
|
8
|
+
# node = Rucoa::Source.new(
|
9
|
+
# content: <<~RUBY,
|
10
|
+
# def foo(bar)
|
11
|
+
# end
|
12
|
+
# RUBY
|
13
|
+
# uri: 'file:///path/to/example.rb'
|
14
|
+
# ).node_at(
|
15
|
+
# Rucoa::Position.new(
|
16
|
+
# column: 8,
|
17
|
+
# line: 1
|
18
|
+
# )
|
19
|
+
# )
|
20
|
+
# expect(node.name).to eq('bar')
|
21
|
+
def name
|
22
|
+
children[0].to_s
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|