spoom 1.7.4 → 1.7.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e63e36fda1906fc8f047e6c4abab3ab8c887035f9e7b6c4c1d2c07d55ae3adaf
4
- data.tar.gz: bf63f0df57b0c6dbed78a6a10021a6e94cdbbddbb8e072d145805829dae78cf2
3
+ metadata.gz: 8704c33b8976616ddeb6d404521a47ab654b6bb652212f35ea9b2c92fa3a9469
4
+ data.tar.gz: c85e35bac3a99847a82c8234f4303434fede477317fd99ffc79dfcd66789d14b
5
5
  SHA512:
6
- metadata.gz: 51d63f6ef122e99b679f317fe2082df8956c7f0e25cf11afd612395101edf67e025698ef2e9a4deac795c0d49077e18cbf9e46771313536deb79f3aec5e31d21
7
- data.tar.gz: bb0a342c5c8ac4bfd0a5310d2ced6541b13d0980fdab309124fca657192fcb8fefe34bde16a347d3974563989f38713a1519a389f803a7c1ace4b18e17fe1438
6
+ metadata.gz: d83c8596f8e10ccb36256d42ed97c3b6eeb69bbb50b922e4b09d088d5a2decadee5103583fa2ab638a359c7f97cb48eec9be695886d11755b24f66ca3c10a538
7
+ data.tar.gz: 990bcdfb1851ccd8808f4dfd02739cfb96cc35f65ac8b4167849d03b4c08b95904b2cda2c6ef3ec6173df0f7348bac3d1e404c57c39cffa863d83acaf1573160
@@ -10,6 +10,11 @@ module Spoom
10
10
  desc "translate", "Translate type assertions from/to RBI and RBS"
11
11
  option :from, type: :string, aliases: :f, desc: "From format", enum: ["rbi"], default: "rbi"
12
12
  option :to, type: :string, aliases: :t, desc: "To format", enum: ["rbs"], default: "rbs"
13
+ option :translate_t_let, type: :boolean, aliases: :t_let, desc: "Translate `T.let`", default: true
14
+ option :translate_t_cast, type: :boolean, aliases: :t_cast, desc: "Translate `T.cast`", default: true
15
+ option :translate_t_bind, type: :boolean, aliases: :t_bind, desc: "Translate `T.bind`", default: true
16
+ option :translate_t_must, type: :boolean, aliases: :t_must, desc: "Translate `T.must`", default: true
17
+ option :translate_t_unsafe, type: :boolean, aliases: :t_unsafe, desc: "Translate `T.unsafe`", default: true
13
18
  def translate(*paths)
14
19
  from = options[:from]
15
20
  to = options[:to]
@@ -19,7 +24,15 @@ module Spoom
19
24
  "in `#{files.size}` file#{files.size == 1 ? "" : "s"}...\n\n")
20
25
 
21
26
  transformed_files = transform_files(files) do |file, contents|
22
- Spoom::Sorbet::Translate.sorbet_assertions_to_rbs_comments(contents, file: file)
27
+ Spoom::Sorbet::Translate.sorbet_assertions_to_rbs_comments(
28
+ contents,
29
+ file: file,
30
+ translate_t_let: options[:translate_t_let],
31
+ translate_t_cast: options[:translate_t_cast],
32
+ translate_t_bind: options[:translate_t_bind],
33
+ translate_t_must: options[:translate_t_must],
34
+ translate_t_unsafe: options[:translate_t_unsafe],
35
+ )
23
36
  end
24
37
 
25
38
  say("Translated type assertions in `#{transformed_files}` file#{transformed_files == 1 ? "" : "s"}.")
@@ -17,6 +17,9 @@ module Spoom
17
17
  default: true
18
18
  option :include_rbi_files, type: :boolean, desc: "Include RBI files", default: false
19
19
  option :max_line_length, type: :numeric, desc: "Max line length (pass 0 to disable)", default: 120
20
+ option :translate_generics, type: :boolean, desc: "Translate generics", default: false
21
+ option :translate_helpers, type: :boolean, desc: "Translate helpers", default: false
22
+ option :translate_abstract_methods, type: :boolean, desc: "Translate abstract methods", default: false
20
23
  def translate(*paths)
21
24
  from = options[:from]
22
25
  to = options[:to]
@@ -49,6 +52,9 @@ module Spoom
49
52
  file: file,
50
53
  positional_names: options[:positional_names],
51
54
  max_line_length: max_line_length,
55
+ translate_generics: options[:translate_generics],
56
+ translate_helpers: options[:translate_helpers],
57
+ translate_abstract_methods: options[:translate_abstract_methods],
52
58
  )
53
59
  end
54
60
  when "rbs"
@@ -156,7 +162,7 @@ module Spoom
156
162
 
157
163
  # DO NOT EDIT MANUALLY
158
164
  # This is an autogenerated file for types exported from the `#{spec.name}` gem.
159
- # Please instead update this file by running `spoom srb sigs export`.
165
+ # Please instead update this file by running `bundle exec spoom srb sigs export`.
160
166
  RB
161
167
 
162
168
  output_path ||= "rbi/#{spec.name}.rbi"
@@ -169,7 +175,7 @@ module Spoom
169
175
  say_error(<<~ERR, status: "\nError")
170
176
  The RBI file at `#{output_path}` is not up to date
171
177
 
172
- Please run `spoom srb sigs export` to update it.
178
+ Please run `bundle exec spoom srb sigs export` to update it.
173
179
  ERR
174
180
  exit(1)
175
181
  end
@@ -42,7 +42,7 @@ module Spoom
42
42
 
43
43
  # @abstract
44
44
  #: -> String
45
- def script; end
45
+ def script = raise NotImplementedError, "Abstract method called"
46
46
  end
47
47
  end
48
48
  end
@@ -119,7 +119,7 @@ module Spoom
119
119
 
120
120
  # @abstract
121
121
  #: -> String
122
- def plot; end
122
+ def plot = raise NotImplementedError, "Abstract method called"
123
123
 
124
124
  #: -> String
125
125
  def x_scale
@@ -70,7 +70,7 @@ module Spoom
70
70
 
71
71
  # @abstract
72
72
  #: -> Array[Cards::Card]
73
- def cards; end
73
+ def cards = raise NotImplementedError, "Abstract method called"
74
74
 
75
75
  #: -> String
76
76
  def footer_html
@@ -106,7 +106,7 @@ module Spoom
106
106
 
107
107
  # @abstract
108
108
  #: -> String
109
- def erb; end
109
+ def erb = raise NotImplementedError, "Abstract method called"
110
110
  end
111
111
 
112
112
  class Snapshot < Card
@@ -10,7 +10,7 @@ module Spoom
10
10
  module PrintableSymbol
11
11
  # @abstract
12
12
  #: (SymbolPrinter printer) -> void
13
- def accept_printer(printer); end
13
+ def accept_printer(printer) = raise NotImplementedError, "Abstract method called"
14
14
  end
15
15
 
16
16
  class Hover < T::Struct
@@ -41,31 +41,7 @@ module Spoom
41
41
  # @override
42
42
  #: (Prism::DefNode node) -> void
43
43
  def visit_def_node(node)
44
- comments = node_rbs_comments(node)
45
- return if comments.empty?
46
-
47
- return if comments.signatures.empty?
48
-
49
- builder = RBI::Parser::TreeBuilder.new(@ruby_contents, comments: [], file: @file)
50
- builder.visit(node)
51
- rbi_node = builder.tree.nodes.first #: as RBI::Method
52
-
53
- comments.signatures.each do |signature|
54
- method_type = ::RBS::Parser.parse_method_type(signature.string)
55
- translator = RBI::RBS::MethodTypeTranslator.new(rbi_node)
56
- translator.visit(method_type)
57
- sig = translator.result
58
- apply_member_annotations(comments.method_annotations, sig)
59
-
60
- @rewriter << Source::Replace.new(
61
- signature.location.start_offset,
62
- signature.location.end_offset,
63
- sig.string(max_line_length: @max_line_length),
64
- )
65
- rescue ::RBS::ParsingError, ::RBI::Error
66
- # Ignore signatures with errors
67
- next
68
- end
44
+ rewrite_def(node, node_rbs_comments(node))
69
45
  end
70
46
 
71
47
  # @override
@@ -75,6 +51,12 @@ module Spoom
75
51
  when "attr_reader", "attr_writer", "attr_accessor"
76
52
  visit_attr(node)
77
53
  else
54
+ def_node = node.arguments&.arguments&.first
55
+ if def_node&.is_a?(Prism::DefNode)
56
+ rewrite_def(def_node, node_rbs_comments(node))
57
+ return
58
+ end
59
+
78
60
  super
79
61
  end
80
62
  end
@@ -119,6 +101,42 @@ module Spoom
119
101
  end
120
102
  end
121
103
 
104
+ #: (Prism::DefNode, RBS::Comments) -> void
105
+ def rewrite_def(def_node, comments)
106
+ return if comments.empty?
107
+ return if comments.signatures.empty?
108
+
109
+ builder = RBI::Parser::TreeBuilder.new(@ruby_contents, comments: [], file: @file)
110
+ builder.visit(def_node)
111
+ rbi_node = builder.tree.nodes.first #: as RBI::Method
112
+
113
+ comments.signatures.each do |signature|
114
+ begin
115
+ method_type = ::RBS::Parser.parse_method_type(signature.string)
116
+ rescue ::RBS::ParsingError
117
+ next
118
+ end
119
+
120
+ translator = RBI::RBS::MethodTypeTranslator.new(rbi_node)
121
+
122
+ begin
123
+ translator.visit(method_type)
124
+ rescue ::RBI::Error
125
+ next
126
+ end
127
+
128
+ sig = translator.result
129
+
130
+ apply_member_annotations(comments.method_annotations, sig)
131
+
132
+ @rewriter << Source::Replace.new(
133
+ signature.location.start_offset,
134
+ signature.location.end_offset,
135
+ sig.string(max_line_length: @max_line_length),
136
+ )
137
+ end
138
+ end
139
+
122
140
  #: (Prism::ClassNode | Prism::ModuleNode | Prism::SingletonClassNode) -> void
123
141
  def apply_class_annotations(node)
124
142
  comments = node_rbs_comments(node)
@@ -8,6 +8,33 @@ module Spoom
8
8
  class SorbetAssertionsToRBSComments < Translator
9
9
  LINE_BREAK = "\n".ord #: Integer
10
10
 
11
+ #: (
12
+ #| String,
13
+ #| file: String,
14
+ #| ?translate_t_let: bool,
15
+ #| ?translate_t_cast: bool,
16
+ #| ?translate_t_bind: bool,
17
+ #| ?translate_t_must: bool,
18
+ #| ?translate_t_unsafe: bool,
19
+ #| ) -> void
20
+ def initialize(
21
+ ruby_contents,
22
+ file:,
23
+ translate_t_let: true,
24
+ translate_t_cast: true,
25
+ translate_t_bind: true,
26
+ translate_t_must: true,
27
+ translate_t_unsafe: true
28
+ )
29
+ super(ruby_contents, file: file)
30
+
31
+ @translate_t_let = translate_t_let
32
+ @translate_t_cast = translate_t_cast
33
+ @translate_t_bind = translate_t_bind
34
+ @translate_t_must = translate_t_must
35
+ @translate_t_unsafe = translate_t_unsafe
36
+ end
37
+
11
38
  # @override
12
39
  #: (Prism::StatementsNode) -> void
13
40
  def visit_statements_node(node)
@@ -59,7 +86,7 @@ module Spoom
59
86
  end
60
87
 
61
88
  return false unless node.is_a?(Prism::CallNode)
62
- return false unless t_annotation?(node)
89
+ return false unless translatable_annotation?(node)
63
90
  return false unless at_end_of_line?(node)
64
91
 
65
92
  value = T.must(node.arguments&.arguments&.first)
@@ -116,16 +143,20 @@ module Spoom
116
143
 
117
144
  # Is this node a `T.let` or `T.cast`?
118
145
  #: (Prism::CallNode) -> bool
119
- def t_annotation?(node)
146
+ def translatable_annotation?(node)
120
147
  return false unless t?(node.receiver)
121
148
 
122
149
  case node.name
123
- when :let, :cast
124
- return node.arguments&.arguments&.size == 2
150
+ when :let
151
+ return @translate_t_let && node.arguments&.arguments&.size == 2
152
+ when :cast
153
+ return @translate_t_cast && node.arguments&.arguments&.size == 2
125
154
  when :bind
126
- return node.arguments&.arguments&.size == 2 && node.arguments&.arguments&.first.is_a?(Prism::SelfNode)
127
- when :must, :unsafe
128
- return node.arguments&.arguments&.size == 1
155
+ return @translate_t_bind && node.arguments&.arguments&.size == 2 && node.arguments&.arguments&.first.is_a?(Prism::SelfNode)
156
+ when :must
157
+ return @translate_t_must && node.arguments&.arguments&.size == 1
158
+ when :unsafe
159
+ return @translate_t_unsafe && node.arguments&.arguments&.size == 1
129
160
  end
130
161
 
131
162
  false
@@ -7,8 +7,24 @@ module Spoom
7
7
  # Converts all `sig` nodes to RBS comments in the given Ruby code.
8
8
  # It also handles type members and class annotations.
9
9
  class SorbetSigsToRBSComments < Translator
10
- #: (String, file: String, positional_names: bool, ?max_line_length: Integer?) -> void
11
- def initialize(ruby_contents, file:, positional_names:, max_line_length: nil)
10
+ #: (
11
+ #| String,
12
+ #| file: String,
13
+ #| positional_names: bool,
14
+ #| ?max_line_length: Integer?,
15
+ #| ?translate_generics: bool,
16
+ #| ?translate_helpers: bool,
17
+ #| ?translate_abstract_methods: bool
18
+ #| ) -> void
19
+ def initialize(
20
+ ruby_contents,
21
+ file:,
22
+ positional_names:,
23
+ max_line_length: nil,
24
+ translate_generics: true,
25
+ translate_helpers: true,
26
+ translate_abstract_methods: true
27
+ )
12
28
  super(ruby_contents, file: file)
13
29
 
14
30
  @positional_names = positional_names #: bool
@@ -19,6 +35,10 @@ module Spoom
19
35
  @extend_t_generics = [] #: Array[Prism::CallNode]
20
36
  @seen_mixes_in_class_methods = false #: bool
21
37
  @max_line_length = max_line_length #: Integer?
38
+
39
+ @translate_generics = translate_generics #: bool
40
+ @translate_helpers = translate_helpers #: bool
41
+ @translate_abstract_methods = translate_abstract_methods #: bool
22
42
  end
23
43
 
24
44
  # @override
@@ -44,7 +64,6 @@ module Spoom
44
64
  def visit_def_node(node)
45
65
  last_sigs = collect_last_sigs
46
66
  return if last_sigs.empty?
47
- return if last_sigs.any? { |_, sig| sig.is_abstract }
48
67
 
49
68
  apply_member_annotations(last_sigs)
50
69
 
@@ -54,11 +73,26 @@ module Spoom
54
73
  rbi_node = builder.tree.nodes.first #: as RBI::Method
55
74
 
56
75
  last_sigs.each do |node, sig|
76
+ next if sig.is_abstract && !@translate_abstract_methods
77
+
57
78
  out = rbs_print(node.location.start_column) do |printer|
58
79
  printer.print_method_sig(rbi_node, sig)
59
80
  end
60
81
  @rewriter << Source::Replace.new(node.location.start_offset, node.location.end_offset, out)
61
82
  end
83
+
84
+ if @translate_abstract_methods && last_sigs.any? { |_, sig| sig.is_abstract }
85
+ @rewriter << Source::Replace.new(
86
+ node.rparen_loc&.end_offset || node.name_loc.end_offset,
87
+ node.location.end_offset - 1,
88
+ if node.name.end_with?("=")
89
+ indent = " " * node.location.start_column
90
+ "\n#{indent} raise NotImplementedError, \"Abstract method called\"\n#{indent}end"
91
+ else
92
+ " = raise NotImplementedError, \"Abstract method called\""
93
+ end,
94
+ )
95
+ end
62
96
  end
63
97
 
64
98
  # @override
@@ -83,6 +117,8 @@ module Spoom
83
117
  # @override
84
118
  #: (Prism::ConstantWriteNode) -> void
85
119
  def visit_constant_write_node(node)
120
+ return super unless @translate_generics
121
+
86
122
  call = node.value
87
123
  return super unless call.is_a?(Prism::CallNode)
88
124
  return super unless call.message == "type_member"
@@ -113,19 +149,23 @@ module Spoom
113
149
 
114
150
  yield
115
151
 
116
- delete_extend_t_generics
152
+ if @translate_generics
153
+ delete_extend_t_generics
117
154
 
118
- if @type_members.any?
119
- indent = " " * node.location.start_column
120
- @rewriter << Source::Insert.new(node.location.start_offset, "#: [#{@type_members.join(", ")}]\n#{indent}")
155
+ if @type_members.any?
156
+ indent = " " * node.location.start_column
157
+ @rewriter << Source::Insert.new(node.location.start_offset, "#: [#{@type_members.join(", ")}]\n#{indent}")
158
+ end
121
159
  end
122
160
 
123
- unless @seen_mixes_in_class_methods
124
- delete_extend_t_helpers
125
- end
161
+ if @translate_helpers
162
+ unless @seen_mixes_in_class_methods
163
+ delete_extend_t_helpers
164
+ end
126
165
 
127
- @class_annotations.each do |call|
128
- apply_class_annotation(node, call)
166
+ @class_annotations.each do |call|
167
+ apply_class_annotation(node, call)
168
+ end
129
169
  end
130
170
 
131
171
  @class_annotations = old_class_annotations
@@ -237,23 +277,25 @@ module Spoom
237
277
  node, _sig = sigs.first #: as [Prism::CallNode, RBI::Sig]
238
278
  insert_pos = node.location.start_offset
239
279
 
280
+ indent = " " * node.location.start_column
281
+
240
282
  if sigs.any? { |_, sig| sig.without_runtime }
241
- @rewriter << Source::Insert.new(insert_pos, "# @without_runtime\n")
283
+ @rewriter << Source::Insert.new(insert_pos, "# @without_runtime\n#{indent}")
242
284
  end
243
285
 
244
286
  if sigs.any? { |_, sig| sig.is_final }
245
- @rewriter << Source::Insert.new(insert_pos, "# @final\n")
287
+ @rewriter << Source::Insert.new(insert_pos, "# @final\n#{indent}")
246
288
  end
247
289
 
248
- if sigs.any? { |_, sig| sig.is_abstract }
249
- @rewriter << Source::Insert.new(insert_pos, "# @abstract\n")
290
+ if sigs.any? { |_, sig| sig.is_abstract } && @translate_abstract_methods
291
+ @rewriter << Source::Insert.new(insert_pos, "# @abstract\n#{indent}")
250
292
  end
251
293
 
252
294
  if sigs.any? { |_, sig| sig.is_override }
253
295
  @rewriter << if sigs.any? { |_, sig| sig.allow_incompatible_override }
254
- Source::Insert.new(insert_pos, "# @override(allow_incompatible: true)\n")
296
+ Source::Insert.new(insert_pos, "# @override(allow_incompatible: true)\n#{indent}")
255
297
  else
256
- Source::Insert.new(insert_pos, "# @override\n")
298
+ Source::Insert.new(insert_pos, "# @override\n#{indent}")
257
299
  end
258
300
  end
259
301
 
@@ -25,9 +25,30 @@ module Spoom
25
25
 
26
26
  # Converts all `sig` nodes to RBS comments in the given Ruby code.
27
27
  # It also handles type members and class annotations.
28
- #: (String ruby_contents, file: String, ?positional_names: bool, ?max_line_length: Integer?) -> String
29
- def sorbet_sigs_to_rbs_comments(ruby_contents, file:, positional_names: true, max_line_length: nil)
30
- SorbetSigsToRBSComments.new(ruby_contents, file: file, positional_names: positional_names, max_line_length: max_line_length).rewrite
28
+ #: (
29
+ #| String,
30
+ #| file: String,
31
+ #| ?positional_names: bool,
32
+ #| ?max_line_length: Integer?,
33
+ #| ?translate_generics: bool,
34
+ #| ?translate_helpers: bool,
35
+ #| ?translate_abstract_methods: bool
36
+ #| ) -> String
37
+ def sorbet_sigs_to_rbs_comments(
38
+ ruby_contents, file:, positional_names: true, max_line_length: nil,
39
+ translate_generics: true,
40
+ translate_helpers: true,
41
+ translate_abstract_methods: true
42
+ )
43
+ SorbetSigsToRBSComments.new(
44
+ ruby_contents,
45
+ file: file,
46
+ positional_names: positional_names,
47
+ max_line_length: max_line_length,
48
+ translate_generics: translate_generics,
49
+ translate_helpers: translate_helpers,
50
+ translate_abstract_methods: translate_abstract_methods,
51
+ ).rewrite
31
52
  end
32
53
 
33
54
  # Converts all the RBS comments in the given Ruby code to `sig` nodes.
@@ -39,9 +60,32 @@ module Spoom
39
60
 
40
61
  # Converts all `T.let` and `T.cast` nodes to RBS comments in the given Ruby code.
41
62
  # It also handles type members and class annotations.
42
- #: (String ruby_contents, file: String) -> String
43
- def sorbet_assertions_to_rbs_comments(ruby_contents, file:)
44
- SorbetAssertionsToRBSComments.new(ruby_contents, file: file).rewrite
63
+ #: (
64
+ #| String,
65
+ #| file: String,
66
+ #| ?translate_t_let: bool,
67
+ #| ?translate_t_cast: bool,
68
+ #| ?translate_t_bind: bool,
69
+ #| ?translate_t_must: bool,
70
+ #| ?translate_t_unsafe: bool
71
+ #| ) -> String
72
+ def sorbet_assertions_to_rbs_comments(
73
+ ruby_contents, file:,
74
+ translate_t_let: true,
75
+ translate_t_cast: true,
76
+ translate_t_bind: true,
77
+ translate_t_must: true,
78
+ translate_t_unsafe: true
79
+ )
80
+ SorbetAssertionsToRBSComments.new(
81
+ ruby_contents,
82
+ file: file,
83
+ translate_t_let: translate_t_let,
84
+ translate_t_cast: translate_t_cast,
85
+ translate_t_bind: translate_t_bind,
86
+ translate_t_must: translate_t_must,
87
+ translate_t_unsafe: translate_t_unsafe,
88
+ ).rewrite
45
89
  end
46
90
  end
47
91
  end
@@ -29,11 +29,11 @@ module Spoom
29
29
  class Edit
30
30
  # @abstract
31
31
  #: (Array[Integer]) -> void
32
- def apply(bytes); end
32
+ def apply(bytes) = raise NotImplementedError, "Abstract method called"
33
33
 
34
34
  # @abstract
35
35
  #: -> [Integer, Integer]
36
- def range; end
36
+ def range = raise NotImplementedError, "Abstract method called"
37
37
  end
38
38
 
39
39
  class Insert < Edit
data/lib/spoom/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Spoom
5
- VERSION = "1.7.4"
5
+ VERSION = "1.7.5"
6
6
  end
data/rbi/spoom.rbi CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # DO NOT EDIT MANUALLY
4
4
  # This is an autogenerated file for types exported from the `spoom` gem.
5
- # Please instead update this file by running `spoom srb sigs export`.
5
+ # Please instead update this file by running `bundle exec spoom srb sigs export`.
6
6
 
7
7
  module Spoom
8
8
  class << self
@@ -2842,18 +2842,31 @@ module Spoom::Sorbet::Translate
2842
2842
  sig { params(ruby_contents: ::String, file: ::String, max_line_length: T.nilable(::Integer)).returns(::String) }
2843
2843
  def rbs_comments_to_sorbet_sigs(ruby_contents, file:, max_line_length: T.unsafe(nil)); end
2844
2844
 
2845
- sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
2846
- def sorbet_assertions_to_rbs_comments(ruby_contents, file:); end
2845
+ sig do
2846
+ params(
2847
+ ruby_contents: ::String,
2848
+ file: ::String,
2849
+ translate_t_let: T::Boolean,
2850
+ translate_t_cast: T::Boolean,
2851
+ translate_t_bind: T::Boolean,
2852
+ translate_t_must: T::Boolean,
2853
+ translate_t_unsafe: T::Boolean
2854
+ ).returns(::String)
2855
+ end
2856
+ def sorbet_assertions_to_rbs_comments(ruby_contents, file:, translate_t_let: T.unsafe(nil), translate_t_cast: T.unsafe(nil), translate_t_bind: T.unsafe(nil), translate_t_must: T.unsafe(nil), translate_t_unsafe: T.unsafe(nil)); end
2847
2857
 
2848
2858
  sig do
2849
2859
  params(
2850
2860
  ruby_contents: ::String,
2851
2861
  file: ::String,
2852
2862
  positional_names: T::Boolean,
2853
- max_line_length: T.nilable(::Integer)
2863
+ max_line_length: T.nilable(::Integer),
2864
+ translate_generics: T::Boolean,
2865
+ translate_helpers: T::Boolean,
2866
+ translate_abstract_methods: T::Boolean
2854
2867
  ).returns(::String)
2855
2868
  end
2856
- def sorbet_sigs_to_rbs_comments(ruby_contents, file:, positional_names: T.unsafe(nil), max_line_length: T.unsafe(nil)); end
2869
+ def sorbet_sigs_to_rbs_comments(ruby_contents, file:, positional_names: T.unsafe(nil), max_line_length: T.unsafe(nil), translate_generics: T.unsafe(nil), translate_helpers: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end
2857
2870
 
2858
2871
  sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
2859
2872
  def strip_sorbet_sigs(ruby_contents, file:); end
@@ -2899,11 +2912,27 @@ class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs < ::Spoom::Sorbet::Trans
2899
2912
  sig { params(annotations: T::Array[::Spoom::RBS::Annotation], sig: ::RBI::Sig).void }
2900
2913
  def apply_member_annotations(annotations, sig); end
2901
2914
 
2915
+ sig { params(def_node: ::Prism::DefNode, comments: ::Spoom::RBS::Comments).void }
2916
+ def rewrite_def(def_node, comments); end
2917
+
2902
2918
  sig { params(node: ::Prism::CallNode).void }
2903
2919
  def visit_attr(node); end
2904
2920
  end
2905
2921
 
2906
2922
  class Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments < ::Spoom::Sorbet::Translate::Translator
2923
+ sig do
2924
+ params(
2925
+ ruby_contents: ::String,
2926
+ file: ::String,
2927
+ translate_t_let: T::Boolean,
2928
+ translate_t_cast: T::Boolean,
2929
+ translate_t_bind: T::Boolean,
2930
+ translate_t_must: T::Boolean,
2931
+ translate_t_unsafe: T::Boolean
2932
+ ).void
2933
+ end
2934
+ def initialize(ruby_contents, file:, translate_t_let: T.unsafe(nil), translate_t_cast: T.unsafe(nil), translate_t_bind: T.unsafe(nil), translate_t_must: T.unsafe(nil), translate_t_unsafe: T.unsafe(nil)); end
2935
+
2907
2936
  sig { override.params(node: ::Prism::IfNode).void }
2908
2937
  def visit_if_node(node); end
2909
2938
 
@@ -2928,7 +2957,7 @@ class Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments < ::Spoom::Sorbet:
2928
2957
  def t?(node); end
2929
2958
 
2930
2959
  sig { params(node: ::Prism::CallNode).returns(T::Boolean) }
2931
- def t_annotation?(node); end
2960
+ def translatable_annotation?(node); end
2932
2961
  end
2933
2962
 
2934
2963
  Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments::LINE_BREAK = T.let(T.unsafe(nil), Integer)
@@ -2939,10 +2968,13 @@ class Spoom::Sorbet::Translate::SorbetSigsToRBSComments < ::Spoom::Sorbet::Trans
2939
2968
  ruby_contents: ::String,
2940
2969
  file: ::String,
2941
2970
  positional_names: T::Boolean,
2942
- max_line_length: T.nilable(::Integer)
2971
+ max_line_length: T.nilable(::Integer),
2972
+ translate_generics: T::Boolean,
2973
+ translate_helpers: T::Boolean,
2974
+ translate_abstract_methods: T::Boolean
2943
2975
  ).void
2944
2976
  end
2945
- def initialize(ruby_contents, file:, positional_names:, max_line_length: T.unsafe(nil)); end
2977
+ def initialize(ruby_contents, file:, positional_names:, max_line_length: T.unsafe(nil), translate_generics: T.unsafe(nil), translate_helpers: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end
2946
2978
 
2947
2979
  sig { override.params(node: ::Prism::CallNode).void }
2948
2980
  def visit_call_node(node); end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spoom
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.4
4
+ version: 1.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Terrasa