ruby_mod_kit 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|