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.
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