rbs 3.2.2 → 3.3.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +1 -1
  3. data/.github/workflows/ruby.yml +7 -2
  4. data/CHANGELOG.md +85 -0
  5. data/Gemfile.lock +14 -14
  6. data/README.md +11 -2
  7. data/Rakefile +10 -7
  8. data/Steepfile +7 -7
  9. data/core/basic_object.rbs +7 -7
  10. data/core/binding.rbs +3 -3
  11. data/core/builtin.rbs +171 -5
  12. data/core/constants.rbs +17 -17
  13. data/core/dir.rbs +3 -3
  14. data/core/encoding.rbs +434 -628
  15. data/core/enumerator.rbs +37 -0
  16. data/core/exception.rbs +11 -11
  17. data/core/false_class.rbs +5 -11
  18. data/core/fiber.rbs +3 -3
  19. data/core/file_test.rbs +28 -26
  20. data/core/kernel.rbs +900 -21
  21. data/core/marshal.rbs +24 -14
  22. data/core/match_data.rbs +8 -8
  23. data/core/math.rbs +57 -53
  24. data/core/method.rbs +3 -1
  25. data/core/module.rbs +38 -36
  26. data/core/nil_class.rbs +7 -13
  27. data/core/object.rbs +3 -966
  28. data/core/process.rbs +3 -3
  29. data/core/ractor.rbs +2 -2
  30. data/core/rb_config.rbs +64 -43
  31. data/core/regexp.rbs +3 -3
  32. data/core/signal.rbs +10 -4
  33. data/core/struct.rbs +1 -1
  34. data/core/thread.rbs +7 -7
  35. data/core/thread_group.rbs +9 -9
  36. data/core/true_class.rbs +5 -11
  37. data/core/unbound_method.rbs +56 -7
  38. data/core/warning.rbs +33 -0
  39. data/docs/collection.md +56 -6
  40. data/docs/data_and_struct.md +57 -0
  41. data/docs/stdlib.md +61 -2
  42. data/docs/syntax.md +123 -2
  43. data/ext/rbs_extension/lexer.c +624 -569
  44. data/ext/rbs_extension/lexer.h +1 -0
  45. data/ext/rbs_extension/lexer.re +1 -0
  46. data/ext/rbs_extension/lexstate.c +1 -0
  47. data/ext/rbs_extension/parser.c +6 -0
  48. data/goodcheck.yml +2 -2
  49. data/lib/rbs/annotate/formatter.rb +13 -3
  50. data/lib/rbs/annotate/rdoc_source.rb +10 -1
  51. data/lib/rbs/cli/colored_io.rb +48 -0
  52. data/lib/rbs/cli/diff.rb +80 -0
  53. data/lib/rbs/cli.rb +151 -16
  54. data/lib/rbs/collection/config/lockfile.rb +0 -25
  55. data/lib/rbs/collection/config/lockfile_generator.rb +0 -6
  56. data/lib/rbs/collection/installer.rb +1 -1
  57. data/lib/rbs/collection/sources/git.rb +6 -4
  58. data/lib/rbs/collection/sources/local.rb +7 -5
  59. data/lib/rbs/diff.rb +104 -0
  60. data/lib/rbs/environment.rb +1 -1
  61. data/lib/rbs/method_type.rb +23 -0
  62. data/lib/rbs/prototype/rb.rb +2 -9
  63. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  64. data/lib/rbs/prototype/runtime/value_object_generator.rb +236 -0
  65. data/lib/rbs/prototype/runtime.rb +234 -150
  66. data/lib/rbs/sorter.rb +144 -117
  67. data/lib/rbs/test/guaranteed.rb +31 -0
  68. data/lib/rbs/test/type_check.rb +4 -4
  69. data/lib/rbs/test.rb +3 -0
  70. data/lib/rbs/types.rb +184 -3
  71. data/lib/rbs/version.rb +1 -1
  72. data/lib/rbs/writer.rb +4 -4
  73. data/lib/rbs.rb +1 -0
  74. data/rbs.gemspec +1 -0
  75. data/sig/annotate/formatter.rbs +2 -2
  76. data/sig/annotate/rdoc_annotater.rbs +1 -1
  77. data/sig/cli/colored_io.rbs +15 -0
  78. data/sig/cli/diff.rbs +21 -0
  79. data/sig/cli.rbs +2 -0
  80. data/sig/collection/config/lockfile.rbs +0 -6
  81. data/sig/diff.rbs +23 -0
  82. data/sig/errors.rbs +1 -5
  83. data/sig/method_types.rbs +6 -0
  84. data/sig/prototype/runtime.rbs +108 -0
  85. data/sig/rdoc/rbs.rbs +4 -0
  86. data/sig/shims/bundler.rbs +5 -0
  87. data/sig/sorter.rbs +23 -5
  88. data/sig/types.rbs +29 -0
  89. data/stdlib/benchmark/0/benchmark.rbs +1 -1
  90. data/stdlib/cgi/0/core.rbs +2 -2
  91. data/stdlib/did_you_mean/0/did_you_mean.rbs +2 -2
  92. data/stdlib/digest/0/digest.rbs +1 -1
  93. data/stdlib/fileutils/0/fileutils.rbs +1 -1
  94. data/stdlib/forwardable/0/forwardable.rbs +4 -4
  95. data/stdlib/io-console/0/io-console.rbs +1 -1
  96. data/stdlib/json/0/json.rbs +37 -0
  97. data/stdlib/logger/0/logger.rbs +2 -2
  98. data/stdlib/net-http/0/manifest.yaml +1 -1
  99. data/stdlib/net-http/0/net-http.rbs +16 -63
  100. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  101. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  102. data/stdlib/openssl/0/openssl.rbs +1 -1
  103. data/stdlib/pp/0/manifest.yaml +2 -0
  104. data/stdlib/pp/0/pp.rbs +301 -0
  105. data/stdlib/{yaml → psych}/0/dbm.rbs +3 -3
  106. data/stdlib/psych/0/manifest.yaml +3 -0
  107. data/stdlib/psych/0/psych.rbs +391 -0
  108. data/stdlib/{yaml → psych}/0/store.rbs +2 -2
  109. data/stdlib/rdoc/0/code_object.rbs +55 -0
  110. data/stdlib/rdoc/0/comment.rbs +60 -0
  111. data/stdlib/rdoc/0/context.rbs +153 -0
  112. data/stdlib/rdoc/0/markup.rbs +119 -0
  113. data/stdlib/rdoc/0/parser.rbs +56 -0
  114. data/stdlib/rdoc/0/rdoc.rbs +0 -372
  115. data/stdlib/rdoc/0/ri.rbs +17 -0
  116. data/stdlib/rdoc/0/store.rbs +48 -0
  117. data/stdlib/rdoc/0/top_level.rbs +97 -0
  118. data/stdlib/socket/0/basic_socket.rbs +1 -1
  119. data/stdlib/socket/0/socket.rbs +1 -1
  120. data/stdlib/uri/0/common.rbs +1 -1
  121. data/stdlib/yaml/0/manifest.yaml +1 -2
  122. data/stdlib/yaml/0/yaml.rbs +1 -199
  123. metadata +46 -9
  124. data/sig/shims/pp.rbs +0 -3
  125. data/sig/shims.rbs +0 -47
@@ -0,0 +1,391 @@
1
+ # <!-- rdoc-file=ext/psych/lib/psych.rb -->
2
+ # # Overview
3
+ #
4
+ # Psych is a YAML parser and emitter. Psych leverages libyaml [Home page:
5
+ # https://pyyaml.org/wiki/LibYAML] or [git repo:
6
+ # https://github.com/yaml/libyaml] for its YAML parsing and emitting
7
+ # capabilities. In addition to wrapping libyaml, Psych also knows how to
8
+ # serialize and de-serialize most Ruby objects to and from the YAML format.
9
+ #
10
+ # # I NEED TO PARSE OR EMIT YAML RIGHT NOW!
11
+ #
12
+ # # Parse some YAML
13
+ # Psych.load("--- foo") # => "foo"
14
+ #
15
+ # # Emit some YAML
16
+ # Psych.dump("foo") # => "--- foo\n...\n"
17
+ # { :a => 'b'}.to_yaml # => "---\n:a: b\n"
18
+ #
19
+ # Got more time on your hands? Keep on reading!
20
+ #
21
+ # ## YAML Parsing
22
+ #
23
+ # Psych provides a range of interfaces for parsing a YAML document ranging from
24
+ # low level to high level, depending on your parsing needs. At the lowest
25
+ # level, is an event based parser. Mid level is access to the raw YAML AST, and
26
+ # at the highest level is the ability to unmarshal YAML to Ruby objects.
27
+ #
28
+ # ## YAML Emitting
29
+ #
30
+ # Psych provides a range of interfaces ranging from low to high level for
31
+ # producing YAML documents. Very similar to the YAML parsing interfaces, Psych
32
+ # provides at the lowest level, an event based system, mid-level is building a
33
+ # YAML AST, and the highest level is converting a Ruby object straight to a YAML
34
+ # document.
35
+ #
36
+ # ## High-level API
37
+ #
38
+ # ### Parsing
39
+ #
40
+ # The high level YAML parser provided by Psych simply takes YAML as input and
41
+ # returns a Ruby data structure. For information on using the high level parser
42
+ # see Psych.load
43
+ #
44
+ # #### Reading from a string
45
+ #
46
+ # Psych.safe_load("--- a") # => 'a'
47
+ # Psych.safe_load("---\n - a\n - b") # => ['a', 'b']
48
+ # # From a trusted string:
49
+ # Psych.load("--- !ruby/range\nbegin: 0\nend: 42\nexcl: false\n") # => 0..42
50
+ #
51
+ # #### Reading from a file
52
+ #
53
+ # Psych.safe_load_file("data.yml", permitted_classes: [Date])
54
+ # Psych.load_file("trusted_database.yml")
55
+ #
56
+ # #### Exception handling
57
+ #
58
+ # begin
59
+ # # The second argument changes only the exception contents
60
+ # Psych.parse("--- `", "file.txt")
61
+ # rescue Psych::SyntaxError => ex
62
+ # ex.file # => 'file.txt'
63
+ # ex.message # => "(file.txt): found character that cannot start any token"
64
+ # end
65
+ #
66
+ # ### Emitting
67
+ #
68
+ # The high level emitter has the easiest interface. Psych simply takes a Ruby
69
+ # data structure and converts it to a YAML document. See Psych.dump for more
70
+ # information on dumping a Ruby data structure.
71
+ #
72
+ # #### Writing to a string
73
+ #
74
+ # # Dump an array, get back a YAML string
75
+ # Psych.dump(['a', 'b']) # => "---\n- a\n- b\n"
76
+ #
77
+ # # Dump an array to an IO object
78
+ # Psych.dump(['a', 'b'], StringIO.new) # => #<StringIO:0x000001009d0890>
79
+ #
80
+ # # Dump an array with indentation set
81
+ # Psych.dump(['a', ['b']], :indentation => 3) # => "---\n- a\n- - b\n"
82
+ #
83
+ # # Dump an array to an IO with indentation set
84
+ # Psych.dump(['a', ['b']], StringIO.new, :indentation => 3)
85
+ #
86
+ # #### Writing to a file
87
+ #
88
+ # Currently there is no direct API for dumping Ruby structure to file:
89
+ #
90
+ # File.open('database.yml', 'w') do |file|
91
+ # file.write(Psych.dump(['a', 'b']))
92
+ # end
93
+ #
94
+ # ## Mid-level API
95
+ #
96
+ # ### Parsing
97
+ #
98
+ # Psych provides access to an AST produced from parsing a YAML document. This
99
+ # tree is built using the Psych::Parser and Psych::TreeBuilder. The AST can be
100
+ # examined and manipulated freely. Please see Psych::parse_stream,
101
+ # Psych::Nodes, and Psych::Nodes::Node for more information on dealing with YAML
102
+ # syntax trees.
103
+ #
104
+ # #### Reading from a string
105
+ #
106
+ # # Returns Psych::Nodes::Stream
107
+ # Psych.parse_stream("---\n - a\n - b")
108
+ #
109
+ # # Returns Psych::Nodes::Document
110
+ # Psych.parse("---\n - a\n - b")
111
+ #
112
+ # #### Reading from a file
113
+ #
114
+ # # Returns Psych::Nodes::Stream
115
+ # Psych.parse_stream(File.read('database.yml'))
116
+ #
117
+ # # Returns Psych::Nodes::Document
118
+ # Psych.parse_file('database.yml')
119
+ #
120
+ # #### Exception handling
121
+ #
122
+ # begin
123
+ # # The second argument changes only the exception contents
124
+ # Psych.parse("--- `", "file.txt")
125
+ # rescue Psych::SyntaxError => ex
126
+ # ex.file # => 'file.txt'
127
+ # ex.message # => "(file.txt): found character that cannot start any token"
128
+ # end
129
+ #
130
+ # ### Emitting
131
+ #
132
+ # At the mid level is building an AST. This AST is exactly the same as the AST
133
+ # used when parsing a YAML document. Users can build an AST by hand and the AST
134
+ # knows how to emit itself as a YAML document. See Psych::Nodes,
135
+ # Psych::Nodes::Node, and Psych::TreeBuilder for more information on building a
136
+ # YAML AST.
137
+ #
138
+ # #### Writing to a string
139
+ #
140
+ # # We need Psych::Nodes::Stream (not Psych::Nodes::Document)
141
+ # stream = Psych.parse_stream("---\n - a\n - b")
142
+ #
143
+ # stream.to_yaml # => "---\n- a\n- b\n"
144
+ #
145
+ # #### Writing to a file
146
+ #
147
+ # # We need Psych::Nodes::Stream (not Psych::Nodes::Document)
148
+ # stream = Psych.parse_stream(File.read('database.yml'))
149
+ #
150
+ # File.open('database.yml', 'w') do |file|
151
+ # file.write(stream.to_yaml)
152
+ # end
153
+ #
154
+ # ## Low-level API
155
+ #
156
+ # ### Parsing
157
+ #
158
+ # The lowest level parser should be used when the YAML input is already known,
159
+ # and the developer does not want to pay the price of building an AST or
160
+ # automatic detection and conversion to Ruby objects. See Psych::Parser for
161
+ # more information on using the event based parser.
162
+ #
163
+ # #### Reading to Psych::Nodes::Stream structure
164
+ #
165
+ # parser = Psych::Parser.new(TreeBuilder.new) # => #<Psych::Parser>
166
+ # parser = Psych.parser # it's an alias for the above
167
+ #
168
+ # parser.parse("---\n - a\n - b") # => #<Psych::Parser>
169
+ # parser.handler # => #<Psych::TreeBuilder>
170
+ # parser.handler.root # => #<Psych::Nodes::Stream>
171
+ #
172
+ # #### Receiving an events stream
173
+ #
174
+ # recorder = Psych::Handlers::Recorder.new
175
+ # parser = Psych::Parser.new(recorder)
176
+ #
177
+ # parser.parse("---\n - a\n - b")
178
+ # recorder.events # => [list of [event, args] lists]
179
+ # # event is one of: Psych::Handler::EVENTS
180
+ # # args are the arguments passed to the event
181
+ #
182
+ # ### Emitting
183
+ #
184
+ # The lowest level emitter is an event based system. Events are sent to a
185
+ # Psych::Emitter object. That object knows how to convert the events to a YAML
186
+ # document. This interface should be used when document format is known in
187
+ # advance or speed is a concern. See Psych::Emitter for more information.
188
+ #
189
+ # #### Writing to a Ruby structure
190
+ #
191
+ # Psych.parser.parse("--- a") # => #<Psych::Parser>
192
+ #
193
+ # parser.handler.first # => #<Psych::Nodes::Stream>
194
+ # parser.handler.first.to_ruby # => ["a"]
195
+ #
196
+ # parser.handler.root.first # => #<Psych::Nodes::Document>
197
+ # parser.handler.root.first.to_ruby # => "a"
198
+ #
199
+ # # You can instantiate an Emitter manually
200
+ # Psych::Visitors::ToRuby.new.accept(parser.handler.root.first)
201
+ # # => "a"
202
+ #
203
+ module Psych
204
+ # <!--
205
+ # rdoc-file=ext/psych/lib/psych.rb
206
+ # - Psych.dump(o) -> string of yaml
207
+ # - Psych.dump(o, options) -> string of yaml
208
+ # - Psych.dump(o, io) -> io object passed in
209
+ # - Psych.dump(o, io, options) -> io object passed in
210
+ # -->
211
+ # Dump Ruby object `o` to a YAML string. Optional `options` may be passed in to
212
+ # control the output format. If an IO object is passed in, the YAML will be
213
+ # dumped to that IO object.
214
+ #
215
+ # Currently supported options are:
216
+ #
217
+ # `:indentation`
218
+ # : Number of space characters used to indent. Acceptable value should be in
219
+ # `0..9` range, otherwise option is ignored.
220
+ #
221
+ # Default: `2`.
222
+ # `:line_width`
223
+ # : Max character to wrap line at.
224
+ #
225
+ # Default: `0` (meaning "wrap at 81").
226
+ # `:canonical`
227
+ # : Write "canonical" YAML form (very verbose, yet strictly formal).
228
+ #
229
+ # Default: `false`.
230
+ # `:header`
231
+ # : Write `%YAML [version]` at the beginning of document.
232
+ #
233
+ # Default: `false`.
234
+ #
235
+ #
236
+ # Example:
237
+ #
238
+ # # Dump an array, get back a YAML string
239
+ # Psych.dump(['a', 'b']) # => "---\n- a\n- b\n"
240
+ #
241
+ # # Dump an array to an IO object
242
+ # Psych.dump(['a', 'b'], StringIO.new) # => #<StringIO:0x000001009d0890>
243
+ #
244
+ # # Dump an array with indentation set
245
+ # Psych.dump(['a', ['b']], indentation: 3) # => "---\n- a\n- - b\n"
246
+ #
247
+ # # Dump an array to an IO with indentation set
248
+ # Psych.dump(['a', ['b']], StringIO.new, indentation: 3)
249
+ #
250
+ %a{annotate:rdoc:copy:Psych.dump}
251
+ def self.dump: (untyped o, ?indentation: Integer, ?line_width: Integer, ?canonical: bool, ?header: bool) -> String
252
+ | [IO] (untyped o, IO, ?indentation: Integer, ?line_width: Integer, ?canonical: bool, ?header: bool) -> IO
253
+
254
+ # <!--
255
+ # rdoc-file=ext/psych/lib/psych.rb
256
+ # - load(yaml, permitted_classes: [Symbol], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false)
257
+ # -->
258
+ # Load `yaml` in to a Ruby data structure. If multiple documents are provided,
259
+ # the object contained in the first document will be returned. `filename` will
260
+ # be used in the exception message if any exception is raised while parsing. If
261
+ # `yaml` is empty, it returns the specified `fallback` return value, which
262
+ # defaults to `false`.
263
+ #
264
+ # Raises a Psych::SyntaxError when a YAML syntax error is detected.
265
+ #
266
+ # Example:
267
+ #
268
+ # Psych.load("--- a") # => 'a'
269
+ # Psych.load("---\n - a\n - b") # => ['a', 'b']
270
+ #
271
+ # begin
272
+ # Psych.load("--- `", filename: "file.txt")
273
+ # rescue Psych::SyntaxError => ex
274
+ # ex.file # => 'file.txt'
275
+ # ex.message # => "(file.txt): found character that cannot start any token"
276
+ # end
277
+ #
278
+ # When the optional `symbolize_names` keyword argument is set to a true value,
279
+ # returns symbols for keys in Hash objects (default: strings).
280
+ #
281
+ # Psych.load("---\n foo: bar") # => {"foo"=>"bar"}
282
+ # Psych.load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"}
283
+ #
284
+ # Raises a TypeError when `yaml` parameter is NilClass. This method is similar
285
+ # to `safe_load` except that `Symbol` objects are allowed by default.
286
+ #
287
+ %a{annotate:rdoc:copy:Psych.load}
288
+ def self.load: (String yaml, ?filename: String | _ToStr | _ToS?, ?fallback: untyped, ?symbolize_names: bool, ?freeze: bool) -> untyped
289
+
290
+ # <!--
291
+ # rdoc-file=ext/psych/lib/psych.rb
292
+ # - load_file(filename, **kwargs)
293
+ # -->
294
+ # Loads the document contained in `filename`. Returns the yaml contained in
295
+ # `filename` as a Ruby object, or if the file is empty, it returns the specified
296
+ # `fallback` return value, which defaults to `false`. See load for options.
297
+ #
298
+ %a{annotate:rdoc:copy:Psych.load_file}
299
+ def self.load_file: (string | _ToPath, ?fallback: untyped, ?symbolize_names: bool, ?freeze: bool) -> untyped
300
+
301
+ # <!--
302
+ # rdoc-file=ext/psych/lib/psych.rb
303
+ # - safe_load(yaml, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false)
304
+ # -->
305
+ # Safely load the yaml string in `yaml`. By default, only the following classes
306
+ # are allowed to be deserialized:
307
+ #
308
+ # * TrueClass
309
+ # * FalseClass
310
+ # * NilClass
311
+ # * Integer
312
+ # * Float
313
+ # * String
314
+ # * Array
315
+ # * Hash
316
+ #
317
+ #
318
+ # Recursive data structures are not allowed by default. Arbitrary classes can
319
+ # be allowed by adding those classes to the `permitted_classes` keyword
320
+ # argument. They are additive. For example, to allow Date deserialization:
321
+ #
322
+ # Psych.safe_load(yaml, permitted_classes: [Date])
323
+ #
324
+ # Now the Date class can be loaded in addition to the classes listed above.
325
+ #
326
+ # Aliases can be explicitly allowed by changing the `aliases` keyword argument.
327
+ # For example:
328
+ #
329
+ # x = []
330
+ # x << x
331
+ # yaml = Psych.dump x
332
+ # Psych.safe_load yaml # => raises an exception
333
+ # Psych.safe_load yaml, aliases: true # => loads the aliases
334
+ #
335
+ # A Psych::DisallowedClass exception will be raised if the yaml contains a class
336
+ # that isn't in the `permitted_classes` list.
337
+ #
338
+ # A Psych::AliasesNotEnabled exception will be raised if the yaml contains
339
+ # aliases but the `aliases` keyword argument is set to false.
340
+ #
341
+ # `filename` will be used in the exception message if any exception is raised
342
+ # while parsing.
343
+ #
344
+ # When the optional `symbolize_names` keyword argument is set to a true value,
345
+ # returns symbols for keys in Hash objects (default: strings).
346
+ #
347
+ # Psych.safe_load("---\n foo: bar") # => {"foo"=>"bar"}
348
+ # Psych.safe_load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"}
349
+ #
350
+ %a{annotate:rdoc:copy:Psych.safe_load}
351
+ def self.safe_load: (String yaml, ?permitted_classes: Array[Class], ?permitted_symbols: Array[Symbol], ?aliases: bool, ?filename: String | _ToStr | _ToS?, ?fallback: untyped, ?symbolize_names: bool, ?freeze: bool) -> untyped
352
+
353
+ # <!--
354
+ # rdoc-file=ext/psych/lib/psych.rb
355
+ # - unsafe_load(yaml, filename: nil, fallback: false, symbolize_names: false, freeze: false, strict_integer: false)
356
+ # -->
357
+ # Load `yaml` in to a Ruby data structure. If multiple documents are provided,
358
+ # the object contained in the first document will be returned. `filename` will
359
+ # be used in the exception message if any exception is raised while parsing. If
360
+ # `yaml` is empty, it returns the specified `fallback` return value, which
361
+ # defaults to `false`.
362
+ #
363
+ # Raises a Psych::SyntaxError when a YAML syntax error is detected.
364
+ #
365
+ # Example:
366
+ #
367
+ # Psych.unsafe_load("--- a") # => 'a'
368
+ # Psych.unsafe_load("---\n - a\n - b") # => ['a', 'b']
369
+ #
370
+ # begin
371
+ # Psych.unsafe_load("--- `", filename: "file.txt")
372
+ # rescue Psych::SyntaxError => ex
373
+ # ex.file # => 'file.txt'
374
+ # ex.message # => "(file.txt): found character that cannot start any token"
375
+ # end
376
+ #
377
+ # When the optional `symbolize_names` keyword argument is set to a true value,
378
+ # returns symbols for keys in Hash objects (default: strings).
379
+ #
380
+ # Psych.unsafe_load("---\n foo: bar") # => {"foo"=>"bar"}
381
+ # Psych.unsafe_load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"}
382
+ #
383
+ # Raises a TypeError when `yaml` parameter is NilClass
384
+ #
385
+ # NOTE: This method *should not* be used to parse untrusted documents, such as
386
+ # YAML documents that are supplied via user input. Instead, please use the load
387
+ # method or the safe_load method.
388
+ #
389
+ %a{annotate:rdoc:copy:Psych.unsafe_load}
390
+ def self.unsafe_load: (String yaml, ?filename: String | _ToStr | _ToS?, ?fallback: untyped, ?symbolize_names: bool, ?freeze: bool, ?strict_integer: bool) -> untyped
391
+ end
@@ -30,7 +30,7 @@
30
30
  # greeting:
31
31
  # hello: world
32
32
  #
33
- class YAML::Store < ::PStore
33
+ class Psych::Store < ::PStore
34
34
  # <!--
35
35
  # rdoc-file=lib/yaml/store.rb
36
36
  # - initialize( file_name, yaml_opts = {} )
@@ -45,7 +45,7 @@ class YAML::Store < ::PStore
45
45
  # Options passed in through `yaml_opts` will be used when converting the store
46
46
  # to YAML via Hash#to_yaml().
47
47
  #
48
- def initialize: (*untyped o) -> YAML::Store
48
+ def initialize: (*untyped o) -> Psych::Store
49
49
 
50
50
  def dump: (untyped table) -> String
51
51
 
@@ -0,0 +1,55 @@
1
+ %a{annotate:rdoc:skip}
2
+ module RDoc
3
+ # <!-- rdoc-file=lib/rdoc/code_object.rb -->
4
+ # Base class for the RDoc code tree.
5
+ #
6
+ # We contain the common stuff for contexts (which are containers) and other
7
+ # elements (methods, attributes and so on)
8
+ #
9
+ # Here's the tree of the CodeObject subclasses:
10
+ #
11
+ # * RDoc::Context
12
+ # * RDoc::TopLevel
13
+ # * RDoc::ClassModule
14
+ # * RDoc::AnonClass (never used so far)
15
+ # * RDoc::NormalClass
16
+ # * RDoc::NormalModule
17
+ # * RDoc::SingleClass
18
+ #
19
+ #
20
+ # * RDoc::MethodAttr
21
+ # * RDoc::Attr
22
+ # * RDoc::AnyMethod
23
+ # * RDoc::GhostMethod
24
+ # * RDoc::MetaMethod
25
+ #
26
+ #
27
+ # * RDoc::Alias
28
+ # * RDoc::Constant
29
+ # * RDoc::Mixin
30
+ # * RDoc::Require
31
+ # * RDoc::Include
32
+ #
33
+ class CodeObject
34
+ # <!-- rdoc-file=lib/rdoc/code_object.rb -->
35
+ # Our comment
36
+ #
37
+ attr_reader comment: Markup::Document | Comment | String
38
+
39
+ # <!--
40
+ # rdoc-file=lib/rdoc/code_object.rb
41
+ # - new()
42
+ # -->
43
+ # Creates a new CodeObject that will document itself and its children
44
+ #
45
+ def initialize: () -> void
46
+
47
+ # <!--
48
+ # rdoc-file=lib/rdoc/code_object.rb
49
+ # - comment=(comment)
50
+ # -->
51
+ # Replaces our comment with `comment`, unless it is empty.
52
+ #
53
+ def comment=: (Markup::Document | Comment | String | nil) -> (Markup::Document | Comment | String)
54
+ end
55
+ end
@@ -0,0 +1,60 @@
1
+ %a{annotate:rdoc:skip}
2
+ module RDoc
3
+ # <!-- rdoc-file=lib/rdoc/comment.rb -->
4
+ # A comment holds the text comment for a RDoc::CodeObject and provides a unified
5
+ # way of cleaning it up and parsing it into an RDoc::Markup::Document.
6
+ #
7
+ # Each comment may have a different markup format set by #format=. By default
8
+ # 'rdoc' is used. The :markup: directive tells RDoc which format to use.
9
+ #
10
+ # See RDoc::Markup@Other+directives for instructions on adding an alternate
11
+ # format.
12
+ #
13
+ class Comment
14
+ # <!-- rdoc-file=lib/rdoc/comment.rb -->
15
+ # The format of this comment. Defaults to RDoc::Markup
16
+ #
17
+ attr_reader format: String
18
+
19
+ # <!-- rdoc-file=lib/rdoc/comment.rb -->
20
+ # The RDoc::TopLevel this comment was found in
21
+ #
22
+ attr_accessor location: String
23
+
24
+ # <!--
25
+ # rdoc-file=lib/rdoc/comment.rb
26
+ # - new(text = nil, location = nil, language = nil)
27
+ # -->
28
+ # Creates a new comment with `text` that is found in the RDoc::TopLevel
29
+ # `location`.
30
+ #
31
+ def initialize: (?String? text, ?RDoc::Context? location, ?String? language) -> void
32
+
33
+ # <!--
34
+ # rdoc-file=lib/rdoc/comment.rb
35
+ # - format=(format)
36
+ # -->
37
+ # Sets the format of this comment and resets any parsed document
38
+ #
39
+ def format=: (String format) -> void
40
+
41
+ def normalized?: () -> bool
42
+
43
+ # <!--
44
+ # rdoc-file=lib/rdoc/comment.rb
45
+ # - normalize()
46
+ # -->
47
+ # Normalizes the text. See RDoc::Text#normalize_comment for details
48
+ #
49
+ def normalize: () -> self
50
+
51
+ # <!--
52
+ # rdoc-file=lib/rdoc/comment.rb
53
+ # - parse()
54
+ # -->
55
+ # Parses the comment into an RDoc::Markup::Document. The parsed document is
56
+ # cached until the text is changed.
57
+ #
58
+ def parse: () -> Markup::Document
59
+ end
60
+ end
@@ -0,0 +1,153 @@
1
+ %a{annotate:rdoc:skip}
2
+ module RDoc
3
+ # <!-- rdoc-file=lib/rdoc/context.rb -->
4
+ # A Context is something that can hold modules, classes, methods, attributes,
5
+ # aliases, requires, and includes. Classes, modules, and files are all Contexts.
6
+ #
7
+ class Context < CodeObject
8
+ include Comparable
9
+
10
+ # <!-- rdoc-file=lib/rdoc/context.rb -->
11
+ # Types of methods
12
+ #
13
+ TYPES: ::Array["class" | "instance"]
14
+
15
+ TOMDOC_TITLES: ::Array[nil | "Public" | "Internal" | "Deprecated"]
16
+
17
+ type class_types = singleton(RDoc::NormalClass) | singleton(RDoc::SingleClass)
18
+
19
+ # <!--
20
+ # rdoc-file=lib/rdoc/context.rb
21
+ # - new()
22
+ # -->
23
+ # Creates an unnamed empty context with public current visibility
24
+ #
25
+ def initialize: () -> void
26
+
27
+ # <!--
28
+ # rdoc-file=lib/rdoc/context.rb
29
+ # - add_alias(an_alias)
30
+ # -->
31
+ # Adds `an_alias` that is automatically resolved
32
+ #
33
+ def add_alias: (RDoc::Alias an_alias) -> RDoc::Alias
34
+
35
+ # <!--
36
+ # rdoc-file=lib/rdoc/context.rb
37
+ # - add_attribute(attribute)
38
+ # -->
39
+ # Adds `attribute` if not already there. If it is (as method(s) or attribute),
40
+ # updates the comment if it was empty.
41
+ #
42
+ # The attribute is registered only if it defines a new method. For instance,
43
+ # `attr_reader :foo` will not be registered if method `foo` exists, but
44
+ # `attr_accessor :foo` will be registered if method `foo` exists, but `foo=`
45
+ # does not.
46
+ #
47
+ def add_attribute: (RDoc::Attr attribute) -> RDoc::Attr
48
+
49
+ # <!--
50
+ # rdoc-file=lib/rdoc/context.rb
51
+ # - add_class(class_type, given_name, superclass = '::Object')
52
+ # -->
53
+ # Adds a class named `given_name` with `superclass`.
54
+ #
55
+ # Both `given_name` and `superclass` may contain '::', and are interpreted
56
+ # relative to the `self` context. This allows handling correctly examples like
57
+ # these:
58
+ # class RDoc::Gauntlet < Gauntlet
59
+ # module Mod
60
+ # class Object # implies < ::Object
61
+ # class SubObject < Object # this is _not_ ::Object
62
+ #
63
+ # Given `class Container::Item` RDoc assumes `Container` is a module unless it
64
+ # later sees `class Container`. `add_class` automatically upgrades `given_name`
65
+ # to a class in this case.
66
+ #
67
+ def add_class: (class_types class_type, ::String given_name, ?::String superclass) -> (RDoc::NormalClass | RDoc::SingleClass)
68
+
69
+ # <!--
70
+ # rdoc-file=lib/rdoc/context.rb
71
+ # - add_constant(constant)
72
+ # -->
73
+ # Adds `constant` if not already there. If it is, updates the comment, value
74
+ # and/or is_alias_for of the known constant if they were empty/nil.
75
+ #
76
+ def add_constant: (RDoc::Constant constant) -> RDoc::Constant
77
+
78
+ # <!--
79
+ # rdoc-file=lib/rdoc/context.rb
80
+ # - add_include(include)
81
+ # -->
82
+ # Adds included module `include` which should be an RDoc::Include
83
+ #
84
+ def add_include: (RDoc::Include `include`) -> RDoc::Include
85
+
86
+ # <!--
87
+ # rdoc-file=lib/rdoc/context.rb
88
+ # - add_extend(ext)
89
+ # -->
90
+ # Adds extension module `ext` which should be an RDoc::Extend
91
+ #
92
+ def add_extend: (RDoc::Extend ext) -> RDoc::Extend
93
+
94
+ # <!--
95
+ # rdoc-file=lib/rdoc/context.rb
96
+ # - add_method(method)
97
+ # -->
98
+ # Adds `method` if not already there. If it is (as method or attribute), updates
99
+ # the comment if it was empty.
100
+ #
101
+ def add_method: (RDoc::AnyMethod method) -> RDoc::AnyMethod
102
+
103
+ # <!--
104
+ # rdoc-file=lib/rdoc/context.rb
105
+ # - add_module(class_type, name)
106
+ # -->
107
+ # Adds a module named `name`. If RDoc already knows `name` is a class then that
108
+ # class is returned instead. See also #add_class.
109
+ #
110
+ def add_module: (singleton(RDoc::NormalModule) class_type, String name) -> RDoc::NormalModule
111
+
112
+ # <!-- rdoc-file=lib/rdoc/context.rb -->
113
+ # All attr* methods
114
+ #
115
+ def attributes: () -> Array[Attr]
116
+
117
+ # <!-- rdoc-file=lib/rdoc/context.rb -->
118
+ # Constants defined
119
+ #
120
+ def constants: () -> Array[Constant]
121
+
122
+ # <!--
123
+ # rdoc-file=lib/rdoc/context.rb
124
+ # - find_module_named(name)
125
+ # -->
126
+ # Find a module with `name` using ruby's scoping rules
127
+ #
128
+ def find_module_named: (untyped name) -> (untyped | self)
129
+
130
+ # <!--
131
+ # rdoc-file=lib/rdoc/context.rb
132
+ # - full_name()
133
+ # -->
134
+ # The full name for this context. This method is overridden by subclasses.
135
+ #
136
+ def full_name: () -> "(unknown)"
137
+
138
+ # <!-- rdoc-file=lib/rdoc/context.rb -->
139
+ # Methods defined in this context
140
+ #
141
+ def method_list: () -> Array[AnyMethod]
142
+
143
+ def to_s: () -> ::String
144
+
145
+ # <!--
146
+ # rdoc-file=lib/rdoc/context.rb
147
+ # - top_level()
148
+ # -->
149
+ # Return the TopLevel that owns us
150
+ #
151
+ def top_level: () -> RDoc::TopLevel
152
+ end
153
+ end