ruby_mod_kit 0.0.3 → 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/corrector.rb +1 -3
- data/lib/ruby_mod_kit/corrector_manager.rb +11 -15
- data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb +5 -7
- data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rb +4 -11
- data/lib/ruby_mod_kit/feature/overload/overload_mission.rb +8 -11
- data/lib/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rb +13 -10
- data/lib/ruby_mod_kit/feature/type/parameter_arrow_corrector.rb +9 -15
- 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 +12 -7
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rb +5 -7
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rb +6 -8
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rb +6 -8
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rb +5 -7
- data/lib/ruby_mod_kit/feature/type/rbs_inline.rb +3 -0
- data/lib/ruby_mod_kit/feature/type/return_value_colon_corrector.rb +4 -6
- data/lib/ruby_mod_kit/feature/type/type_attr_mission.rb +10 -8
- data/lib/ruby_mod_kit/feature.rb +0 -6
- data/lib/ruby_mod_kit/generation.rb +29 -20
- data/lib/ruby_mod_kit/memo/ivar_memo.rb +2 -0
- data/lib/ruby_mod_kit/memo/overload_memo.rb +1 -0
- data/lib/ruby_mod_kit/memo.rb +0 -2
- data/lib/ruby_mod_kit/memo_pad.rb +3 -0
- data/lib/ruby_mod_kit/mission.rb +1 -4
- data/lib/ruby_mod_kit/node/base_node.rb +28 -10
- data/lib/ruby_mod_kit/node/call_node.rb +1 -1
- data/lib/ruby_mod_kit/node/def_node.rb +1 -1
- data/lib/ruby_mod_kit/node/def_parent_node.rb +13 -6
- data/lib/ruby_mod_kit/node/parameter_node.rb +1 -1
- data/lib/ruby_mod_kit/node/program_node.rb +6 -1
- data/lib/ruby_mod_kit/node/statements_node.rb +1 -1
- data/lib/ruby_mod_kit/node/symbol_node.rb +2 -1
- data/lib/ruby_mod_kit/node/untyped_node.rb +1 -1
- data/lib/ruby_mod_kit/node.rb +0 -2
- data/lib/ruby_mod_kit/version.rb +1 -1
- data/lib/ruby_mod_kit.rb +11 -6
- 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/corrector.rbs +1 -3
- data/sig/generated/ruby_mod_kit/corrector_manager.rbs +2 -6
- data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rbs +1 -3
- data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rbs +1 -8
- data/sig/generated/ruby_mod_kit/feature/overload/overload_mission.rbs +1 -4
- data/sig/generated/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rbs +7 -3
- data/sig/generated/ruby_mod_kit/feature/type/parameter_arrow_corrector.rbs +3 -9
- 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 +1 -4
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rbs +1 -4
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rbs +1 -4
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rbs +1 -4
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rbs +1 -4
- data/sig/generated/ruby_mod_kit/feature/type/return_value_colon_corrector.rbs +1 -3
- data/sig/generated/ruby_mod_kit/feature/type/type_attr_mission.rbs +3 -4
- data/sig/generated/ruby_mod_kit/feature.rbs +0 -4
- data/sig/generated/ruby_mod_kit/generation.rbs +21 -5
- data/sig/generated/ruby_mod_kit/memo/ivar_memo.rbs +4 -0
- data/sig/generated/ruby_mod_kit/memo/overload_memo.rbs +2 -0
- data/sig/generated/ruby_mod_kit/memo_pad.rbs +4 -0
- data/sig/generated/ruby_mod_kit/mission.rbs +1 -4
- data/sig/generated/ruby_mod_kit/node/base_node.rbs +17 -7
- data/sig/generated/ruby_mod_kit/node/def_parent_node.rbs +5 -0
- data/sig/generated/ruby_mod_kit/node/program_node.rbs +3 -0
- data/sig/generated/ruby_mod_kit/node/symbol_node.rbs +2 -0
- data/sig/generated/ruby_mod_kit.rbs +6 -3
- data/sig/yaml.rbs +3 -0
- metadata +9 -5
- data/sig/generated/ruby_mod_kit/memo.rbs +0 -7
- data/sig/generated/ruby_mod_kit/node.rbs +0 -7
|
@@ -7,6 +7,8 @@ module RubyModKit
|
|
|
7
7
|
class Type
|
|
8
8
|
# The mission for parameter attributes
|
|
9
9
|
class TypeAttrMission < Mission
|
|
10
|
+
# @rbs @modified: bool
|
|
11
|
+
|
|
10
12
|
# @rbs return: void
|
|
11
13
|
def initialize
|
|
12
14
|
super
|
|
@@ -14,17 +16,15 @@ module RubyModKit
|
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
# @rbs generation: Generation
|
|
17
|
-
# @rbs root_node: Node::ProgramNode
|
|
18
|
-
# @rbs _parse_result: Prism::ParseResult
|
|
19
|
-
# @rbs memo_pad: MemoPad
|
|
20
19
|
# @rbs return: bool
|
|
21
|
-
def perform(generation
|
|
20
|
+
def perform(generation)
|
|
22
21
|
return true if @modified
|
|
23
22
|
|
|
24
|
-
memo_pad.def_parents_memo.each_value do |def_parent_memo|
|
|
25
|
-
ivars_memo = def_parent_memo.ivars_memo.dup
|
|
26
|
-
def_parent_node = root_node.def_parent_node_at(def_parent_memo.offset) || raise(RubyModKit::Error)
|
|
23
|
+
generation.memo_pad.def_parents_memo.each_value do |def_parent_memo|
|
|
27
24
|
attr_adding_line = 0
|
|
25
|
+
ivars_memo = def_parent_memo.ivars_memo.dup
|
|
26
|
+
def_parent_node = generation.root_node.def_parent_node_at(def_parent_memo.offset)
|
|
27
|
+
raise(RubyModKit::Error) unless def_parent_node
|
|
28
28
|
|
|
29
29
|
ivars_memo.keep_if { |_, ivar_memo| ivar_memo.attr_kind }
|
|
30
30
|
next if ivars_memo.empty?
|
|
@@ -54,7 +54,9 @@ module RubyModKit
|
|
|
54
54
|
|
|
55
55
|
generation[offset, 0] = "\n" if add_first_separator_line
|
|
56
56
|
ivars_memo.each do |name, ivar_memo|
|
|
57
|
-
|
|
57
|
+
attr = ivar_memo.attr_kind
|
|
58
|
+
attr = "#{ivar_memo.visibility} #{attr}" if ivar_memo.visibility
|
|
59
|
+
generation[offset, 0] = "#{indent}#{attr} :#{name}\n"
|
|
58
60
|
end
|
|
59
61
|
@modified = true
|
|
60
62
|
generation[offset, 0] = "\n" if add_separator_line
|
data/lib/ruby_mod_kit/feature.rb
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
module RubyModKit
|
|
6
6
|
# The class of transpiler generation.
|
|
7
7
|
class Generation
|
|
8
|
-
# @rbs @parse_result: Prism::ParseResult
|
|
9
8
|
# @rbs @script: String
|
|
10
9
|
# @rbs @missions: Array[Mission]
|
|
11
10
|
# @rbs @memo_pad: MemoPad
|
|
@@ -15,36 +14,44 @@ module RubyModKit
|
|
|
15
14
|
# @rbs @filename: String | nil
|
|
16
15
|
# @rbs @corrector_manager: CorrectorManager
|
|
17
16
|
# @rbs @features: Array[Feature]
|
|
17
|
+
# @rbs @config: Config
|
|
18
|
+
# @rbs @errors: Array[Prism::ParseError]
|
|
19
|
+
# @rbs @lines: Array[String]
|
|
20
|
+
# @rbs @offsets: Array[Integer]
|
|
18
21
|
|
|
19
|
-
attr_reader :parse_result #: Prism::ParseResult
|
|
20
22
|
attr_reader :script #: String
|
|
23
|
+
attr_reader :memo_pad #: MemoPad
|
|
24
|
+
attr_reader :root_node #: Node::ProgramNode
|
|
25
|
+
attr_reader :errors #: Array[Prism::ParseError]
|
|
26
|
+
attr_reader :lines #: Array[String]
|
|
27
|
+
attr_reader :offsets #: Array[Integer]
|
|
21
28
|
|
|
22
29
|
# @rbs script: String
|
|
23
30
|
# @rbs missions: Array[Mission]
|
|
24
31
|
# @rbs memo_pad: MemoPad | nil
|
|
25
32
|
# @rbs generation_num: Integer
|
|
33
|
+
# @rbs config: Config | nil
|
|
26
34
|
# @rbs filename: String | nil
|
|
27
35
|
# @rbs corrector_manager: CorrectorManager | nil
|
|
28
36
|
# @rbs features: Array[Feature] | nil
|
|
29
37
|
# @rbs return: void
|
|
30
|
-
def initialize(script, missions: [], memo_pad: nil, generation_num: 0,
|
|
38
|
+
def initialize(script, missions: [], memo_pad: nil, generation_num: 0, config: nil,
|
|
31
39
|
filename: nil, corrector_manager: nil, features: nil)
|
|
32
40
|
@script = script
|
|
33
41
|
@missions = missions
|
|
34
42
|
@generation_num = generation_num
|
|
35
43
|
@filename = filename
|
|
36
|
-
@
|
|
37
|
-
|
|
38
|
-
Feature::Overload.new,
|
|
39
|
-
Feature::Type.new,
|
|
40
|
-
Feature::Type::RbsInline.new,
|
|
41
|
-
].sort
|
|
44
|
+
@config = config || Config.new
|
|
45
|
+
@features = features || @config.features
|
|
42
46
|
|
|
43
47
|
@memo_pad = memo_pad || MemoPad.new
|
|
44
48
|
@corrector_manager = corrector_manager || CorrectorManager.new(@features)
|
|
45
49
|
@offset_diff = OffsetDiff.new
|
|
46
|
-
|
|
47
|
-
@
|
|
50
|
+
parse_result = Prism.parse(@script)
|
|
51
|
+
@errors = parse_result.errors
|
|
52
|
+
@lines = parse_result.source.lines
|
|
53
|
+
@offsets = parse_result.source.offsets
|
|
54
|
+
@root_node = Node::ProgramNode.new(parse_result.value)
|
|
48
55
|
init_missions
|
|
49
56
|
end
|
|
50
57
|
|
|
@@ -66,7 +73,7 @@ module RubyModKit
|
|
|
66
73
|
|
|
67
74
|
# @rbs return: Generation
|
|
68
75
|
def succ
|
|
69
|
-
if @
|
|
76
|
+
if @errors.empty?
|
|
70
77
|
perform_missions
|
|
71
78
|
else
|
|
72
79
|
perform_corrector
|
|
@@ -84,6 +91,7 @@ module RubyModKit
|
|
|
84
91
|
filename: @filename,
|
|
85
92
|
corrector_manager: @corrector_manager,
|
|
86
93
|
features: @features,
|
|
94
|
+
config: @config,
|
|
87
95
|
)
|
|
88
96
|
end
|
|
89
97
|
|
|
@@ -94,7 +102,7 @@ module RubyModKit
|
|
|
94
102
|
|
|
95
103
|
# @rbs return: bool
|
|
96
104
|
def completed?
|
|
97
|
-
@
|
|
105
|
+
@errors.empty? && @missions.empty?
|
|
98
106
|
end
|
|
99
107
|
|
|
100
108
|
# @rbs src_offset: Integer
|
|
@@ -138,13 +146,13 @@ module RubyModKit
|
|
|
138
146
|
# @rbs line_num: Integer
|
|
139
147
|
# @rbs return: String
|
|
140
148
|
def line__overload0(line_num)
|
|
141
|
-
line_by_offset(@
|
|
149
|
+
line_by_offset(@offsets[line_num])
|
|
142
150
|
end
|
|
143
151
|
|
|
144
152
|
# @rbs node: Node::BaseNode
|
|
145
153
|
# @rbs return: String
|
|
146
154
|
def line__overload1(node)
|
|
147
|
-
line(node.
|
|
155
|
+
line(node.location.start_line - 1)
|
|
148
156
|
end
|
|
149
157
|
|
|
150
158
|
# @rbs parse_error: Prism::ParseError
|
|
@@ -167,7 +175,7 @@ module RubyModKit
|
|
|
167
175
|
# @rbs line_num: Integer
|
|
168
176
|
# @rbs return: Integer | nil
|
|
169
177
|
def src_offset__overload0(line_num)
|
|
170
|
-
|
|
178
|
+
@offsets[line_num]
|
|
171
179
|
end
|
|
172
180
|
|
|
173
181
|
# @rbs parse_error: Prism::ParseError
|
|
@@ -178,13 +186,13 @@ module RubyModKit
|
|
|
178
186
|
|
|
179
187
|
# @rbs return: void
|
|
180
188
|
def perform_corrector
|
|
181
|
-
@corrector_manager.perform(self
|
|
189
|
+
@corrector_manager.perform(self)
|
|
182
190
|
end
|
|
183
191
|
|
|
184
192
|
# @rbs return: void
|
|
185
193
|
def perform_missions
|
|
186
194
|
@missions.delete_if do |mission|
|
|
187
|
-
mission.perform(self
|
|
195
|
+
mission.perform(self) || break
|
|
188
196
|
end
|
|
189
197
|
end
|
|
190
198
|
|
|
@@ -197,9 +205,10 @@ module RubyModKit
|
|
|
197
205
|
class << self
|
|
198
206
|
# @rbs src: String
|
|
199
207
|
# @rbs filename: String | nil
|
|
208
|
+
# @rbs config: Config | nil
|
|
200
209
|
# @rbs return: Generation
|
|
201
|
-
def resolve(src, filename: nil)
|
|
202
|
-
generation = Generation.new(src.dup, filename: filename)
|
|
210
|
+
def resolve(src, filename: nil, config: nil)
|
|
211
|
+
generation = Generation.new(src.dup, filename: filename, config: config)
|
|
203
212
|
generation = generation.succ until generation.completed?
|
|
204
213
|
generation
|
|
205
214
|
end
|
|
@@ -11,11 +11,13 @@ module RubyModKit
|
|
|
11
11
|
# @rbs @offset: nil | Integer
|
|
12
12
|
# @rbs @indent: String
|
|
13
13
|
# @rbs @name: Symbol
|
|
14
|
+
# @rbs @visibility: nil | Symbol
|
|
14
15
|
|
|
15
16
|
attr_reader :type #: nil | String
|
|
16
17
|
attr_reader :attr_kind #: nil | Symbol
|
|
17
18
|
attr_accessor :offset #: nil | Integer
|
|
18
19
|
attr_accessor :indent #: String
|
|
20
|
+
attr_accessor :visibility #: nil | Symbol
|
|
19
21
|
|
|
20
22
|
# @rbs name: Symbol
|
|
21
23
|
# @rbs return: void
|
data/lib/ruby_mod_kit/memo.rb
CHANGED
|
@@ -9,11 +9,13 @@ module RubyModKit
|
|
|
9
9
|
# @rbs @methods_memo: Hash[Integer, Memo::MethodMemo]
|
|
10
10
|
# @rbs @parameters_memo: Hash[Integer, Memo::ParameterMemo]
|
|
11
11
|
# @rbs @overloads_memo: Hash[Integer, Memo::OverloadMemo]
|
|
12
|
+
# @rbs @flags: Hash[Symbol, bool]
|
|
12
13
|
|
|
13
14
|
attr_reader :def_parents_memo #: Hash[Integer, Memo::DefParentMemo]
|
|
14
15
|
attr_reader :methods_memo #: Hash[Integer, Memo::MethodMemo]
|
|
15
16
|
attr_reader :parameters_memo #: Hash[Integer, Memo::ParameterMemo]
|
|
16
17
|
attr_reader :overloads_memo #: Hash[Integer, Memo::OverloadMemo]
|
|
18
|
+
attr_accessor :flags #: Hash[Symbol, bool]
|
|
17
19
|
|
|
18
20
|
# @rbs return: void
|
|
19
21
|
def initialize
|
|
@@ -21,6 +23,7 @@ module RubyModKit
|
|
|
21
23
|
@methods_memo = {}
|
|
22
24
|
@parameters_memo = {}
|
|
23
25
|
@overloads_memo = {}
|
|
26
|
+
@flags = Hash.new(false)
|
|
24
27
|
end
|
|
25
28
|
|
|
26
29
|
# @rbs offset_diff: OffsetDiff
|
data/lib/ruby_mod_kit/mission.rb
CHANGED
|
@@ -6,11 +6,8 @@ module RubyModKit
|
|
|
6
6
|
# The base class of transpiler mission.
|
|
7
7
|
class Mission
|
|
8
8
|
# @rbs _generation: Generation
|
|
9
|
-
# @rbs _root_node: Node::ProgramNode
|
|
10
|
-
# @rbs _parse_result: Prism::ParseResult
|
|
11
|
-
# @rbs _memo_pad: MemoPad
|
|
12
9
|
# @rbs return: void
|
|
13
|
-
def perform(_generation
|
|
10
|
+
def perform(_generation)
|
|
14
11
|
raise RubyModKit::Error, "Unexpected type #{self.class}"
|
|
15
12
|
end
|
|
16
13
|
|
|
@@ -11,11 +11,12 @@ module RubyModKit
|
|
|
11
11
|
# @rbs @ancestors: Array[Node::BaseNode]
|
|
12
12
|
# @rbs @prev: Node::BaseNode | nil
|
|
13
13
|
|
|
14
|
-
attr_reader :location #: Prism::Location
|
|
15
14
|
attr_reader :prev #: Node::BaseNode | nil
|
|
16
15
|
|
|
17
|
-
# @rbs return:
|
|
18
|
-
def
|
|
16
|
+
# @rbs return: Prism::Location
|
|
17
|
+
def location
|
|
18
|
+
return @location if defined?(@location)
|
|
19
|
+
|
|
19
20
|
@location = prism_node.location
|
|
20
21
|
end
|
|
21
22
|
|
|
@@ -25,15 +26,22 @@ module RubyModKit
|
|
|
25
26
|
|
|
26
27
|
prev = nil
|
|
27
28
|
@children = prism_node.child_nodes.compact.map do |prism_child_node|
|
|
28
|
-
prev =
|
|
29
|
+
prev = wrap(prism_child_node, prev: prev)
|
|
29
30
|
end
|
|
30
31
|
end
|
|
31
32
|
|
|
33
|
+
# @rbs prism_node: Prism::Node
|
|
34
|
+
# @rbs prev: Node::BaseNode | nil
|
|
35
|
+
# @rbs return: Node::BaseNode
|
|
36
|
+
def wrap(prism_node, prev: nil)
|
|
37
|
+
Node.wrap(prism_node, parent: self, prev: prev)
|
|
38
|
+
end
|
|
39
|
+
|
|
32
40
|
# @rbs return: Array[Node::BaseNode]
|
|
33
41
|
def ancestors
|
|
34
42
|
return @ancestors if @ancestors
|
|
35
43
|
|
|
36
|
-
parent =
|
|
44
|
+
parent = self.parent
|
|
37
45
|
@ancestors = if parent
|
|
38
46
|
[parent] + parent.ancestors
|
|
39
47
|
else
|
|
@@ -41,6 +49,11 @@ module RubyModKit
|
|
|
41
49
|
end
|
|
42
50
|
end
|
|
43
51
|
|
|
52
|
+
# @rbs return: nil | BaseNode
|
|
53
|
+
def parent
|
|
54
|
+
raise(RubyModKit::Error)
|
|
55
|
+
end
|
|
56
|
+
|
|
44
57
|
# @rbs return: Symbol
|
|
45
58
|
def name
|
|
46
59
|
raise(RubyModKit::Error, "Expected ParameterNode but #{self.class}:#{prism_node.inspect}")
|
|
@@ -93,11 +106,6 @@ module RubyModKit
|
|
|
93
106
|
self.offset <= offset && offset <= prism_node.location.end_offset
|
|
94
107
|
end
|
|
95
108
|
|
|
96
|
-
# @rbs return: Prism::Node & Prism::_Node
|
|
97
|
-
def prism_node
|
|
98
|
-
raise RubyModKit::Error
|
|
99
|
-
end
|
|
100
|
-
|
|
101
109
|
# @rbs return: Integer
|
|
102
110
|
def offset
|
|
103
111
|
location.start_offset
|
|
@@ -132,6 +140,16 @@ module RubyModKit
|
|
|
132
140
|
str << ">"
|
|
133
141
|
str
|
|
134
142
|
end
|
|
143
|
+
|
|
144
|
+
private
|
|
145
|
+
|
|
146
|
+
# :nocov:
|
|
147
|
+
# This is just for interface definition, must not be called
|
|
148
|
+
# @rbs return: Prism::Node & Prism::_Node
|
|
149
|
+
def prism_node
|
|
150
|
+
raise RubyModKit::Error
|
|
151
|
+
end
|
|
152
|
+
# :nocov:
|
|
135
153
|
end
|
|
136
154
|
end
|
|
137
155
|
end
|
|
@@ -11,7 +11,7 @@ module RubyModKit
|
|
|
11
11
|
# @rbs @parent: Node::BaseNode
|
|
12
12
|
# @rbs @prev: Node::BaseNode | nil
|
|
13
13
|
|
|
14
|
-
attr_reader :prism_node #: Prism::CallNode
|
|
14
|
+
private attr_reader :prism_node #: Prism::CallNode
|
|
15
15
|
attr_reader :name #: Symbol
|
|
16
16
|
attr_reader :parent #: Node::BaseNode
|
|
17
17
|
attr_reader :prev #: Node::BaseNode | nil
|
|
@@ -10,7 +10,7 @@ module RubyModKit
|
|
|
10
10
|
# @rbs @parent: Node::BaseNode
|
|
11
11
|
# @rbs @prev: Node::BaseNode | nil
|
|
12
12
|
|
|
13
|
-
attr_reader :prism_node #: Prism::DefNode
|
|
13
|
+
private attr_reader :prism_node #: Prism::DefNode
|
|
14
14
|
attr_reader :parent #: Node::BaseNode
|
|
15
15
|
attr_reader :prev #: Node::BaseNode | nil
|
|
16
16
|
|
|
@@ -11,7 +11,7 @@ module RubyModKit
|
|
|
11
11
|
# @rbs @parent: Node::BaseNode
|
|
12
12
|
# @rbs @prev: Node::BaseNode | nil
|
|
13
13
|
|
|
14
|
-
attr_reader :prism_node #: Prism::ClassNode | Prism::ModuleNode
|
|
14
|
+
private attr_reader :prism_node #: Prism::ClassNode | Prism::ModuleNode
|
|
15
15
|
attr_reader :parent #: Node::BaseNode
|
|
16
16
|
attr_reader :prev #: Node::BaseNode | nil
|
|
17
17
|
|
|
@@ -28,13 +28,20 @@ module RubyModKit
|
|
|
28
28
|
super()
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
+
# @rbs prism_child_node: Prism::Node
|
|
32
|
+
# @rbs prev: Node::BaseNode | nil
|
|
33
|
+
# @rbs return: Node::BaseNode
|
|
34
|
+
def wrap(prism_child_node, prev: nil)
|
|
35
|
+
child_node = super
|
|
36
|
+
@body_node = child_node if prism_child_node == @prism_node.body && child_node.is_a?(Node::StatementsNode)
|
|
37
|
+
child_node
|
|
38
|
+
end
|
|
39
|
+
|
|
31
40
|
# @rbs return: nil | Node::StatementsNode
|
|
32
41
|
def body_node
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
body_node
|
|
36
|
-
body_node = nil unless body_node.is_a?(Node::StatementsNode)
|
|
37
|
-
@body_node = body_node
|
|
42
|
+
# body_node will be set in #children
|
|
43
|
+
children
|
|
44
|
+
@body_node
|
|
38
45
|
end
|
|
39
46
|
end
|
|
40
47
|
end
|
|
@@ -15,7 +15,7 @@ module RubyModKit
|
|
|
15
15
|
# | Prism::OptionalParameterNode | Prism::RequiredKeywordParameterNode
|
|
16
16
|
# | Prism::RestParameterNode
|
|
17
17
|
|
|
18
|
-
attr_reader :prism_node #: prism_node
|
|
18
|
+
private attr_reader :prism_node #: prism_node
|
|
19
19
|
attr_reader :parent #: Node::BaseNode
|
|
20
20
|
attr_reader :prev #: Node::BaseNode | nil
|
|
21
21
|
|
|
@@ -8,7 +8,7 @@ module RubyModKit
|
|
|
8
8
|
class ProgramNode < Node::BaseNode
|
|
9
9
|
# @rbs @prism_node: Prism::ProgramNode
|
|
10
10
|
|
|
11
|
-
attr_reader :prism_node #: Prism::ProgramNode
|
|
11
|
+
private attr_reader :prism_node #: Prism::ProgramNode
|
|
12
12
|
|
|
13
13
|
# @rbs prism_node: Prism::ProgramNode
|
|
14
14
|
# @rbs return: void
|
|
@@ -18,6 +18,11 @@ module RubyModKit
|
|
|
18
18
|
|
|
19
19
|
super()
|
|
20
20
|
end
|
|
21
|
+
|
|
22
|
+
# @rbs return: nil
|
|
23
|
+
def parent
|
|
24
|
+
nil
|
|
25
|
+
end
|
|
21
26
|
end
|
|
22
27
|
end
|
|
23
28
|
end
|
|
@@ -10,7 +10,7 @@ module RubyModKit
|
|
|
10
10
|
# @rbs @parent: Node::BaseNode
|
|
11
11
|
# @rbs @prev: Node::BaseNode | nil
|
|
12
12
|
|
|
13
|
-
attr_reader :prism_node #: Prism::StatementsNode
|
|
13
|
+
private attr_reader :prism_node #: Prism::StatementsNode
|
|
14
14
|
attr_reader :parent #: Node::BaseNode
|
|
15
15
|
attr_reader :prev #: Node::BaseNode | nil
|
|
16
16
|
|
|
@@ -9,8 +9,9 @@ module RubyModKit
|
|
|
9
9
|
# @rbs @prism_node: Prism::SymbolNode
|
|
10
10
|
# @rbs @parent: Node::BaseNode
|
|
11
11
|
# @rbs @prev: Node::BaseNode | nil
|
|
12
|
+
# @rbs @value: nil | Symbol
|
|
12
13
|
|
|
13
|
-
attr_reader :prism_node #: Prism::SymbolNode
|
|
14
|
+
private attr_reader :prism_node #: Prism::SymbolNode
|
|
14
15
|
attr_reader :parent #: Node::BaseNode
|
|
15
16
|
attr_reader :prev #: Node::BaseNode | nil
|
|
16
17
|
|
|
@@ -10,7 +10,7 @@ module RubyModKit
|
|
|
10
10
|
# @rbs @parent: Node::BaseNode
|
|
11
11
|
# @rbs @prev: Node::BaseNode | nil
|
|
12
12
|
|
|
13
|
-
attr_reader :prism_node #: Prism::Node
|
|
13
|
+
private attr_reader :prism_node #: Prism::Node
|
|
14
14
|
attr_reader :parent #: Node::BaseNode
|
|
15
15
|
attr_reader :prev #: Node::BaseNode | nil
|
|
16
16
|
|
data/lib/ruby_mod_kit/node.rb
CHANGED
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
|
-
Generation.resolve(src, filename: filename).script
|
|
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
|
|
@@ -75,6 +78,8 @@ module RubyModKit
|
|
|
75
78
|
end
|
|
76
79
|
|
|
77
80
|
require_relative "ruby_mod_kit/version"
|
|
81
|
+
|
|
82
|
+
require_relative "ruby_mod_kit/config"
|
|
78
83
|
require_relative "ruby_mod_kit/corrector"
|
|
79
84
|
require_relative "ruby_mod_kit/corrector_manager"
|
|
80
85
|
require_relative "ruby_mod_kit/feature"
|
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
|
|
@@ -8,9 +8,7 @@ module RubyModKit
|
|
|
8
8
|
|
|
9
9
|
# @rbs _parse_error: Prism::ParseError
|
|
10
10
|
# @rbs _generation: Generation
|
|
11
|
-
# @rbs _root_node: Node::ProgramNode
|
|
12
|
-
# @rbs _memo_pad: MemoPad
|
|
13
11
|
# @rbs return: void
|
|
14
|
-
def correct: (untyped _parse_error, untyped _generation
|
|
12
|
+
def correct: (untyped _parse_error, untyped _generation) -> void
|
|
15
13
|
end
|
|
16
14
|
end
|
|
@@ -12,15 +12,11 @@ module RubyModKit
|
|
|
12
12
|
def initialize: (Array[Feature] features) -> void
|
|
13
13
|
|
|
14
14
|
# @rbs generation: Generation
|
|
15
|
-
# @rbs root_node: Node::ProgramNode
|
|
16
|
-
# @rbs parse_result: Prism::ParseResult
|
|
17
|
-
# @rbs memo_pad: MemoPad
|
|
18
15
|
# @rbs return: bool
|
|
19
|
-
def perform: (Generation generation
|
|
16
|
+
def perform: (Generation generation) -> bool
|
|
20
17
|
|
|
21
18
|
# @rbs generation: Generation
|
|
22
|
-
# @rbs parse_result: Prism::ParseResult
|
|
23
19
|
# @rbs return: void
|
|
24
|
-
def check_prev_errors: (Generation generation
|
|
20
|
+
def check_prev_errors: (Generation generation) -> void
|
|
25
21
|
end
|
|
26
22
|
end
|
|
@@ -10,10 +10,8 @@ module RubyModKit
|
|
|
10
10
|
|
|
11
11
|
# @rbs parse_error: Prism::ParseError
|
|
12
12
|
# @rbs generation: Generation
|
|
13
|
-
# @rbs root_node: Node::ProgramNode
|
|
14
|
-
# @rbs memo_pad: MemoPad
|
|
15
13
|
# @rbs return: void
|
|
16
|
-
def correct: (Prism::ParseError parse_error, Generation generation
|
|
14
|
+
def correct: (Prism::ParseError parse_error, Generation generation) -> void
|
|
17
15
|
end
|
|
18
16
|
end
|
|
19
17
|
end
|
|
@@ -5,16 +5,9 @@ module RubyModKit
|
|
|
5
5
|
class InstanceVariableParameter
|
|
6
6
|
# The mission for instance variable arguments
|
|
7
7
|
class InstanceVariableParameterMission < Mission
|
|
8
|
-
@assignment: String
|
|
9
|
-
|
|
10
|
-
attr_reader assignment: String
|
|
11
|
-
|
|
12
8
|
# @rbs generation: Generation
|
|
13
|
-
# @rbs root_node: Node::ProgramNode
|
|
14
|
-
# @rbs _parse_result: Prism::ParseResult
|
|
15
|
-
# @rbs memo_pad: MemoPad
|
|
16
9
|
# @rbs return: bool
|
|
17
|
-
def perform: (Generation generation
|
|
10
|
+
def perform: (Generation generation) -> bool
|
|
18
11
|
end
|
|
19
12
|
end
|
|
20
13
|
end
|
|
@@ -13,11 +13,8 @@ module RubyModKit
|
|
|
13
13
|
def initialize: () -> void
|
|
14
14
|
|
|
15
15
|
# @rbs generation: Generation
|
|
16
|
-
# @rbs root_node: Node::ProgramNode
|
|
17
|
-
# @rbs parse_result: Prism::ParseResult
|
|
18
|
-
# @rbs memo_pad: MemoPad
|
|
19
16
|
# @rbs return: bool
|
|
20
|
-
def perform: (Generation generation
|
|
17
|
+
def perform: (Generation generation) -> bool
|
|
21
18
|
end
|
|
22
19
|
end
|
|
23
20
|
end
|