rucoa 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/Gemfile +1 -0
  4. data/Gemfile.lock +11 -2
  5. data/README.md +36 -5
  6. data/data/definitions_ruby_3_1 +0 -0
  7. data/images/diagnostics.gif +0 -0
  8. data/images/document-formatting.gif +0 -0
  9. data/images/document-symbol.gif +0 -0
  10. data/images/selection-ranges.gif +0 -0
  11. data/lib/rucoa/configuration.rb +58 -32
  12. data/lib/rucoa/definition_archiver.rb +29 -0
  13. data/lib/rucoa/definition_builders/rbs_constant_definition_builder.rb +44 -0
  14. data/lib/rucoa/definition_builders/rbs_method_definition_builder.rb +106 -0
  15. data/lib/rucoa/definition_builders/yard_method_definition_builder.rb +191 -0
  16. data/lib/rucoa/definition_builders.rb +9 -0
  17. data/lib/rucoa/definition_store.rb +63 -0
  18. data/lib/rucoa/definitions/base.rb +12 -0
  19. data/lib/rucoa/definitions/constant_definition.rb +51 -0
  20. data/lib/rucoa/definitions/method_definition.rb +126 -0
  21. data/lib/rucoa/definitions/method_parameter_definition.rb +30 -0
  22. data/lib/rucoa/definitions.rb +9 -0
  23. data/lib/rucoa/handlers/base.rb +8 -0
  24. data/lib/rucoa/handlers/exit_handler.rb +11 -0
  25. data/lib/rucoa/handlers/initialize_handler.rb +6 -0
  26. data/lib/rucoa/handlers/initialized_handler.rb +10 -0
  27. data/lib/rucoa/handlers/shutdown_handler.rb +12 -0
  28. data/lib/rucoa/handlers/text_document_did_change_handler.rb +1 -20
  29. data/lib/rucoa/handlers/text_document_did_open_handler.rb +11 -4
  30. data/lib/rucoa/handlers/text_document_document_symbol_handler.rb +1 -1
  31. data/lib/rucoa/handlers/text_document_range_formatting_handler.rb +1 -1
  32. data/lib/rucoa/handlers/text_document_signature_help_handler.rb +68 -0
  33. data/lib/rucoa/handlers.rb +3 -0
  34. data/lib/rucoa/node_inspector.rb +109 -0
  35. data/lib/rucoa/nodes/base.rb +30 -0
  36. data/lib/rucoa/nodes/def_node.rb +59 -0
  37. data/lib/rucoa/nodes/lvar_node.rb +25 -0
  38. data/lib/rucoa/nodes/send_node.rb +43 -0
  39. data/lib/rucoa/nodes.rb +1 -0
  40. data/lib/rucoa/parser_builder.rb +1 -0
  41. data/lib/rucoa/range.rb +64 -14
  42. data/lib/rucoa/rbs_document_loader.rb +43 -0
  43. data/lib/rucoa/rubocop_autocorrector.rb +1 -1
  44. data/lib/rucoa/rubocop_investigator.rb +1 -1
  45. data/lib/rucoa/server.rb +19 -1
  46. data/lib/rucoa/source.rb +54 -4
  47. data/lib/rucoa/source_store.rb +6 -10
  48. data/lib/rucoa/types/method_type.rb +23 -0
  49. data/lib/rucoa/types.rb +7 -0
  50. data/lib/rucoa/version.rb +1 -1
  51. data/lib/rucoa/yard_glob_document_loader.rb +47 -0
  52. data/lib/rucoa/yard_string_document_loader.rb +70 -0
  53. data/lib/rucoa.rb +9 -0
  54. data/rucoa.gemspec +1 -0
  55. metadata +42 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1656b3603d72a44829a30fd9bd0d0d876ab9daa3af05cad16ad78298fa6fce7d
4
- data.tar.gz: ff2fffdb7e90ed0f23cf782bc5c25db77dabb327c3e5b1d0a92aad8d2a5dc201
3
+ metadata.gz: '05869f9180ae7dbf00c359ad9d0b89fe3b126c8f9a6171b8b8155c7ad683f95f'
4
+ data.tar.gz: 429c84f3e305a90bcc1b7c39fbb14af894a95e24117c91d6914681ae8c53624c
5
5
  SHA512:
6
- metadata.gz: 49421faba6f35b3cf0bd33c12ae521cf55125fc8c8b044f5a4d353b4ee9413150b0ca4082884e786329b1cefa3cb5eb5ab513b9723e638cb9786ab768d2f8dd0
7
- data.tar.gz: 8ef7dfaf46a49d70eb9404558191aadb3e1778f761a4642c432b53c9e3b1f208ff57f64a5b43ec7aef527dc4b573baaed10f4d859043574e86452b0af60aecb4
6
+ metadata.gz: db443ae921e01609343392377664bf625bb4c2a057dc9d41ec1d611a7723807e6499d6669f097fb7d903b706110b6a34d83c09539612aba9d7b0e2fbd2302cf0
7
+ data.tar.gz: a6dabfb0fb1ac3228cb7217c9f9360fe6f32de32b65642492f00dbdc628d4578ed1c3a4f799c94c42ca8fe2553b3426c2105582569f9acd3e9971d68cc6722ec
data/.rubocop.yml CHANGED
@@ -29,6 +29,9 @@ RSpec/MultipleMemoizedHelpers:
29
29
  RSpec/NamedSubject:
30
30
  Enabled: false
31
31
 
32
+ Security/MarshalLoad:
33
+ Enabled: false
34
+
32
35
  Sevencop/HashLiteralOrder:
33
36
  Enabled: true
34
37
 
data/Gemfile CHANGED
@@ -11,3 +11,4 @@ gem 'rubocop-performance'
11
11
  gem 'rubocop-rake'
12
12
  gem 'rubocop-rspec'
13
13
  gem 'sevencop'
14
+ gem 'yardspec'
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rucoa (0.4.0)
4
+ rucoa (0.5.0)
5
5
  parser
6
+ rbs
6
7
  rubocop
7
8
 
8
9
  GEM
@@ -16,6 +17,7 @@ GEM
16
17
  ast (~> 2.4.1)
17
18
  rainbow (3.1.1)
18
19
  rake (13.0.6)
20
+ rbs (2.6.0)
19
21
  regexp_parser (2.5.0)
20
22
  rexml (3.2.5)
21
23
  rspec (3.11.0)
@@ -51,9 +53,15 @@ GEM
51
53
  rubocop-rspec (2.12.1)
52
54
  rubocop (~> 1.31)
53
55
  ruby-progressbar (1.11.0)
54
- sevencop (0.9.3)
56
+ sevencop (0.10.0)
55
57
  rubocop
56
58
  unicode-display_width (2.2.0)
59
+ webrick (1.7.0)
60
+ yard (0.9.28)
61
+ webrick (~> 1.7.0)
62
+ yardspec (0.2.0)
63
+ rspec
64
+ yard
57
65
 
58
66
  PLATFORMS
59
67
  x86_64-linux
@@ -67,6 +75,7 @@ DEPENDENCIES
67
75
  rubocop-rspec
68
76
  rucoa!
69
77
  sevencop
78
+ yardspec
70
79
 
71
80
  BUNDLED WITH
72
81
  2.3.21
data/README.md CHANGED
@@ -32,11 +32,42 @@ gem install rucoa
32
32
 
33
33
  ## Features
34
34
 
35
- - Diagnostics
36
- - Formatting
37
- - Quick Fix
38
- - Selection Range
39
- - Symbol
35
+ ### Diagnostics
36
+
37
+ Displays RuboCop offenses and provides Quick Fix action for autocorrection.
38
+
39
+ ![demo](images/diagnostics.gif)
40
+
41
+ ### Formatting
42
+
43
+ Run "Format Document" command or enable "Format On Save" in the settings to autocorrect RuboCop offenses.
44
+
45
+ ![demo](images/document-formatting.gif)
46
+
47
+ ### Selection
48
+
49
+ Run "Expand Selection" command to select appropriate ranges.
50
+
51
+ ![demo](images/selection-ranges.gif)
52
+
53
+ ### Symbol
54
+
55
+ See Outline section in the explorer panel to see document symbols in the current file, or run "Go to Symbol" command to search for symbols.
56
+
57
+ This extension supports the folowiing types of symbols:
58
+
59
+ - class
60
+ - module
61
+ - constant
62
+ - instance method
63
+ - singleton method (a.k.a. class method)
64
+ - attribute (attr_accessor, attr_reader, and attr_writer)
65
+
66
+ ![demo](images/document-symbol.gif)
67
+
68
+ ### Signature help (experimental)
69
+
70
+ Shows method signature help when you start to type method arguments like `"100".to_i(`.
40
71
 
41
72
  ### Coming soon
42
73
 
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -2,57 +2,68 @@
2
2
 
3
3
  module Rucoa
4
4
  class Configuration
5
- DEFAULT_SETTINGS = {
6
- 'base' => {
7
- 'enable' => 'auto',
8
- 'useBundler' => 'auto'
9
- },
10
- 'feature' => {
11
- 'codeAction' => {
12
- 'enable' => true
13
- },
14
- 'diagnostics' => {
15
- 'enable' => true
16
- },
17
- 'documentSymbol' => {
18
- 'enable' => true
19
- },
20
- 'formatting' => {
21
- 'enable' => true
22
- },
23
- 'selectionRange' => {
24
- 'enable' => true
25
- }
26
- }
27
- }.freeze
28
-
29
5
  def initialize
30
- reset
6
+ @settings = {}
7
+ end
8
+
9
+ # @return [Boolean]
10
+ def disable_code_action
11
+ disable('codeAction')
12
+ end
13
+
14
+ # @return [Boolean]
15
+ def disable_diagnostics
16
+ disable('diagnostics')
17
+ end
18
+
19
+ # @return [Boolean]
20
+ def disable_document_symbol
21
+ disable('documentSymbol')
22
+ end
23
+
24
+ # @return [Boolean]
25
+ def disable_formatting
26
+ disable('formatting')
27
+ end
28
+
29
+ # @return [Boolean]
30
+ def disable_selection_range
31
+ disable('selectionRange')
32
+ end
33
+
34
+ # @return [Boolean]
35
+ def disable_signature_help
36
+ disable('signatureHelp')
31
37
  end
32
38
 
33
39
  # @return [Boolean]
34
40
  def enables_code_action?
35
- @settings.dig('feature', 'codeAction', 'enable')
41
+ enables?('codeAction')
36
42
  end
37
43
 
38
44
  # @return [Boolean]
39
45
  def enables_diagnostics?
40
- @settings.dig('feature', 'diagnostics', 'enable')
46
+ enables?('diagnostics')
41
47
  end
42
48
 
43
49
  # @return [Boolean]
44
50
  def enables_document_symbol?
45
- @settings.dig('feature', 'documentSymbol', 'enable')
51
+ enables?('documentSymbol')
46
52
  end
47
53
 
48
54
  # @return [Boolean]
49
55
  def enables_formatting?
50
- @settings.dig('feature', 'formatting', 'enable')
56
+ enables?('formatting')
51
57
  end
52
58
 
53
59
  # @return [Boolean]
54
60
  def enables_selection_range?
55
- @settings.dig('feature', 'selectionRange', 'enable')
61
+ enables?('selectionRange')
62
+ end
63
+
64
+ # @return [Boolean]
65
+ def enables_signature_help?
66
+ enables?('signatureHelp')
56
67
  end
57
68
 
58
69
  # @param settings [Hash]
@@ -63,9 +74,24 @@ module Rucoa
63
74
 
64
75
  private
65
76
 
77
+ # @param feature [String]
66
78
  # @return [void]
67
- def reset
68
- @settings = DEFAULT_SETTINGS.dup
79
+ def disable(feature)
80
+ @settings ||= {}
81
+ @settings['feature'] ||= {}
82
+ @settings['feature'][feature] ||= {}
83
+ @settings['feature'][feature]['enable'] = false
84
+ end
85
+
86
+ # @param feature [String]
87
+ # @return [Boolean]
88
+ def enables?(feature)
89
+ value = @settings.dig('feature', feature, 'enable')
90
+ if value.nil?
91
+ true
92
+ else
93
+ value
94
+ end
69
95
  end
70
96
  end
71
97
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ module Rucoa
6
+ class DefinitionArchiver
7
+ RUBY_DEFINITIONS_DUMP_PATH = ::File.expand_path('../../data/definitions_ruby_3_1', __dir__).freeze
8
+ private_constant :RUBY_DEFINITIONS_DUMP_PATH
9
+
10
+ class << self
11
+ # @param definitions [Array<Rucoa::Definition::Base>]
12
+ # @return [void]
13
+ def dump(definitions)
14
+ pathname = ::Pathname.new(RUBY_DEFINITIONS_DUMP_PATH)
15
+ pathname.parent.mkpath
16
+ pathname.write(
17
+ ::Marshal.dump(definitions)
18
+ )
19
+ end
20
+
21
+ # @return [Array<Rucoa::Definition::Base>]
22
+ def load
23
+ ::Marshal.load(
24
+ ::File.binread(RUBY_DEFINITIONS_DUMP_PATH)
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rucoa
4
+ module DefinitionBuilders
5
+ # Build Rucoa contant definition from RBS constant declaration.
6
+ class RbsConstantDefinitionBuilder
7
+ class << self
8
+ # @param declaration [RBS::AST::Declarations::Constant]
9
+ # @return [Rucoa::Definitions::ConstantDefinition]
10
+ def call(declaration:)
11
+ new(
12
+ declaration: declaration
13
+ ).call
14
+ end
15
+ end
16
+
17
+ # @param declaration [RBS::AST::Declarations::Constant]
18
+ # @return [Rucoa::Definitions::ConstantDefinition]
19
+ def initialize(declaration:)
20
+ @declaration = declaration
21
+ end
22
+
23
+ # @return [Rucoa::Definitions::ConstantDefinition]
24
+ def call
25
+ ::Rucoa::Definitions::ConstantDefinition.new(
26
+ full_qualified_name: full_qualified_name,
27
+ source_path: source_path
28
+ )
29
+ end
30
+
31
+ private
32
+
33
+ # @return [String]
34
+ def full_qualified_name
35
+ @declaration.name.to_s.delete_prefix('::')
36
+ end
37
+
38
+ # @return [String]
39
+ def source_path
40
+ @declaration.location.name
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rbs'
4
+
5
+ module Rucoa
6
+ module DefinitionBuilders
7
+ # Build Rucoa method definition from RBS method definition.
8
+ class RbsMethodDefinitionBuilder
9
+ class << self
10
+ # @param declaration [RBS::AST::Declarations::Class, RBS::AST::Declarations::Module]
11
+ # @param method_definition [RBS::AST::Members::MethodDefinition]
12
+ # @return [Rucoa::Definitions::MethodDefinition]
13
+ def call(declaration:, method_definition:)
14
+ new(
15
+ declaration: declaration,
16
+ method_definition: method_definition
17
+ ).call
18
+ end
19
+ end
20
+
21
+ # @param declaration [RBS::AST::Declarations::Class, RBS::AST::Declarations::Module]
22
+ # @param method_definition [RBS::AST::Members::MethodDefinition]
23
+ def initialize(declaration:, method_definition:)
24
+ @declaration = declaration
25
+ @method_definition = method_definition
26
+ end
27
+
28
+ # @return [Rucoa::Definitions::MethodDefinition]
29
+ def call
30
+ Definitions::MethodDefinition.new(
31
+ description: description,
32
+ kind: kind,
33
+ method_name: method_name,
34
+ namespace: namespace,
35
+ source_path: source_path,
36
+ types: types
37
+ )
38
+ end
39
+
40
+ private
41
+
42
+ # @return [Array<Rucoa::Types::MethodType>]
43
+ def types
44
+ @method_definition.types.map do |method_type|
45
+ RbsMethodTypeToRucoaMethodTypeMapper.call(
46
+ method_type: method_type
47
+ )
48
+ end
49
+ end
50
+
51
+ # @return [String, nil]
52
+ def description
53
+ @method_definition.comment&.string&.sub(/\A\s*<!--.*-->\s*/m, '')
54
+ end
55
+
56
+ # @return [String]
57
+ def namespace
58
+ @declaration.name.to_s.delete_prefix('::')
59
+ end
60
+
61
+ # @return [String]
62
+ def method_name
63
+ @method_definition.name.to_s
64
+ end
65
+
66
+ # @return [Symbol]
67
+ def kind
68
+ @method_definition.kind
69
+ end
70
+
71
+ # @return [String]
72
+ def source_path
73
+ @declaration.location.name
74
+ end
75
+
76
+ class RbsMethodTypeToRucoaMethodTypeMapper
77
+ class << self
78
+ # @param method_type [RBS::Types::MethodType]
79
+ # @return [Rucoa::Types::MethodType]
80
+ def call(method_type:)
81
+ new(method_type: method_type).call
82
+ end
83
+
84
+ # @param type [RBS::Types::Base]
85
+ # @return [String]
86
+ def stringify(type)
87
+ type.to_s.delete_prefix('::')
88
+ end
89
+ end
90
+
91
+ # @param method_type [RBS::Types::MethodType]
92
+ def initialize(method_type:)
93
+ @method_type = method_type
94
+ end
95
+
96
+ # @return [Rucoa::Types::MethodType]
97
+ def call
98
+ Types::MethodType.new(
99
+ parameters_string: @method_type.type.param_to_s,
100
+ return_type: self.class.stringify(@method_type.type.return_type)
101
+ )
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,191 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yard'
4
+
5
+ module Rucoa
6
+ module DefinitionBuilders
7
+ class YardMethodDefinitionBuilder
8
+ class << self
9
+ # @param code_object [YARD::CodeObjects::MethodObject]
10
+ # @param path [String]
11
+ # @return [Rucoa::Definitions::Base]
12
+ def call(code_object:, path:)
13
+ new(
14
+ code_object: code_object,
15
+ path: path
16
+ ).call
17
+ end
18
+ end
19
+
20
+ # @param code_object [YARD::CodeObjects::Base]
21
+ # @param path [String]
22
+ def initialize(code_object:, path:)
23
+ @code_object = code_object
24
+ @path = path
25
+ end
26
+
27
+ # @return [Rucoa::Definitions::Base]
28
+ def call
29
+ ::Rucoa::Definitions::MethodDefinition.new(
30
+ description: description,
31
+ kind: kind,
32
+ method_name: method_name,
33
+ namespace: namespace,
34
+ source_path: @path,
35
+ types: types
36
+ )
37
+ end
38
+
39
+ private
40
+
41
+ # @return [String]
42
+ def description
43
+ @code_object.docstring.to_s
44
+ end
45
+
46
+ # @return [Symbol]
47
+ def kind
48
+ if @code_object.scope == :instance
49
+ :instance
50
+ else
51
+ :singleton
52
+ end
53
+ end
54
+
55
+ # @return [String
56
+ def method_name
57
+ @code_object.name
58
+ end
59
+
60
+ # @return [String]
61
+ def namespace
62
+ @code_object.namespace.to_s
63
+ end
64
+
65
+ # @return [Array<Rucoa::Types::MethodType>]
66
+ def types
67
+ return_types.map do |return_type|
68
+ ::Rucoa::Types::MethodType.new(
69
+ parameters_string: parameters_string,
70
+ return_type: return_type
71
+ )
72
+ end
73
+ end
74
+
75
+ # @return [String]
76
+ # @example
77
+ # definitions = Rucoa::YardStringDocumentLoader.call(
78
+ # content: <<~RUBY,
79
+ # class Foo
80
+ # def bar(
81
+ # argument1,
82
+ # argument2 = nil,
83
+ # *arguments,
84
+ # keyword1:,
85
+ # keyword2: nil,
86
+ # **keywords,
87
+ # &block
88
+ # )
89
+ # end
90
+ # end
91
+ # RUBY
92
+ # path: '/path/to/foo.rb'
93
+ # )
94
+ # expect(definitions.first.signatures).to eq(
95
+ # [
96
+ # 'Foo#bar(argument1, argument2 = nil, *arguments, keyword1:, keyword2: nil, **keywords, &block) -> Object'
97
+ # ]
98
+ # )
99
+ def parameters_string
100
+ @code_object.parameters.map do |parameter_name, default_value|
101
+ default_value_part =
102
+ if default_value.nil?
103
+ nil
104
+ elsif parameter_name.end_with?(':')
105
+ " #{default_value}"
106
+ else
107
+ " = #{default_value}"
108
+ end
109
+ [
110
+ parameter_name,
111
+ default_value_part
112
+ ].join
113
+ end.join(', ')
114
+ end
115
+
116
+ # @return [Array<Rucoa::Definitions::MethodParameterDefinition>]
117
+ def parameters
118
+ parameter_tags.map do |parameter_tag|
119
+ ::Rucoa::Definitions::MethodParameterDefinition.new(
120
+ name: parameter_tag.name,
121
+ types: parameter_tag.types
122
+ )
123
+ end
124
+ end
125
+
126
+ # @return [Array<YARD::Tags::Tag>]
127
+ def parameter_tags
128
+ @code_object.tags(:param) + @code_object.tags(:overload).flat_map do |overload_tag|
129
+ overload_tag.tags(:param)
130
+ end
131
+ end
132
+
133
+ # @return [Array<String>]
134
+ def return_types
135
+ return %w[Object] if return_tags.empty?
136
+
137
+ return_tags.flat_map(&:types).map do |type|
138
+ YardType.new(type).to_rucoa_type
139
+ end
140
+ end
141
+
142
+ # @return [YARD::Tags::Tag]
143
+ def return_tags
144
+ @code_object.tags(:return) + @code_object.tags(:overload).flat_map do |overload_tag|
145
+ overload_tag.tags(:return)
146
+ end
147
+ end
148
+
149
+ class YardType
150
+ # @param type [String]
151
+ def initialize(type)
152
+ @type = type
153
+ end
154
+
155
+ # @return [String]
156
+ # @example scrubs "Array<String>" to "Array"
157
+ # yard_type = Rucoa::DefinitionBuilders::YardMethodDefinitionBuilder::YardType.new(
158
+ # 'Array<String>'
159
+ # )
160
+ # expect(yard_type.to_rucoa_type).to eq('Array')
161
+ # @example scrubs "Array(String, Integer)" to "Array"
162
+ # yard_type = Rucoa::DefinitionBuilders::YardMethodDefinitionBuilder::YardType.new(
163
+ # 'Array(String, Integer)'
164
+ # )
165
+ # expect(yard_type.to_rucoa_type).to eq('Array')
166
+ # @example scrubs "::Array" to "Array"
167
+ # yard_type = Rucoa::DefinitionBuilders::YardMethodDefinitionBuilder::YardType.new(
168
+ # '::Array'
169
+ # )
170
+ # expect(yard_type.to_rucoa_type).to eq('Array')
171
+ # @example scrubs "Hash{Symbol => Object}" to "Hash"
172
+ # yard_type = Rucoa::DefinitionBuilders::YardMethodDefinitionBuilder::YardType.new(
173
+ # 'Hash{Symbol => Object}'
174
+ # )
175
+ # expect(yard_type.to_rucoa_type).to eq('Hash')
176
+ # @exampel scrubs "Array<Array<Integer>>" to "Array"
177
+ # yard_type = Rucoa::DefinitionBuilders::YardMethodDefinitionBuilder::YardType.new(
178
+ # 'Array<Array<Integer>>'
179
+ # )
180
+ # expect(yard_type.to_rucoa_type).to eq('Array')
181
+ def to_rucoa_type
182
+ @type
183
+ .delete_prefix('::')
184
+ .gsub(/<.+>/, '')
185
+ .gsub(/\{.+\}/, '')
186
+ .gsub(/\(.+\)/, '')
187
+ end
188
+ end
189
+ end
190
+ end
191
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rucoa
4
+ module DefinitionBuilders
5
+ autoload :RbsConstantDefinitionBuilder, 'rucoa/definition_builders/rbs_constant_definition_builder'
6
+ autoload :RbsMethodDefinitionBuilder, 'rucoa/definition_builders/rbs_method_definition_builder'
7
+ autoload :YardMethodDefinitionBuilder, 'rucoa/definition_builders/yard_method_definition_builder'
8
+ end
9
+ end