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.
- checksums.yaml +4 -4
- data/.ruby_mod_kit.yml +5 -0
- data/lib/ruby_mod_kit/cli.rb +17 -2
- data/lib/ruby_mod_kit/config.rb +53 -0
- data/lib/ruby_mod_kit/core_ext/eval.rb +6 -0
- data/lib/ruby_mod_kit/core_ext/load.rb +12 -4
- data/lib/ruby_mod_kit/core_ext.rb +2 -2
- data/lib/ruby_mod_kit/corrector.rb +20 -0
- data/lib/ruby_mod_kit/corrector_manager.rb +64 -0
- data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb +40 -0
- data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rb +42 -0
- data/lib/ruby_mod_kit/feature/instance_variable_parameter.rb +27 -0
- data/lib/ruby_mod_kit/feature/overload/overload_mission.rb +77 -0
- data/lib/ruby_mod_kit/feature/overload.rb +19 -0
- data/lib/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rb +52 -0
- data/lib/ruby_mod_kit/feature/type/parameter_arrow_corrector.rb +84 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/add_magic_comment_mission.rb +49 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rb +46 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rb +29 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rb +41 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rb +36 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rb +30 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline.rb +32 -0
- data/lib/ruby_mod_kit/feature/type/return_value_colon_corrector.rb +43 -0
- data/lib/ruby_mod_kit/feature/type/type_attr_mission.rb +69 -0
- data/lib/ruby_mod_kit/feature/type.rb +31 -0
- data/lib/ruby_mod_kit/feature.rb +18 -0
- data/lib/ruby_mod_kit/generation.rb +76 -29
- data/lib/ruby_mod_kit/memo/def_parent_memo.rb +36 -0
- data/lib/ruby_mod_kit/memo/{ivar.rb → ivar_memo.rb} +19 -3
- data/lib/ruby_mod_kit/memo/{method.rb → method_memo.rb} +7 -7
- data/lib/ruby_mod_kit/memo/offset_memo.rb +1 -1
- data/lib/ruby_mod_kit/memo/overload_memo.rb +47 -0
- data/lib/ruby_mod_kit/memo/{parameter.rb → parameter_memo.rb} +3 -3
- data/lib/ruby_mod_kit/memo.rb +7 -66
- data/lib/ruby_mod_kit/memo_pad.rb +72 -0
- data/lib/ruby_mod_kit/mission.rb +3 -25
- data/lib/ruby_mod_kit/node/base_node.rb +155 -0
- data/lib/ruby_mod_kit/node/call_node.rb +11 -7
- data/lib/ruby_mod_kit/node/def_node.rb +11 -7
- data/lib/ruby_mod_kit/node/def_parent_node.rb +25 -14
- data/lib/ruby_mod_kit/node/parameter_node.rb +13 -9
- data/lib/ruby_mod_kit/node/program_node.rb +8 -3
- data/lib/ruby_mod_kit/node/statements_node.rb +11 -7
- data/lib/ruby_mod_kit/node/symbol_node.rb +12 -7
- data/lib/ruby_mod_kit/node/untyped_node.rb +11 -7
- data/lib/ruby_mod_kit/node/wrap.rb +43 -0
- data/lib/ruby_mod_kit/node.rb +4 -150
- data/lib/ruby_mod_kit/version.rb +1 -1
- data/lib/ruby_mod_kit.rb +27 -8
- data/ruby_mod_kit.gemspec +7 -1
- data/sig/generated/ruby_mod_kit/cli.rbs +5 -0
- data/sig/generated/ruby_mod_kit/config.rbs +21 -0
- data/sig/generated/ruby_mod_kit/core_ext/eval.rbs +3 -0
- data/sig/generated/ruby_mod_kit/core_ext/load.rbs +7 -4
- data/sig/generated/ruby_mod_kit/corrector.rbs +14 -0
- data/sig/generated/ruby_mod_kit/corrector_manager.rbs +22 -0
- data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rbs +18 -0
- data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rbs +14 -0
- data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter.rbs +14 -0
- data/sig/generated/ruby_mod_kit/feature/overload/overload_mission.rbs +21 -0
- data/sig/generated/ruby_mod_kit/feature/overload.rbs +11 -0
- data/sig/generated/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rbs +24 -0
- data/sig/generated/ruby_mod_kit/feature/type/parameter_arrow_corrector.rbs +33 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/add_magic_comment_mission.rbs +21 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rbs +16 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rbs +16 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rbs +16 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rbs +16 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rbs +16 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline.rbs +13 -0
- data/sig/generated/ruby_mod_kit/feature/type/return_value_colon_corrector.rbs +18 -0
- data/sig/generated/ruby_mod_kit/feature/type/type_attr_mission.rbs +19 -0
- data/sig/generated/ruby_mod_kit/feature/type.rbs +14 -0
- data/sig/generated/ruby_mod_kit/feature.rbs +12 -0
- data/sig/generated/ruby_mod_kit/generation.rbs +44 -13
- data/sig/generated/ruby_mod_kit/memo/def_parent_memo.rbs +24 -0
- data/sig/generated/ruby_mod_kit/memo/{ivar.rbs → ivar_memo.rbs} +19 -3
- data/sig/generated/ruby_mod_kit/memo/{method.rbs → method_memo.rbs} +8 -8
- data/sig/generated/ruby_mod_kit/memo/offset_memo.rbs +1 -1
- data/sig/generated/ruby_mod_kit/memo/overload_memo.rbs +34 -0
- data/sig/generated/ruby_mod_kit/memo/{parameter.rbs → parameter_memo.rbs} +3 -3
- data/sig/generated/ruby_mod_kit/memo_pad.rbs +50 -0
- data/sig/generated/ruby_mod_kit/mission.rbs +2 -13
- data/sig/generated/ruby_mod_kit/node/base_node.rbs +75 -0
- data/sig/generated/ruby_mod_kit/node/call_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/def_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/def_parent_node.rbs +17 -10
- data/sig/generated/ruby_mod_kit/node/parameter_node.rbs +13 -8
- data/sig/generated/ruby_mod_kit/node/program_node.rbs +5 -2
- data/sig/generated/ruby_mod_kit/node/statements_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/symbol_node.rbs +13 -6
- data/sig/generated/ruby_mod_kit/node/untyped_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/wrap.rbs +12 -0
- data/sig/generated/ruby_mod_kit.rbs +10 -3
- data/sig/yaml.rbs +3 -0
- metadata +63 -30
- data/lib/ruby_mod_kit/memo/def_parent.rb +0 -27
- data/lib/ruby_mod_kit/mission/fix_parse_error.rb +0 -216
- data/lib/ruby_mod_kit/mission/ivar_arg.rb +0 -42
- data/lib/ruby_mod_kit/mission/overload.rb +0 -73
- data/lib/ruby_mod_kit/mission/type_attr.rb +0 -75
- data/lib/ruby_mod_kit/mission/type_parameter.rb +0 -39
- data/lib/ruby_mod_kit/mission/type_return.rb +0 -33
- data/lib/ruby_mod_kit/transpiler.rb +0 -20
- data/sig/generated/examples/user.rbs +0 -60
- data/sig/generated/ruby_mod_kit/memo/def_parent.rbs +0 -20
- data/sig/generated/ruby_mod_kit/memo/located.rbs +0 -14
- data/sig/generated/ruby_mod_kit/memo/parameter_type.rbs +0 -14
- data/sig/generated/ruby_mod_kit/memo.rbs +0 -41
- data/sig/generated/ruby_mod_kit/mission/fix_parse_error.rbs +0 -73
- data/sig/generated/ruby_mod_kit/mission/ivar_arg.rbs +0 -19
- data/sig/generated/ruby_mod_kit/mission/overload.rbs +0 -20
- data/sig/generated/ruby_mod_kit/mission/type_attr.rbs +0 -18
- data/sig/generated/ruby_mod_kit/mission/type_parameter.rbs +0 -18
- data/sig/generated/ruby_mod_kit/mission/type_return.rbs +0 -18
- data/sig/generated/ruby_mod_kit/node.rbs +0 -63
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
data/lib/ruby_mod_kit/node.rb
CHANGED
|
@@ -1,159 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# rbs_inline: enabled
|
|
4
|
-
|
|
5
3
|
module RubyModKit
|
|
6
|
-
# The
|
|
7
|
-
|
|
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"
|
data/lib/ruby_mod_kit/version.rb
CHANGED
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
|
-
|
|
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
|
-
|
|
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/
|
|
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?(
|
|
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
|
|
|
@@ -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:
|
|
12
|
-
def self?.load: (String path, ?bool wrap) ->
|
|
12
|
+
# @rbs return: bool
|
|
13
|
+
def self?.load: (String path, ?bool wrap) -> bool
|
|
13
14
|
|
|
14
15
|
# @rbs path: String
|
|
15
|
-
# @rbs return:
|
|
16
|
-
def self?.require: (String path) ->
|
|
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
|