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.
Files changed (72) 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/corrector.rb +1 -3
  6. data/lib/ruby_mod_kit/corrector_manager.rb +11 -15
  7. data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb +5 -7
  8. data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rb +4 -11
  9. data/lib/ruby_mod_kit/feature/overload/overload_mission.rb +8 -11
  10. data/lib/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rb +13 -10
  11. data/lib/ruby_mod_kit/feature/type/parameter_arrow_corrector.rb +9 -15
  12. data/lib/ruby_mod_kit/feature/type/rbs_inline/add_magic_comment_mission.rb +49 -0
  13. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rb +12 -7
  14. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rb +5 -7
  15. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rb +6 -8
  16. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rb +6 -8
  17. data/lib/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rb +5 -7
  18. data/lib/ruby_mod_kit/feature/type/rbs_inline.rb +3 -0
  19. data/lib/ruby_mod_kit/feature/type/return_value_colon_corrector.rb +4 -6
  20. data/lib/ruby_mod_kit/feature/type/type_attr_mission.rb +10 -8
  21. data/lib/ruby_mod_kit/feature.rb +0 -6
  22. data/lib/ruby_mod_kit/generation.rb +29 -20
  23. data/lib/ruby_mod_kit/memo/ivar_memo.rb +2 -0
  24. data/lib/ruby_mod_kit/memo/overload_memo.rb +1 -0
  25. data/lib/ruby_mod_kit/memo.rb +0 -2
  26. data/lib/ruby_mod_kit/memo_pad.rb +3 -0
  27. data/lib/ruby_mod_kit/mission.rb +1 -4
  28. data/lib/ruby_mod_kit/node/base_node.rb +28 -10
  29. data/lib/ruby_mod_kit/node/call_node.rb +1 -1
  30. data/lib/ruby_mod_kit/node/def_node.rb +1 -1
  31. data/lib/ruby_mod_kit/node/def_parent_node.rb +13 -6
  32. data/lib/ruby_mod_kit/node/parameter_node.rb +1 -1
  33. data/lib/ruby_mod_kit/node/program_node.rb +6 -1
  34. data/lib/ruby_mod_kit/node/statements_node.rb +1 -1
  35. data/lib/ruby_mod_kit/node/symbol_node.rb +2 -1
  36. data/lib/ruby_mod_kit/node/untyped_node.rb +1 -1
  37. data/lib/ruby_mod_kit/node.rb +0 -2
  38. data/lib/ruby_mod_kit/version.rb +1 -1
  39. data/lib/ruby_mod_kit.rb +11 -6
  40. data/ruby_mod_kit.gemspec +7 -1
  41. data/sig/generated/ruby_mod_kit/cli.rbs +5 -0
  42. data/sig/generated/ruby_mod_kit/config.rbs +21 -0
  43. data/sig/generated/ruby_mod_kit/corrector.rbs +1 -3
  44. data/sig/generated/ruby_mod_kit/corrector_manager.rbs +2 -6
  45. data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rbs +1 -3
  46. data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rbs +1 -8
  47. data/sig/generated/ruby_mod_kit/feature/overload/overload_mission.rbs +1 -4
  48. data/sig/generated/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rbs +7 -3
  49. data/sig/generated/ruby_mod_kit/feature/type/parameter_arrow_corrector.rbs +3 -9
  50. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/add_magic_comment_mission.rbs +21 -0
  51. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rbs +1 -4
  52. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rbs +1 -4
  53. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rbs +1 -4
  54. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rbs +1 -4
  55. data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rbs +1 -4
  56. data/sig/generated/ruby_mod_kit/feature/type/return_value_colon_corrector.rbs +1 -3
  57. data/sig/generated/ruby_mod_kit/feature/type/type_attr_mission.rbs +3 -4
  58. data/sig/generated/ruby_mod_kit/feature.rbs +0 -4
  59. data/sig/generated/ruby_mod_kit/generation.rbs +21 -5
  60. data/sig/generated/ruby_mod_kit/memo/ivar_memo.rbs +4 -0
  61. data/sig/generated/ruby_mod_kit/memo/overload_memo.rbs +2 -0
  62. data/sig/generated/ruby_mod_kit/memo_pad.rbs +4 -0
  63. data/sig/generated/ruby_mod_kit/mission.rbs +1 -4
  64. data/sig/generated/ruby_mod_kit/node/base_node.rbs +17 -7
  65. data/sig/generated/ruby_mod_kit/node/def_parent_node.rbs +5 -0
  66. data/sig/generated/ruby_mod_kit/node/program_node.rbs +3 -0
  67. data/sig/generated/ruby_mod_kit/node/symbol_node.rbs +2 -0
  68. data/sig/generated/ruby_mod_kit.rbs +6 -3
  69. data/sig/yaml.rbs +3 -0
  70. metadata +9 -5
  71. data/sig/generated/ruby_mod_kit/memo.rbs +0 -7
  72. 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, root_node, _parse_result, memo_pad)
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
- generation[offset, 0] = "#{indent}#{ivar_memo.attr_kind} :#{name}\n"
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
@@ -5,12 +5,6 @@
5
5
  module RubyModKit
6
6
  # the base class of feature
7
7
  class Feature
8
- # @rbs other: Feature
9
- # @rbs return: -1 | 0 | 1 | nil
10
- def <=>(other)
11
- self.class.name <=> other.class.name
12
- end
13
-
14
8
  # @rbs return: Array[Corrector]
15
9
  def create_correctors
16
10
  []
@@ -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
- @features = features || [
37
- Feature::InstanceVariableParameter.new,
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
- @parse_result = Prism.parse(@script)
47
- @root_node = Node::ProgramNode.new(@parse_result.value)
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 @parse_result.errors.empty?
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
- @parse_result.errors.empty? && @missions.empty?
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(@parse_result.source.offsets[line_num])
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.prism_node.location.start_line - 1)
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
- parse_result.source.offsets[line_num]
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, @root_node, @parse_result, @memo_pad)
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, @root_node, @parse_result, @memo_pad) || break
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
@@ -9,6 +9,7 @@ module RubyModKit
9
9
  # @rbs @name: Symbol
10
10
  # @rbs @overload_types: [[Array[String], String]]
11
11
  # @rbs @offset_corrected: bool
12
+ # @rbs @offset: Integer
12
13
 
13
14
  attr_reader :name #: Symbol
14
15
  attr_reader :overload_types #: [[Array[String], String]]
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rbs_inline: enabled
4
-
5
3
  module RubyModKit
6
4
  # The namespace of transpiler memo.
7
5
  module Memo
@@ -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
@@ -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, _root_node, _parse_result, _memo_pad)
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: void
18
- def initialize
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 = Node.wrap(prism_child_node, parent: self, prev: 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 = @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
- return @body_node if defined?(@body_node)
34
-
35
- body_node = children.find { |node| node.prism_node == @prism_node.body }
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
 
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rbs_inline: enabled
4
-
5
3
  module RubyModKit
6
4
  # The namespace of transpile node.
7
5
  module Node
@@ -3,5 +3,5 @@
3
3
  # rbs_inline: enabled
4
4
 
5
5
  module RubyModKit
6
- VERSION = "0.0.3" #: 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
- 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?(*%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
@@ -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, untyped _root_node, untyped _memo_pad) -> void
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, Node::ProgramNode root_node, Prism::ParseResult parse_result, MemoPad memo_pad) -> bool
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, Prism::ParseResult parse_result) -> void
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, Node::ProgramNode root_node, MemoPad memo_pad) -> void
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, Node::ProgramNode root_node, untyped _parse_result, MemoPad memo_pad) -> bool
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, Node::ProgramNode root_node, Prism::ParseResult parse_result, MemoPad memo_pad) -> bool
17
+ def perform: (Generation generation) -> bool
21
18
  end
22
19
  end
23
20
  end