ruby_mod_kit 0.0.2 → 0.0.4

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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby_mod_kit.yml +5 -0
  3. data/lib/ruby_mod_kit/cli.rb +17 -2
  4. data/lib/ruby_mod_kit/config.rb +53 -0
  5. data/lib/ruby_mod_kit/core_ext/eval.rb +6 -0
  6. data/lib/ruby_mod_kit/core_ext/load.rb +12 -4
  7. data/lib/ruby_mod_kit/core_ext.rb +2 -2
  8. data/lib/ruby_mod_kit/corrector.rb +20 -0
  9. data/lib/ruby_mod_kit/corrector_manager.rb +64 -0
  10. data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb +40 -0
  11. data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rb +42 -0
  12. data/lib/ruby_mod_kit/feature/instance_variable_parameter.rb +27 -0
  13. data/lib/ruby_mod_kit/feature/overload/overload_mission.rb +77 -0
  14. data/lib/ruby_mod_kit/feature/overload.rb +19 -0
  15. data/lib/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rb +52 -0
  16. data/lib/ruby_mod_kit/feature/type/parameter_arrow_corrector.rb +84 -0
  17. data/lib/ruby_mod_kit/feature/type/rbs_inline/add_magic_comment_mission.rb +49 -0
  18. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rb +46 -0
  19. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rb +29 -0
  20. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rb +41 -0
  21. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rb +36 -0
  22. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rb +30 -0
  23. data/lib/ruby_mod_kit/feature/type/rbs_inline.rb +32 -0
  24. data/lib/ruby_mod_kit/feature/type/return_value_colon_corrector.rb +43 -0
  25. data/lib/ruby_mod_kit/feature/type/type_attr_mission.rb +69 -0
  26. data/lib/ruby_mod_kit/feature/type.rb +31 -0
  27. data/lib/ruby_mod_kit/feature.rb +18 -0
  28. data/lib/ruby_mod_kit/generation.rb +76 -29
  29. data/lib/ruby_mod_kit/memo/def_parent_memo.rb +36 -0
  30. data/lib/ruby_mod_kit/memo/{ivar.rb → ivar_memo.rb} +19 -3
  31. data/lib/ruby_mod_kit/memo/{method.rb → method_memo.rb} +7 -7
  32. data/lib/ruby_mod_kit/memo/offset_memo.rb +1 -1
  33. data/lib/ruby_mod_kit/memo/overload_memo.rb +47 -0
  34. data/lib/ruby_mod_kit/memo/{parameter.rb → parameter_memo.rb} +3 -3
  35. data/lib/ruby_mod_kit/memo.rb +7 -66
  36. data/lib/ruby_mod_kit/memo_pad.rb +72 -0
  37. data/lib/ruby_mod_kit/mission.rb +3 -25
  38. data/lib/ruby_mod_kit/node/base_node.rb +155 -0
  39. data/lib/ruby_mod_kit/node/call_node.rb +11 -7
  40. data/lib/ruby_mod_kit/node/def_node.rb +11 -7
  41. data/lib/ruby_mod_kit/node/def_parent_node.rb +25 -14
  42. data/lib/ruby_mod_kit/node/parameter_node.rb +13 -9
  43. data/lib/ruby_mod_kit/node/program_node.rb +8 -3
  44. data/lib/ruby_mod_kit/node/statements_node.rb +11 -7
  45. data/lib/ruby_mod_kit/node/symbol_node.rb +12 -7
  46. data/lib/ruby_mod_kit/node/untyped_node.rb +11 -7
  47. data/lib/ruby_mod_kit/node/wrap.rb +43 -0
  48. data/lib/ruby_mod_kit/node.rb +4 -150
  49. data/lib/ruby_mod_kit/version.rb +1 -1
  50. data/lib/ruby_mod_kit.rb +27 -8
  51. data/ruby_mod_kit.gemspec +7 -1
  52. data/sig/generated/ruby_mod_kit/cli.rbs +5 -0
  53. data/sig/generated/ruby_mod_kit/config.rbs +21 -0
  54. data/sig/generated/ruby_mod_kit/core_ext/eval.rbs +3 -0
  55. data/sig/generated/ruby_mod_kit/core_ext/load.rbs +7 -4
  56. data/sig/generated/ruby_mod_kit/corrector.rbs +14 -0
  57. data/sig/generated/ruby_mod_kit/corrector_manager.rbs +22 -0
  58. data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rbs +18 -0
  59. data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rbs +14 -0
  60. data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter.rbs +14 -0
  61. data/sig/generated/ruby_mod_kit/feature/overload/overload_mission.rbs +21 -0
  62. data/sig/generated/ruby_mod_kit/feature/overload.rbs +11 -0
  63. data/sig/generated/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rbs +24 -0
  64. data/sig/generated/ruby_mod_kit/feature/type/parameter_arrow_corrector.rbs +33 -0
  65. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/add_magic_comment_mission.rbs +21 -0
  66. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rbs +16 -0
  67. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rbs +16 -0
  68. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rbs +16 -0
  69. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rbs +16 -0
  70. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rbs +16 -0
  71. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline.rbs +13 -0
  72. data/sig/generated/ruby_mod_kit/feature/type/return_value_colon_corrector.rbs +18 -0
  73. data/sig/generated/ruby_mod_kit/feature/type/type_attr_mission.rbs +19 -0
  74. data/sig/generated/ruby_mod_kit/feature/type.rbs +14 -0
  75. data/sig/generated/ruby_mod_kit/feature.rbs +12 -0
  76. data/sig/generated/ruby_mod_kit/generation.rbs +44 -13
  77. data/sig/generated/ruby_mod_kit/memo/def_parent_memo.rbs +24 -0
  78. data/sig/generated/ruby_mod_kit/memo/{ivar.rbs → ivar_memo.rbs} +19 -3
  79. data/sig/generated/ruby_mod_kit/memo/{method.rbs → method_memo.rbs} +8 -8
  80. data/sig/generated/ruby_mod_kit/memo/offset_memo.rbs +1 -1
  81. data/sig/generated/ruby_mod_kit/memo/overload_memo.rbs +34 -0
  82. data/sig/generated/ruby_mod_kit/memo/{parameter.rbs → parameter_memo.rbs} +3 -3
  83. data/sig/generated/ruby_mod_kit/memo_pad.rbs +50 -0
  84. data/sig/generated/ruby_mod_kit/mission.rbs +2 -13
  85. data/sig/generated/ruby_mod_kit/node/base_node.rbs +75 -0
  86. data/sig/generated/ruby_mod_kit/node/call_node.rbs +11 -6
  87. data/sig/generated/ruby_mod_kit/node/def_node.rbs +11 -6
  88. data/sig/generated/ruby_mod_kit/node/def_parent_node.rbs +17 -10
  89. data/sig/generated/ruby_mod_kit/node/parameter_node.rbs +13 -8
  90. data/sig/generated/ruby_mod_kit/node/program_node.rbs +5 -2
  91. data/sig/generated/ruby_mod_kit/node/statements_node.rbs +11 -6
  92. data/sig/generated/ruby_mod_kit/node/symbol_node.rbs +13 -6
  93. data/sig/generated/ruby_mod_kit/node/untyped_node.rbs +11 -6
  94. data/sig/generated/ruby_mod_kit/node/wrap.rbs +12 -0
  95. data/sig/generated/ruby_mod_kit.rbs +10 -3
  96. data/sig/yaml.rbs +3 -0
  97. metadata +63 -30
  98. data/lib/ruby_mod_kit/memo/def_parent.rb +0 -27
  99. data/lib/ruby_mod_kit/mission/fix_parse_error.rb +0 -216
  100. data/lib/ruby_mod_kit/mission/ivar_arg.rb +0 -42
  101. data/lib/ruby_mod_kit/mission/overload.rb +0 -73
  102. data/lib/ruby_mod_kit/mission/type_attr.rb +0 -75
  103. data/lib/ruby_mod_kit/mission/type_parameter.rb +0 -39
  104. data/lib/ruby_mod_kit/mission/type_return.rb +0 -33
  105. data/lib/ruby_mod_kit/transpiler.rb +0 -20
  106. data/sig/generated/examples/user.rbs +0 -60
  107. data/sig/generated/ruby_mod_kit/memo/def_parent.rbs +0 -20
  108. data/sig/generated/ruby_mod_kit/memo/located.rbs +0 -14
  109. data/sig/generated/ruby_mod_kit/memo/parameter_type.rbs +0 -14
  110. data/sig/generated/ruby_mod_kit/memo.rbs +0 -41
  111. data/sig/generated/ruby_mod_kit/mission/fix_parse_error.rbs +0 -73
  112. data/sig/generated/ruby_mod_kit/mission/ivar_arg.rbs +0 -19
  113. data/sig/generated/ruby_mod_kit/mission/overload.rbs +0 -20
  114. data/sig/generated/ruby_mod_kit/mission/type_attr.rbs +0 -18
  115. data/sig/generated/ruby_mod_kit/mission/type_parameter.rbs +0 -18
  116. data/sig/generated/ruby_mod_kit/mission/type_return.rbs +0 -18
  117. data/sig/generated/ruby_mod_kit/node.rbs +0 -63
  118. data/sig/generated/ruby_mod_kit/transpiler.rbs +0 -11
@@ -3,21 +3,25 @@
3
3
  # rbs_inline: enabled
4
4
 
5
5
  module RubyModKit
6
- class Node
6
+ module Node
7
7
  # Transpiler program node
8
- class StatementsNode < Node
8
+ class StatementsNode < Node::BaseNode
9
9
  # @rbs @prism_node: Prism::StatementsNode
10
- # @rbs @parent: Node
10
+ # @rbs @parent: Node::BaseNode
11
+ # @rbs @prev: Node::BaseNode | nil
11
12
 
12
- attr_reader :prism_node #: Prism::StatementsNode
13
- attr_reader :parent #: Node
13
+ private attr_reader :prism_node #: Prism::StatementsNode
14
+ attr_reader :parent #: Node::BaseNode
15
+ attr_reader :prev #: Node::BaseNode | nil
14
16
 
15
17
  # @rbs prism_node: Prism::StatementsNode
16
- # @rbs parent: Node
18
+ # @rbs parent: Node::BaseNode
19
+ # @rbs prev: Node::BaseNode | nil
17
20
  # @rbs return: void
18
- def initialize(prism_node, parent:)
21
+ def initialize(prism_node, parent:, prev: nil)
19
22
  @prism_node = prism_node
20
23
  @parent = parent
24
+ @prev = prev
21
25
  raise RubyModKit::Error unless prism_node.is_a?(Prism::StatementsNode)
22
26
 
23
27
  super()
@@ -3,21 +3,26 @@
3
3
  # rbs_inline: enabled
4
4
 
5
5
  module RubyModKit
6
- class Node
6
+ module Node
7
7
  # Transpiler program node
8
- class SymbolNode < Node
8
+ class SymbolNode < Node::BaseNode
9
9
  # @rbs @prism_node: Prism::SymbolNode
10
- # @rbs @parent: Node
10
+ # @rbs @parent: Node::BaseNode
11
+ # @rbs @prev: Node::BaseNode | nil
12
+ # @rbs @value: nil | Symbol
11
13
 
12
- attr_reader :prism_node #: Prism::SymbolNode
13
- attr_reader :parent #: Node
14
+ private attr_reader :prism_node #: Prism::SymbolNode
15
+ attr_reader :parent #: Node::BaseNode
16
+ attr_reader :prev #: Node::BaseNode | nil
14
17
 
15
18
  # @rbs prism_node: Prism::SymbolNode
16
- # @rbs parent: Node
19
+ # @rbs parent: Node::BaseNode
20
+ # @rbs prev: Node::BaseNode | nil
17
21
  # @rbs return: void
18
- def initialize(prism_node, parent:)
22
+ def initialize(prism_node, parent:, prev: nil)
19
23
  @prism_node = prism_node
20
24
  @parent = parent
25
+ @prev = prev
21
26
  raise RubyModKit::Error unless prism_node.is_a?(Prism::SymbolNode)
22
27
 
23
28
  super()
@@ -3,21 +3,25 @@
3
3
  # rbs_inline: enabled
4
4
 
5
5
  module RubyModKit
6
- class Node
6
+ module Node
7
7
  # Transpiler program node
8
- class UntypedNode < Node
8
+ class UntypedNode < Node::BaseNode
9
9
  # @rbs @prism_node: Prism::Node
10
- # @rbs @parent: Node
10
+ # @rbs @parent: Node::BaseNode
11
+ # @rbs @prev: Node::BaseNode | nil
11
12
 
12
- attr_reader :prism_node #: Prism::Node
13
- attr_reader :parent #: Node
13
+ private attr_reader :prism_node #: Prism::Node
14
+ attr_reader :parent #: Node::BaseNode
15
+ attr_reader :prev #: Node::BaseNode | nil
14
16
 
15
17
  # @rbs prism_node: Prism::Node
16
- # @rbs parent: Node
18
+ # @rbs parent: Node::BaseNode
19
+ # @rbs prev: Node::BaseNode | nil
17
20
  # @rbs return: void
18
- def initialize(prism_node, parent:)
21
+ def initialize(prism_node, parent:, prev: nil)
19
22
  @prism_node = prism_node
20
23
  @parent = parent
24
+ @prev = prev
21
25
  super()
22
26
  end
23
27
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rbs_inline: enabled
4
+
5
+ require_relative "call_node"
6
+ require_relative "def_node"
7
+ require_relative "def_parent_node"
8
+ require_relative "parameter_node"
9
+ require_relative "statements_node"
10
+ require_relative "symbol_node"
11
+ require_relative "untyped_node"
12
+
13
+ module RubyModKit
14
+ # The namespace of transpile node.
15
+ module Node
16
+ class << self
17
+ # @rbs prism_node: Prism::Node
18
+ # @rbs parent: Node::BaseNode
19
+ # @rbs prev: Node::BaseNode | nil
20
+ # @rbs return: Node::BaseNode
21
+ def wrap(prism_node, parent:, prev: nil)
22
+ case prism_node
23
+ when Prism::CallNode
24
+ Node::CallNode.new(prism_node, parent: parent, prev: prev)
25
+ when Prism::DefNode
26
+ Node::DefNode.new(prism_node, parent: parent, prev: prev)
27
+ when Prism::ClassNode, Prism::ModuleNode
28
+ Node::DefParentNode.new(prism_node, parent: parent, prev: prev)
29
+ when Prism::RequiredParameterNode, Prism::OptionalKeywordParameterNode,
30
+ Prism::OptionalParameterNode, Prism::RequiredKeywordParameterNode,
31
+ Prism::RestParameterNode
32
+ Node::ParameterNode.new(prism_node, parent: parent, prev: prev)
33
+ when Prism::StatementsNode
34
+ Node::StatementsNode.new(prism_node, parent: parent, prev: prev)
35
+ when Prism::SymbolNode
36
+ Node::SymbolNode.new(prism_node, parent: parent, prev: prev)
37
+ else
38
+ Node::UntypedNode.new(prism_node, parent: parent, prev: prev)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,159 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rbs_inline: enabled
4
-
5
3
  module RubyModKit
6
- # The class of transpile node.
7
- class Node
8
- # @rbs @location: Prism::Location
9
- # @rbs @children: Array[Node]
10
- # @rbs @ancestors: Array[Node]
11
-
12
- attr_reader :location #: Prism::Location
13
-
14
- # @rbs return: void
15
- def initialize
16
- @location = prism_node.location
17
- end
18
-
19
- # @rbs return: Array[Node]
20
- def children
21
- return @children if @children
22
-
23
- @children = prism_node.child_nodes.compact.map do |prism_child_node|
24
- wrap(prism_child_node)
25
- end
26
- end
27
-
28
- # @rbs prism_node: Prism::Node
29
- # @rbs return: Node
30
- def wrap(prism_node)
31
- case prism_node
32
- when Prism::SymbolNode
33
- Node::SymbolNode.new(prism_node, parent: self)
34
- when Prism::ClassNode, Prism::ModuleNode
35
- Node::DefParentNode.new(prism_node, parent: self)
36
- when Prism::DefNode
37
- Node::DefNode.new(prism_node, parent: self)
38
- when Prism::RequiredParameterNode, Prism::OptionalKeywordParameterNode,
39
- Prism::OptionalParameterNode, Prism::RequiredKeywordParameterNode,
40
- Prism::RestParameterNode
41
- Node::ParameterNode.new(prism_node, parent: self)
42
- when Prism::StatementsNode
43
- Node::StatementsNode.new(prism_node, parent: self)
44
- when Prism::CallNode
45
- Node::CallNode.new(prism_node, parent: self)
46
- else
47
- Node::UntypedNode.new(prism_node, parent: self)
48
- end
49
- end
50
-
51
- # @rbs return: Array[Node]
52
- def ancestors
53
- return @ancestors if @ancestors
54
-
55
- parent = @parent
56
- @ancestors = if parent
57
- [parent] + parent.ancestors
58
- else
59
- []
60
- end
61
- end
62
-
63
- # @rbs return: Symbol
64
- def name
65
- raise(RubyModKit::Error, "Expected ParameterNode but #{self.class}:#{prism_node.inspect}")
66
- end
67
-
68
- # @rbs offset: Integer
69
- # @rbs return: Node | nil
70
- def node_at(offset)
71
- return nil unless include?(offset)
72
-
73
- child = children.find { _1.include?(offset) }
74
- child&.node_at(offset) || self
75
- end
76
-
77
- # @rbs offset: Integer
78
- # @rbs return: Node::StatementsNode | nil
79
- def statements_node_at(offset)
80
- node = node_at(offset) || return
81
- [node, *node.ancestors].each { return _1 if _1.is_a?(Node::StatementsNode) }
82
- nil
83
- end
84
-
85
- # @rbs offset: Integer
86
- # @rbs return: Node::DefNode | nil
87
- def def_node_at(offset)
88
- node = node_at(offset) || return
89
- [node, *node.ancestors].each { return _1 if _1.is_a?(Node::DefNode) }
90
- nil
91
- end
92
-
93
- # @rbs offset: Integer
94
- # @rbs return: Node::ParameterNode | nil
95
- def parameter_node_at(offset)
96
- node = node_at(offset) || return
97
- [node, *node.ancestors].each { return _1 if _1.is_a?(Node::ParameterNode) }
98
- nil
99
- end
100
-
101
- # @rbs offset: Integer
102
- # @rbs return: Node::DefParentNode | nil
103
- def def_parent_node_at(offset)
104
- node = node_at(offset) || return
105
- [node, *node.ancestors].each { return _1 if _1.is_a?(Node::DefParentNode) }
106
- nil
107
- end
108
-
109
- # @rbs offset: Integer
110
- # @rbs return: bool
111
- def include?(offset)
112
- self.offset <= offset && offset <= prism_node.location.end_offset
113
- end
114
-
115
- # @rbs return: Prism::Node & Prism::_Node
116
- def prism_node
117
- raise RubyModKit::Error
118
- end
119
-
120
- # @rbs return: Integer
121
- def offset
122
- location.start_offset
123
- end
124
-
125
- # @rbs return: String
126
- def inspect
127
- str = +"#<#{self.class} "
128
- first = true
129
- instance_variables.each do |ivar_name|
130
- case ivar_name
131
- when :@children, :@ancestors, :@parent
132
- next
133
- end
134
-
135
- if first
136
- first = false
137
- else
138
- str << ", "
139
- end
140
- str << "#{ivar_name}="
141
- value = instance_variable_get(ivar_name)
142
- str << (
143
- case value
144
- when Prism::Node
145
- "#<#{value.class} location=#{value.location.inspect}>"
146
- else
147
- value.inspect
148
- end
149
- )
150
- end
151
- str << ">"
152
- str
153
- end
4
+ # The namespace of transpile node.
5
+ module Node
154
6
  end
155
7
  end
156
8
 
9
+ require_relative "node/base_node"
157
10
  require_relative "node/symbol_node"
158
11
  require_relative "node/def_parent_node"
159
12
  require_relative "node/call_node"
@@ -162,3 +15,4 @@ require_relative "node/parameter_node"
162
15
  require_relative "node/program_node"
163
16
  require_relative "node/statements_node"
164
17
  require_relative "node/untyped_node"
18
+ require_relative "node/wrap"
@@ -3,5 +3,5 @@
3
3
  # rbs_inline: enabled
4
4
 
5
5
  module RubyModKit
6
- VERSION = "0.0.2" #: String
6
+ VERSION = "0.0.4" #: String
7
7
  end
data/lib/ruby_mod_kit.rb CHANGED
@@ -14,9 +14,10 @@ module RubyModKit
14
14
  # @rbs file: String
15
15
  # @rbs *args: String
16
16
  # @rbs output: String | nil
17
+ # @rbs config: nil | Config
17
18
  # @rbs return: void
18
- def execute_file(file, *args, output: nil)
19
- rb_script = transpile_file(file, output: output)
19
+ def execute_file(file, *args, output: nil, config: nil)
20
+ rb_script = transpile_file(file, output: output, config: config)
20
21
  if output
21
22
  execute_rb_file(output, *args)
22
23
  else
@@ -26,9 +27,10 @@ module RubyModKit
26
27
 
27
28
  # @rbs file: String
28
29
  # @rbs output: String | IO | nil
30
+ # @rbs config: nil | Config
29
31
  # @rbs return: String
30
- def transpile_file(file, output: nil)
31
- rb_script = transpile(File.read(file), filename: file)
32
+ def transpile_file(file, output: nil, config: nil)
33
+ rb_script = transpile(File.read(file), filename: file, config: config)
32
34
  case output
33
35
  when IO
34
36
  output.write(rb_script)
@@ -40,9 +42,10 @@ module RubyModKit
40
42
 
41
43
  # @rbs src: String
42
44
  # @rbs filename: String | nil
45
+ # @rbs config: nil | Config
43
46
  # @rbs return: String
44
- def transpile(src, filename: nil)
45
- Transpiler.new.transpile(src, filename: filename)
47
+ def transpile(src, filename: nil, config: nil)
48
+ Generation.resolve(src, filename: filename, config: config).script
46
49
  end
47
50
 
48
51
  # @rbs file: String
@@ -65,13 +68,29 @@ module RubyModKit
65
68
  ARGV.replace(args)
66
69
  eval(rb_script, TOPLEVEL_BINDING) # rubocop:disable Security/Eval
67
70
  end
71
+
72
+ # @rbs type: String
73
+ # @rbs return: String
74
+ def unify_type(type)
75
+ type[/\A\(([^()]*)\)\z/, 1] || type
76
+ end
68
77
  end
69
78
  end
70
79
 
71
80
  require_relative "ruby_mod_kit/version"
72
- require_relative "ruby_mod_kit/transpiler"
81
+
82
+ require_relative "ruby_mod_kit/config"
83
+ require_relative "ruby_mod_kit/corrector"
84
+ require_relative "ruby_mod_kit/corrector_manager"
85
+ require_relative "ruby_mod_kit/feature"
73
86
  require_relative "ruby_mod_kit/generation"
74
87
  require_relative "ruby_mod_kit/memo"
75
- require_relative "ruby_mod_kit/node"
88
+ require_relative "ruby_mod_kit/memo_pad"
76
89
  require_relative "ruby_mod_kit/mission"
90
+ require_relative "ruby_mod_kit/node"
77
91
  require_relative "ruby_mod_kit/offset_diff"
92
+
93
+ require_relative "ruby_mod_kit/feature/instance_variable_parameter"
94
+ require_relative "ruby_mod_kit/feature/overload"
95
+ require_relative "ruby_mod_kit/feature/type"
96
+ require_relative "ruby_mod_kit/feature/type/rbs_inline"
data/ruby_mod_kit.gemspec CHANGED
@@ -26,7 +26,13 @@ Gem::Specification.new do |spec|
26
26
  `git ls-files -z`.split("\x0").reject do |f|
27
27
  next true if File.expand_path(f) == __FILE__
28
28
  next false if f =~ %r{\Aexamples/.*rbm?\z}
29
- next true if f.start_with?(*%w[bin/ test/ spec/ features/ coverage/ bin/ .git])
29
+ next true if f.start_with?(
30
+ *%w[
31
+ bin/ test/ spec/ features/ coverage/ bin/ .git
32
+ lib/internal/ sig/generated/internal/
33
+ sig/rubocop
34
+ ],
35
+ )
30
36
  next true if %w[Gemfile Gemfile.lock .rspec .rubocop.yml Rakefile Steepfile].include?(f)
31
37
  next true if f.end_with?(".rbm")
32
38
 
@@ -10,5 +10,10 @@ module RubyModKit
10
10
  # @rbs *args: String
11
11
  # @rbs return: void
12
12
  def transpile: (*String args) -> void
13
+
14
+ private
15
+
16
+ # @rbs return: Config | nil
17
+ def config: () -> (Config | nil)
13
18
  end
14
19
  end
@@ -0,0 +1,21 @@
1
+ # Generated from lib/ruby_mod_kit/config.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ # config class
5
+ class Config
6
+ @features: Array[Config]
7
+
8
+ attr_reader features: Array[Config]
9
+
10
+ DEFAULT_FEATURES: Array[String]
11
+
12
+ # @rbs features: Array[String]
13
+ # @rbs return: void
14
+ def initialize: (?features: Array[String]) -> void
15
+
16
+ # @rbs path: String
17
+ # @rbs if_none: nil | Symbol
18
+ # @rbs return: Config | nil
19
+ def self.load: (String path, ?if_none: nil | Symbol) -> (Config | nil)
20
+ end
21
+ end
@@ -1,5 +1,6 @@
1
1
  # Generated from lib/ruby_mod_kit/core_ext/eval.rb with RBS::Inline
2
2
 
3
+ # Define RubyMotKit.eval
3
4
  module RubyModKit
4
5
  module CoreExt
5
6
  # the extension for eval
@@ -11,4 +12,6 @@ module RubyModKit
11
12
  def self?.eval: (String expr, *Object rest, ?transpile: bool) -> Object
12
13
  end
13
14
  end
15
+
16
+ include CoreExt::Eval
14
17
  end
@@ -1,5 +1,6 @@
1
1
  # Generated from lib/ruby_mod_kit/core_ext/load.rb with RBS::Inline
2
2
 
3
+ # Define RubyMotKit.load/require
3
4
  module RubyModKit
4
5
  module CoreExt
5
6
  # the extension for load/require
@@ -8,12 +9,12 @@ module RubyModKit
8
9
 
9
10
  # @rbs path: String
10
11
  # @rbs wrap: bool
11
- # @rbs return: void
12
- def self?.load: (String path, ?bool wrap) -> void
12
+ # @rbs return: bool
13
+ def self?.load: (String path, ?bool wrap) -> bool
13
14
 
14
15
  # @rbs path: String
15
- # @rbs return: void
16
- def self?.require: (String path) -> void
16
+ # @rbs return: bool
17
+ def self?.require: (String path) -> bool
17
18
 
18
19
  # @rbs return: Array[String]
19
20
  def self.loaded_features: () -> Array[String]
@@ -27,4 +28,6 @@ module RubyModKit
27
28
  def self.require_path: (String path, ?expanded: bool) -> (String | nil)
28
29
  end
29
30
  end
31
+
32
+ include CoreExt::Load
30
33
  end
@@ -0,0 +1,14 @@
1
+ # Generated from lib/ruby_mod_kit/corrector.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ # the base class of corrector
5
+ class Corrector
6
+ # @rbs return: Array[Symbol]
7
+ def correctable_error_types: () -> Array[Symbol]
8
+
9
+ # @rbs _parse_error: Prism::ParseError
10
+ # @rbs _generation: Generation
11
+ # @rbs return: void
12
+ def correct: (untyped _parse_error, untyped _generation) -> void
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ # Generated from lib/ruby_mod_kit/corrector_manager.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ # the class to manege parse error correctors
5
+ class CorrectorManager
6
+ @previous_error_messages: Array[String]
7
+
8
+ @correctors_error_map: Hash[Symbol, Array[Corrector]]
9
+
10
+ # @rbs features: Array[Feature]
11
+ # @rbs return: void
12
+ def initialize: (Array[Feature] features) -> void
13
+
14
+ # @rbs generation: Generation
15
+ # @rbs return: bool
16
+ def perform: (Generation generation) -> bool
17
+
18
+ # @rbs generation: Generation
19
+ # @rbs return: void
20
+ def check_prev_errors: (Generation generation) -> void
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ # Generated from lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ class Feature
5
+ class InstanceVariableParameter
6
+ # the class to correct `def foo(@bar) ...` -> `def foo(bar) ...`
7
+ class InstanceVariableParameterCorrector < Corrector
8
+ # @rbs return: Array[Symbol]
9
+ def correctable_error_types: () -> Array[Symbol]
10
+
11
+ # @rbs parse_error: Prism::ParseError
12
+ # @rbs generation: Generation
13
+ # @rbs return: void
14
+ def correct: (Prism::ParseError parse_error, Generation generation) -> void
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ # Generated from lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ class Feature
5
+ class InstanceVariableParameter
6
+ # The mission for instance variable arguments
7
+ class InstanceVariableParameterMission < Mission
8
+ # @rbs generation: Generation
9
+ # @rbs return: bool
10
+ def perform: (Generation generation) -> bool
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # Generated from lib/ruby_mod_kit/feature/instance_variable_parameter.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ class Feature
5
+ # namespace for instance_variable parameter feature
6
+ class InstanceVariableParameter < Feature
7
+ # @rbs return: Array[Corrector]
8
+ def create_correctors: () -> Array[Corrector]
9
+
10
+ # @rbs return: Array[Mission]
11
+ def create_missions: () -> Array[Mission]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ # Generated from lib/ruby_mod_kit/feature/overload/overload_mission.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ class Feature
5
+ class Overload
6
+ # The mission for overload
7
+ class OverloadMission < Mission
8
+ @modified: bool
9
+
10
+ OVERLOAD_METHOD_MAP: Hash[Symbol, String]
11
+
12
+ # @rbs return: void
13
+ def initialize: () -> void
14
+
15
+ # @rbs generation: Generation
16
+ # @rbs return: bool
17
+ def perform: (Generation generation) -> bool
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ # Generated from lib/ruby_mod_kit/feature/overload.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ class Feature
5
+ # namespace for overload feature
6
+ class Overload < Feature
7
+ # @rbs return: Array[Mission]
8
+ def create_missions: () -> Array[Mission]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ # Generated from lib/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ class Feature
5
+ class Type
6
+ # the class to correct `@var: Type` -> `# @rbs @var: Type`
7
+ class InstanceVariableColonCorrector < Corrector
8
+ VISIBILITIES: Array[Symbol]
9
+
10
+ ATTR_PATTERNS: Array[Symbol]
11
+
12
+ REGEXP: Regexp
13
+
14
+ # @rbs return: Array[Symbol]
15
+ def correctable_error_types: () -> Array[Symbol]
16
+
17
+ # @rbs parse_error: Prism::ParseError
18
+ # @rbs generation: Generation
19
+ # @rbs return: void
20
+ def correct: (Prism::ParseError parse_error, Generation generation) -> void
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ # Generated from lib/ruby_mod_kit/feature/type/parameter_arrow_corrector.rb with RBS::Inline
2
+
3
+ module RubyModKit
4
+ class Feature
5
+ class Type
6
+ # the class to correct `def foo(Bar => bar, *Buz => buz)` -> `def foo(bar, *buz)`
7
+ class ParameterArrowCorrector < Corrector
8
+ # @rbs return: Array[Symbol]
9
+ def correctable_error_types: () -> Array[Symbol]
10
+
11
+ # @rbs parse_error: Prism::ParseError
12
+ # @rbs generation: Generation
13
+ # @rbs return: void
14
+ def correct: (Prism::ParseError parse_error, Generation generation) -> void
15
+
16
+ # @rbs parse_error: Prism::ParseError
17
+ # @rbs generation: Generation
18
+ # @rbs return: void
19
+ def remove_arrow_before_parameter: (Prism::ParseError parse_error, Generation generation) -> void
20
+
21
+ # @rbs parse_error: Prism::ParseError
22
+ # @rbs generation: Generation
23
+ # @rbs return: void
24
+ def remove_arrow_after_quailifier: (Prism::ParseError parse_error, Generation generation) -> void
25
+
26
+ # @rbs parse_error: Prism::ParseError
27
+ # @rbs generation: Generation
28
+ # @rbs return: void
29
+ def wrap_parameter_type_for_next_parse: (Prism::ParseError parse_error, Generation generation) -> void
30
+ end
31
+ end
32
+ end
33
+ end