rbs 3.10.4 → 4.0.0

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 (267) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +14 -14
  3. data/.github/workflows/bundle-update.yml +60 -0
  4. data/.github/workflows/c-check.yml +7 -5
  5. data/.github/workflows/comments.yml +2 -2
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +16 -26
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +1 -1
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +2 -2
  12. data/.vscode/extensions.json +5 -0
  13. data/.vscode/settings.json +19 -0
  14. data/CHANGELOG.md +202 -2
  15. data/Rakefile +9 -23
  16. data/Steepfile +2 -0
  17. data/config.yml +457 -13
  18. data/core/array.rbs +218 -188
  19. data/core/basic_object.rbs +9 -8
  20. data/core/binding.rbs +0 -2
  21. data/core/builtin.rbs +2 -2
  22. data/core/class.rbs +6 -5
  23. data/core/comparable.rbs +45 -31
  24. data/core/complex.rbs +66 -55
  25. data/core/dir.rbs +57 -45
  26. data/core/encoding.rbs +6 -6
  27. data/core/enumerable.rbs +105 -91
  28. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  29. data/core/enumerator.rbs +24 -3
  30. data/core/errno.rbs +3 -2
  31. data/core/errors.rbs +31 -29
  32. data/core/exception.rbs +12 -12
  33. data/core/fiber.rbs +47 -36
  34. data/core/file.rbs +242 -169
  35. data/core/file_test.rbs +2 -2
  36. data/core/float.rbs +42 -68
  37. data/core/gc.rbs +78 -70
  38. data/core/hash.rbs +70 -60
  39. data/core/integer.rbs +32 -75
  40. data/core/io/buffer.rbs +36 -36
  41. data/core/io/wait.rbs +7 -7
  42. data/core/io.rbs +192 -146
  43. data/core/kernel.rbs +198 -147
  44. data/core/marshal.rbs +3 -3
  45. data/core/match_data.rbs +14 -12
  46. data/core/math.rbs +69 -67
  47. data/core/method.rbs +6 -8
  48. data/core/module.rbs +148 -88
  49. data/core/nil_class.rbs +4 -3
  50. data/core/numeric.rbs +53 -50
  51. data/core/object.rbs +6 -8
  52. data/core/object_space.rbs +11 -10
  53. data/core/pathname.rbs +131 -81
  54. data/core/proc.rbs +65 -34
  55. data/core/process.rbs +221 -201
  56. data/core/ractor.rbs +15 -11
  57. data/core/random.rbs +21 -3
  58. data/core/range.rbs +152 -49
  59. data/core/rational.rbs +5 -56
  60. data/core/rbs/unnamed/argf.rbs +58 -51
  61. data/core/rbs/unnamed/env_class.rbs +18 -13
  62. data/core/rbs/unnamed/main_class.rbs +123 -0
  63. data/core/rbs/unnamed/random.rbs +7 -116
  64. data/core/regexp.rbs +236 -197
  65. data/core/ruby.rbs +1 -1
  66. data/core/ruby_vm.rbs +32 -30
  67. data/core/rubygems/config_file.rbs +5 -5
  68. data/core/rubygems/errors.rbs +1 -1
  69. data/core/rubygems/requirement.rbs +5 -5
  70. data/core/rubygems/rubygems.rbs +5 -3
  71. data/core/set.rbs +17 -16
  72. data/core/signal.rbs +2 -2
  73. data/core/string.rbs +318 -298
  74. data/core/struct.rbs +26 -25
  75. data/core/symbol.rbs +25 -24
  76. data/core/thread.rbs +40 -41
  77. data/core/time.rbs +47 -42
  78. data/core/trace_point.rbs +34 -31
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +10 -10
  81. data/core/warning.rbs +7 -7
  82. data/docs/collection.md +1 -1
  83. data/docs/config.md +171 -0
  84. data/docs/inline.md +576 -0
  85. data/docs/syntax.md +46 -16
  86. data/docs/type_fingerprint.md +21 -0
  87. data/exe/rbs +1 -1
  88. data/ext/rbs_extension/ast_translation.c +595 -98
  89. data/ext/rbs_extension/class_constants.c +30 -0
  90. data/ext/rbs_extension/class_constants.h +15 -0
  91. data/ext/rbs_extension/legacy_location.c +30 -53
  92. data/ext/rbs_extension/legacy_location.h +37 -0
  93. data/ext/rbs_extension/main.c +125 -24
  94. data/include/rbs/ast.h +485 -150
  95. data/include/rbs/lexer.h +11 -4
  96. data/include/rbs/location.h +25 -44
  97. data/include/rbs/parser.h +20 -2
  98. data/include/rbs/util/rbs_constant_pool.h +0 -3
  99. data/include/rbs.h +8 -0
  100. data/lib/rbs/ast/annotation.rb +1 -1
  101. data/lib/rbs/ast/comment.rb +1 -1
  102. data/lib/rbs/ast/declarations.rb +10 -10
  103. data/lib/rbs/ast/members.rb +14 -14
  104. data/lib/rbs/ast/ruby/annotations.rb +409 -0
  105. data/lib/rbs/ast/ruby/comment_block.rb +245 -0
  106. data/lib/rbs/ast/ruby/declarations.rb +281 -0
  107. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  108. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  109. data/lib/rbs/ast/ruby/members.rb +723 -0
  110. data/lib/rbs/ast/type_param.rb +24 -4
  111. data/lib/rbs/buffer.rb +105 -20
  112. data/lib/rbs/cli/diff.rb +16 -15
  113. data/lib/rbs/cli/validate.rb +62 -125
  114. data/lib/rbs/cli.rb +55 -23
  115. data/lib/rbs/collection/config/lockfile_generator.rb +8 -4
  116. data/lib/rbs/collection/sources/git.rb +1 -0
  117. data/lib/rbs/collection.rb +0 -1
  118. data/lib/rbs/definition.rb +6 -1
  119. data/lib/rbs/definition_builder/ancestor_builder.rb +119 -63
  120. data/lib/rbs/definition_builder/method_builder.rb +65 -30
  121. data/lib/rbs/definition_builder.rb +177 -20
  122. data/lib/rbs/diff.rb +7 -1
  123. data/lib/rbs/environment/class_entry.rb +69 -0
  124. data/lib/rbs/environment/module_entry.rb +66 -0
  125. data/lib/rbs/environment.rb +338 -155
  126. data/lib/rbs/environment_loader.rb +2 -2
  127. data/lib/rbs/errors.rb +30 -20
  128. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  129. data/lib/rbs/inline_parser.rb +542 -0
  130. data/lib/rbs/location_aux.rb +36 -4
  131. data/lib/rbs/locator.rb +5 -1
  132. data/lib/rbs/method_type.rb +5 -3
  133. data/lib/rbs/namespace.rb +0 -7
  134. data/lib/rbs/parser_aux.rb +31 -8
  135. data/lib/rbs/prototype/helpers.rb +57 -0
  136. data/lib/rbs/prototype/rb.rb +3 -28
  137. data/lib/rbs/prototype/rbi.rb +3 -20
  138. data/lib/rbs/prototype/runtime.rb +10 -2
  139. data/lib/rbs/resolver/type_name_resolver.rb +0 -8
  140. data/lib/rbs/source.rb +99 -0
  141. data/lib/rbs/subtractor.rb +4 -3
  142. data/lib/rbs/test/type_check.rb +5 -2
  143. data/lib/rbs/type_name.rb +1 -8
  144. data/lib/rbs/types.rb +88 -78
  145. data/lib/rbs/unit_test/convertibles.rb +1 -0
  146. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  147. data/lib/rbs/validator.rb +2 -2
  148. data/lib/rbs/version.rb +1 -1
  149. data/lib/rbs.rb +12 -1
  150. data/rbs.gemspec +3 -2
  151. data/rust/.gitignore +1 -0
  152. data/rust/Cargo.lock +378 -0
  153. data/rust/Cargo.toml +7 -0
  154. data/rust/ruby-rbs/Cargo.toml +22 -0
  155. data/rust/ruby-rbs/build.rs +764 -0
  156. data/rust/ruby-rbs/examples/locations.rs +60 -0
  157. data/rust/ruby-rbs/src/lib.rs +1 -0
  158. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  159. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  160. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  161. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  162. data/rust/ruby-rbs-sys/build.rs +204 -0
  163. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  164. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  165. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  166. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  167. data/schema/typeParam.json +17 -1
  168. data/sig/ancestor_builder.rbs +1 -1
  169. data/sig/ast/ruby/annotations.rbs +421 -0
  170. data/sig/ast/ruby/comment_block.rbs +127 -0
  171. data/sig/ast/ruby/declarations.rbs +158 -0
  172. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  173. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  174. data/sig/ast/ruby/members.rbs +178 -0
  175. data/sig/buffer.rbs +63 -5
  176. data/sig/cli/diff.rbs +5 -11
  177. data/sig/cli/validate.rbs +12 -8
  178. data/sig/cli.rbs +18 -18
  179. data/sig/definition.rbs +6 -0
  180. data/sig/definition_builder.rbs +3 -1
  181. data/sig/environment/class_entry.rbs +50 -0
  182. data/sig/environment/module_entry.rbs +50 -0
  183. data/sig/environment.rbs +37 -81
  184. data/sig/errors.rbs +26 -20
  185. data/sig/inline_parser/comment_association.rbs +71 -0
  186. data/sig/inline_parser.rbs +124 -0
  187. data/sig/location.rbs +32 -7
  188. data/sig/locator.rbs +0 -2
  189. data/sig/method_builder.rbs +9 -4
  190. data/sig/namespace.rbs +0 -5
  191. data/sig/parser.rbs +47 -13
  192. data/sig/prototype/helpers.rbs +2 -0
  193. data/sig/resolver/type_name_resolver.rbs +0 -3
  194. data/sig/source.rbs +48 -0
  195. data/sig/type_param.rbs +13 -8
  196. data/sig/typename.rbs +0 -5
  197. data/sig/types.rbs +6 -7
  198. data/sig/unit_test/spy.rbs +0 -8
  199. data/sig/unit_test/type_assertions.rbs +11 -0
  200. data/src/ast.c +491 -143
  201. data/src/lexer.c +1552 -1314
  202. data/src/lexer.re +7 -0
  203. data/src/lexstate.c +8 -1
  204. data/src/location.c +8 -48
  205. data/src/parser.c +1107 -409
  206. data/src/util/rbs_constant_pool.c +0 -4
  207. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -16
  208. data/stdlib/cgi-escape/0/escape.rbs +4 -4
  209. data/stdlib/coverage/0/coverage.rbs +4 -3
  210. data/stdlib/date/0/date.rbs +33 -28
  211. data/stdlib/date/0/date_time.rbs +24 -23
  212. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  213. data/stdlib/digest/0/digest.rbs +110 -0
  214. data/stdlib/erb/0/erb.rbs +64 -53
  215. data/stdlib/etc/0/etc.rbs +55 -50
  216. data/stdlib/fileutils/0/fileutils.rbs +140 -126
  217. data/stdlib/forwardable/0/forwardable.rbs +10 -10
  218. data/stdlib/io-console/0/io-console.rbs +2 -2
  219. data/stdlib/json/0/json.rbs +158 -131
  220. data/stdlib/monitor/0/monitor.rbs +3 -3
  221. data/stdlib/net-http/0/net-http.rbs +159 -134
  222. data/stdlib/objspace/0/objspace.rbs +8 -30
  223. data/stdlib/open-uri/0/open-uri.rbs +8 -8
  224. data/stdlib/open3/0/open3.rbs +469 -10
  225. data/stdlib/openssl/0/openssl.rbs +144 -129
  226. data/stdlib/optparse/0/optparse.rbs +23 -14
  227. data/stdlib/pathname/0/pathname.rbs +2 -2
  228. data/stdlib/pp/0/pp.rbs +9 -8
  229. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  230. data/stdlib/pstore/0/pstore.rbs +35 -30
  231. data/stdlib/psych/0/psych.rbs +62 -9
  232. data/stdlib/psych/0/store.rbs +2 -4
  233. data/stdlib/pty/0/pty.rbs +9 -6
  234. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  235. data/stdlib/rdoc/0/code_object.rbs +2 -1
  236. data/stdlib/rdoc/0/parser.rbs +1 -1
  237. data/stdlib/rdoc/0/store.rbs +1 -1
  238. data/stdlib/ripper/0/ripper.rbs +20 -17
  239. data/stdlib/securerandom/0/manifest.yaml +2 -0
  240. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  241. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  242. data/stdlib/socket/0/addrinfo.rbs +9 -9
  243. data/stdlib/socket/0/basic_socket.rbs +3 -3
  244. data/stdlib/socket/0/ip_socket.rbs +10 -8
  245. data/stdlib/socket/0/socket.rbs +10 -9
  246. data/stdlib/socket/0/tcp_server.rbs +1 -1
  247. data/stdlib/socket/0/tcp_socket.rbs +1 -1
  248. data/stdlib/socket/0/udp_socket.rbs +1 -1
  249. data/stdlib/socket/0/unix_server.rbs +1 -1
  250. data/stdlib/stringio/0/stringio.rbs +55 -54
  251. data/stdlib/strscan/0/string_scanner.rbs +46 -44
  252. data/stdlib/tempfile/0/tempfile.rbs +24 -20
  253. data/stdlib/time/0/time.rbs +7 -5
  254. data/stdlib/tsort/0/tsort.rbs +7 -6
  255. data/stdlib/uri/0/common.rbs +31 -18
  256. data/stdlib/uri/0/file.rbs +2 -2
  257. data/stdlib/uri/0/generic.rbs +9 -2
  258. data/stdlib/uri/0/http.rbs +2 -2
  259. data/stdlib/uri/0/ldap.rbs +2 -2
  260. data/stdlib/uri/0/mailto.rbs +3 -3
  261. data/stdlib/uri/0/rfc2396_parser.rbs +6 -5
  262. data/stdlib/zlib/0/deflate.rbs +4 -3
  263. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  264. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  265. data/stdlib/zlib/0/inflate.rbs +1 -1
  266. data/stdlib/zlib/0/need_dict.rbs +1 -1
  267. metadata +66 -3
@@ -471,6 +471,116 @@ end
471
471
  class Digest::SHA1 < Digest::Base
472
472
  end
473
473
 
474
+ # <!-- rdoc-file=ext/digest/sha2/lib/sha2.rb -->
475
+ # A meta digest provider class for SHA256, SHA384 and SHA512.
476
+ #
477
+ # FIPS 180-2 describes SHA2 family of digest algorithms. It defines three
478
+ # algorithms:
479
+ # * one which works on chunks of 512 bits and returns a 256-bit digest
480
+ # (SHA256),
481
+ # * one which works on chunks of 1024 bits and returns a 384-bit digest
482
+ # (SHA384),
483
+ # * and one which works on chunks of 1024 bits and returns a 512-bit digest
484
+ # (SHA512).
485
+ #
486
+ # ## Examples
487
+ # require 'digest'
488
+ #
489
+ # # Compute a complete digest
490
+ # Digest::SHA2.hexdigest 'abc' # => "ba7816bf8..."
491
+ # Digest::SHA2.new(256).hexdigest 'abc' # => "ba7816bf8..."
492
+ # Digest::SHA256.hexdigest 'abc' # => "ba7816bf8..."
493
+ #
494
+ # Digest::SHA2.new(384).hexdigest 'abc' # => "cb00753f4..."
495
+ # Digest::SHA384.hexdigest 'abc' # => "cb00753f4..."
496
+ #
497
+ # Digest::SHA2.new(512).hexdigest 'abc' # => "ddaf35a19..."
498
+ # Digest::SHA512.hexdigest 'abc' # => "ddaf35a19..."
499
+ #
500
+ # # Compute digest by chunks
501
+ # sha2 = Digest::SHA2.new # =>#<Digest::SHA2:256>
502
+ # sha2.update "ab"
503
+ # sha2 << "c" # alias for #update
504
+ # sha2.hexdigest # => "ba7816bf8..."
505
+ #
506
+ # # Use the same object to compute another digest
507
+ # sha2.reset
508
+ # sha2 << "message"
509
+ # sha2.hexdigest # => "ab530a13e..."
510
+ #
511
+ class Digest::SHA2 < Digest::Class
512
+ # <!--
513
+ # rdoc-file=ext/digest/sha2/lib/sha2.rb
514
+ # - Digest::SHA2.new(bitlen = 256) -> digest_obj
515
+ # -->
516
+ # Create a new SHA2 hash object with a given bit length.
517
+ #
518
+ # Valid bit lengths are 256, 384 and 512.
519
+ #
520
+ def initialize: (?(256 | 384 | 512) bitlen) -> void
521
+
522
+ # <!--
523
+ # rdoc-file=ext/digest/sha2/lib/sha2.rb
524
+ # - digest_obj.reset -> digest_obj
525
+ # -->
526
+ # Reset the digest to the initial state and return self.
527
+ #
528
+ def reset: () -> self
529
+
530
+ # <!--
531
+ # rdoc-file=ext/digest/sha2/lib/sha2.rb
532
+ # - digest_obj.update(string) -> digest_obj
533
+ # - digest_obj << string -> digest_obj
534
+ # -->
535
+ # Update the digest using a given *string* and return self.
536
+ #
537
+ def update: (String) -> self
538
+
539
+ private def finish: () -> String
540
+
541
+ # <!--
542
+ # rdoc-file=ext/digest/sha2/lib/sha2.rb
543
+ # - <<(str)
544
+ # -->
545
+ #
546
+ alias << update
547
+
548
+ # <!--
549
+ # rdoc-file=ext/digest/sha2/lib/sha2.rb
550
+ # - digest_obj.block_length -> Integer
551
+ # -->
552
+ # Return the block length of the digest in bytes.
553
+ #
554
+ # Digest::SHA256.new.block_length * 8
555
+ # # => 512
556
+ # Digest::SHA384.new.block_length * 8
557
+ # # => 1024
558
+ # Digest::SHA512.new.block_length * 8
559
+ # # => 1024
560
+ #
561
+ def block_length: () -> Integer
562
+
563
+ # <!--
564
+ # rdoc-file=ext/digest/sha2/lib/sha2.rb
565
+ # - digest_obj.digest_length -> Integer
566
+ # -->
567
+ # Return the length of the hash value (the digest) in bytes.
568
+ #
569
+ # Digest::SHA256.new.digest_length * 8
570
+ # # => 256
571
+ # Digest::SHA384.new.digest_length * 8
572
+ # # => 384
573
+ # Digest::SHA512.new.digest_length * 8
574
+ # # => 512
575
+ #
576
+ # For example, digests produced by Digest::SHA256 will always be 32 bytes (256
577
+ # bits) in size.
578
+ #
579
+ def digest_length: () -> Integer
580
+
581
+ def initialize_copy: (untyped) -> untyped
582
+ end
583
+
474
584
  # <!-- rdoc-file=ext/digest/md5/md5init.c -->
475
585
  # A class for calculating message digests using the MD5 Message-Digest Algorithm
476
586
  # by RSA Data Security, Inc., described in RFC1321.
data/stdlib/erb/0/erb.rbs CHANGED
@@ -15,7 +15,8 @@
15
15
  # * You can call instance method ERB#result to get the *result*.
16
16
  # ERB supports tags of three kinds:
17
17
  # * [Expression tags](rdoc-ref:ERB@Expression+Tags):
18
- # each begins with `'<%='`, ends with `'%>'`; contains a Ruby expression;
18
+ # each begins with <code>'<%='</code>, ends with <code>'%>'</code>;
19
+ # contains a Ruby expression;
19
20
  # in the result, the value of the expression replaces the entire tag:
20
21
  # template = 'The magic word is <%= magic_word %>.'
21
22
  # erb = ERB.new(template)
@@ -24,20 +25,21 @@
24
25
  #
25
26
  # The above call to #result passes argument `binding`,
26
27
  # which contains the binding of variable `magic_word` to its string value
27
- # `'xyzzy'`.
28
+ # <code>'xyzzy'</code>.
28
29
  # The below call to #result need not pass a binding,
29
- # because its expression `Date::DAYNAMES` is globally defined.
30
+ # because its expression <code>Date::DAYNAMES</code> is globally defined.
30
31
  # ERB.new('Today is <%= Date::DAYNAMES[Date.today.wday] %>.').result # => "Today is Monday."
31
32
  #
32
33
  # * [Execution tags](rdoc-ref:ERB@Execution+Tags):
33
- # each begins with `'<%'`, ends with `'%>'`; contains Ruby code to be
34
- # executed:
34
+ # each begins with <code>'<%'</code>, ends with <code>'%>'</code>; contains
35
+ # Ruby code to be executed:
35
36
  # template = '<% File.write("t.txt", "Some stuff.") %>'
36
37
  # ERB.new(template).result
37
38
  # File.read('t.txt') # => "Some stuff."
38
39
  #
39
40
  # * [Comment tags](rdoc-ref:ERB@Comment+Tags):
40
- # each begins with `'<%#'`, ends with `'%>'`; contains comment text;
41
+ # each begins with <code>'<%#'</code>, ends with <code>'%>'</code>;
42
+ # contains comment text;
41
43
  # in the result, the entire tag is omitted.
42
44
  # template = 'Some stuff;<%# Note to self: figure out what the stuff is. %> more stuff.'
43
45
  # ERB.new(template).result # => "Some stuff; more stuff."
@@ -51,11 +53,11 @@
51
53
  #
52
54
  # Details:
53
55
  # 1. A plain-text string is assigned to variable `template`.
54
- # Its embedded [expression tag](rdoc-ref:ERB@Expression+Tags) `'<%=
55
- # Time.now %>'` includes a Ruby expression, `Time.now`.
56
+ # Its embedded [expression tag](rdoc-ref:ERB@Expression+Tags) <code>'<%=
57
+ # Time.now %>'</code> includes a Ruby expression, <code>Time.now</code>.
56
58
  # 2. The string is put into a new ERB object, and stored in variable `erb`.
57
- # 3. Method call `erb.result` generates a string that contains the run-time
58
- # value of `Time.now`,
59
+ # 3. Method call <code>erb.result</code> generates a string that contains the
60
+ # run-time value of <code>Time.now</code>,
59
61
  # as computed at the time of the call.
60
62
  # The
61
63
  # ERB object may be re-used:
@@ -71,13 +73,14 @@
71
73
  #
72
74
  # Details:
73
75
  # 1. As before, a plain-text string is assigned to variable `template`.
74
- # Its embedded [expression tag](rdoc-ref:ERB@Expression+Tags) `'<%=
75
- # magic_word %>'` has a variable *name*, `magic_word`.
76
+ # Its embedded [expression tag](rdoc-ref:ERB@Expression+Tags) <code>'<%=
77
+ # magic_word %>'</code> has a variable *name*, `magic_word`.
76
78
  # 2. The string is put into a new ERB object, and stored in variable `erb`;
77
79
  # note that `magic_word` need not be defined before the ERB object is
78
80
  # created.
79
- # 3. `magic_word = 'abracadabra'` assigns a value to variable `magic_word`.
80
- # 4. Method call `erb.result(binding)` generates a string
81
+ # 3. <code>magic_word = 'abracadabra'</code> assigns a value to variable
82
+ # `magic_word`.
83
+ # 4. Method call <code>erb.result(binding)</code> generates a string
81
84
  # that contains the *value* of `magic_word`.
82
85
  # As before, the ERB object may be re-used:
83
86
  # magic_word = 'xyzzy'
@@ -102,7 +105,7 @@
102
105
  # That binding is sufficient for an expression tag that refers only to Ruby's
103
106
  # constants and variables;
104
107
  # these expression tags refer only to Ruby's global constant `RUBY_COPYRIGHT`
105
- # and global variable `$0`:
108
+ # and global variable <code>$0</code>:
106
109
  # template = <<TEMPLATE
107
110
  # The Ruby copyright is <%= RUBY_COPYRIGHT.inspect %>.
108
111
  # The current process is <%= $0 %>.
@@ -181,7 +184,7 @@
181
184
  # in the result, the entire tag is to be omitted.
182
185
  # ### Expression Tags
183
186
  # You can embed a Ruby expression in a template using an *expression tag*.
184
- # Its syntax is `<%= *expression* %>`,
187
+ # Its syntax is <code><%= _expression_ %></code>,
185
188
  # where *expression* is any valid Ruby expression.
186
189
  # When you call method #result,
187
190
  # the method evaluates the expression and replaces the entire expression tag
@@ -203,7 +206,7 @@
203
206
  #
204
207
  # ### Execution Tags
205
208
  # You can embed Ruby executable code in template using an *execution tag*.
206
- # Its syntax is `<% *code* %>`,
209
+ # Its syntax is <code><% _code_ %></code>,
207
210
  # where *code* is any valid Ruby code.
208
211
  # When you call method #result,
209
212
  # the method executes the code and removes the entire execution tag
@@ -268,9 +271,10 @@
268
271
  # # => "\n* 0,0\n\n* 0,1\n\n* 0,2\n\n* 1,0\n\n* 1,1\n\n* 1,2\n\n* 2,0\n\n* 2,1\n\n* 2,2\n\n"
269
272
  #
270
273
  # #### Shorthand Format for Execution Tags
271
- # You can use keyword argument `trim_mode: '%'` to enable a shorthand format for
272
- # execution tags;
273
- # this example uses the shorthand format `% *code`* instead of `<% *code* %>`:
274
+ # You can use keyword argument <code>trim_mode: '%'</code> to enable a shorthand
275
+ # format for execution tags;
276
+ # this example uses the shorthand format <code>% _code_</code> instead of
277
+ # <code><% _code_ %></code>:
274
278
  # template = <<TEMPLATE
275
279
  # % priorities.each do |priority|
276
280
  # * <%= priority %>
@@ -285,8 +289,8 @@
285
289
  # * Document Modules
286
290
  # * Answer Questions on Ruby Talk
287
291
  #
288
- # Note that in the shorthand format, the character `'%'` must be the first
289
- # character in the code line
292
+ # Note that in the shorthand format, the character <code>'%'</code> must be the
293
+ # first character in the code line
290
294
  # (no leading whitespace).
291
295
  # #### Suppressing Unwanted Blank Lines
292
296
  # With keyword argument `trim_mode` not given,
@@ -301,8 +305,8 @@
301
305
  # "3.4.5\n"
302
306
  # "\n"
303
307
  #
304
- # You can give `trim_mode: '-'`, you can suppress each blank line
305
- # whose source line ends with `-%>` (instead of `%>`):
308
+ # You can give <code>trim_mode: '-'</code>, you can suppress each blank line
309
+ # whose source line ends with <code>-%></code> (instead of <code>%></code>):
306
310
  # template = <<TEMPLATE
307
311
  # <% if true -%>
308
312
  # <%= RUBY_VERSION %>
@@ -311,7 +315,8 @@
311
315
  # ERB.new(template, trim_mode: '-').result.lines.each {|line| puts line.inspect }
312
316
  # "3.4.5\n"
313
317
  #
314
- # It is an error to use the trailing `'-%>'` notation without `trim_mode: '-'`:
318
+ # It is an error to use the trailing <code>'-%>'</code> notation without
319
+ # <code>trim_mode: '-'</code>:
315
320
  # ERB.new(template).result.lines.each {|line| puts line.inspect } # Raises SyntaxError.
316
321
  #
317
322
  # #### Suppressing Unwanted Newlines
@@ -330,27 +335,29 @@
330
335
  # "foo \n"
331
336
  # "foo 3.4.5\n"
332
337
  #
333
- # You can give `trim_mode: '>'` to suppress the trailing newline
334
- # for each line that ends with `'%>'` (regardless of its beginning):
338
+ # You can give <code>trim_mode: '>'</code> to suppress the trailing newline
339
+ # for each line that ends with <code>'%>'</code> (regardless of its beginning):
335
340
  # ERB.new(template, trim_mode: '>').result.lines.each {|line| puts line.inspect }
336
341
  # "3.4.5foo foo 3.4.5"
337
342
  #
338
- # You can give `trim_mode: '<>'` to suppress the trailing newline
339
- # for each line that both begins with `'<%'` and ends with `'%>'`:
343
+ # You can give <code>trim_mode: '<>'</code> to suppress the trailing newline
344
+ # for each line that both begins with <code>'<%'</code> and ends with
345
+ # <code>'%>'</code>:
340
346
  # ERB.new(template, trim_mode: '<>').result.lines.each {|line| puts line.inspect }
341
347
  # "3.4.5foo \n"
342
348
  # "foo 3.4.5\n"
343
349
  #
344
350
  # #### Combining Trim Modes
345
351
  # You can combine certain trim modes:
346
- # * `'%-'`: Enable shorthand and omit each blank line ending with `'-%>'`.
347
- # * `'%>'`: Enable shorthand and omit newline for each line ending with
348
- # `'%>'`.
349
- # * `'%<>'`: Enable shorthand and omit newline for each line starting with
350
- # `'<%'` and ending with `'%>'`.
352
+ # * <code>'%-'</code>: Enable shorthand and omit each blank line ending with
353
+ # <code>'-%>'</code>.
354
+ # * <code>'%>'</code>: Enable shorthand and omit newline for each line ending
355
+ # with <code>'%>'</code>.
356
+ # * <code>'%<>'</code>: Enable shorthand and omit newline for each line
357
+ # starting with <code>'<%'</code> and ending with <code>'%>'</code>.
351
358
  # ### Comment Tags
352
359
  # You can embed a comment in a template using a *comment tag*;
353
- # its syntax is `<%# *text* %>`,
360
+ # its syntax is <code><%# _text_ %></code>,
354
361
  # where *text* is the text of the comment.
355
362
  # When you call method #result,
356
363
  # it removes the entire comment tag
@@ -360,9 +367,10 @@
360
367
  # ERB.new(template).result # => "Some stuff; more stuff."
361
368
  #
362
369
  # A comment tag may appear anywhere in the template.
363
- # Note that the beginning of the tag must be `'<%#'`, not `'<% #'`.
364
- # In this example, the tag begins with `'<% #'`, and so is an execution tag, not
365
- # a comment tag;
370
+ # Note that the beginning of the tag must be <code>'<%#'</code>, not <code>'<%
371
+ # #'</code>.
372
+ # In this example, the tag begins with <code>'<% #'</code>, and so is an
373
+ # execution tag, not a comment tag;
366
374
  # the cited code consists entirely of a Ruby-style comment (which is of course
367
375
  # ignored):
368
376
  # ERB.new('Some stuff;<% # Note to self: figure out what the stuff is. %> more stuff.').result
@@ -404,7 +412,8 @@
404
412
  # the file name comes from method #filename, the line number from method
405
413
  # #lineno.
406
414
  # Initially, those values are `nil` and `0`, respectively;
407
- # these initial values are reported as `'(erb)'` and `1`, respectively:
415
+ # these initial values are reported as <code>'(erb)'</code> and `1`,
416
+ # respectively:
408
417
  # erb.filename # => nil
409
418
  # erb.lineno # => 0
410
419
  # erb.result
@@ -424,7 +433,7 @@
424
433
  #
425
434
  # ## Plain Text with Embedded Ruby
426
435
  # Here's a plain-text template;
427
- # it uses the literal notation `'%q{ ... }'` to define the template
436
+ # it uses the literal notation <code>'%q{ ... }'</code> to define the template
428
437
  # (see [%q
429
438
  # literals](https://docs.ruby-lang.org/en/master/syntax/literals_rdoc.html#label
430
439
  # -25q-3A+Non-Interpolable+String+Literals));
@@ -582,23 +591,24 @@ class ERB
582
591
  # rdoc-file=lib/erb.rb
583
592
  # - ERB.new(template, trim_mode: nil, eoutvar: '_erbout')
584
593
  # -->
585
- # Returns a new ERB object containing the given string `template`.
594
+ # Returns a new ERB object containing the given string +template+.
586
595
  # For details about `template`, its embedded tags, and generated results, see
587
596
  # ERB.
588
- # **Keyword Argument `trim_mode`**
589
- # You can use keyword argument `trim_mode: '%'`
597
+ # <strong>Keyword Argument `trim_mode`</strong>
598
+ # You can use keyword argument <code>trim_mode: '%'</code>
590
599
  # to enable the [shorthand
591
600
  # format](rdoc-ref:ERB@Shorthand+Format+for+Execution+Tags) for execution tags.
592
601
  # This value allows [blank line
593
602
  # control](rdoc-ref:ERB@Suppressing+Unwanted+Blank+Lines):
594
- # * `'-'`: Omit each blank line ending with `'%>'`.
603
+ # * <code>'-'</code>: Omit each blank line ending with <code>'%>'</code>.
595
604
  # Other values allow [newline
596
605
  # control](rdoc-ref:ERB@Suppressing+Unwanted+Newlines):
597
- # * `'>'`: Omit newline for each line ending with `'%>'`.
598
- # * `'<>'`: Omit newline for each line starting with `'<%'` and ending with
599
- # `'%>'`.
606
+ # * <code>'>'</code>: Omit newline for each line ending with
607
+ # <code>'%>'</code>.
608
+ # * <code>'<>'</code>: Omit newline for each line starting with
609
+ # <code>'<%'</code> and ending with <code>'%>'</code>.
600
610
  # You can also [combine trim modes](rdoc-ref:ERB@Combining+Trim+Modes).
601
- # **Keyword Argument `eoutvar`**
611
+ # <strong>Keyword Argument `eoutvar`</strong>
602
612
  # The string value of keyword argument `eoutvar` specifies the name of the
603
613
  # variable
604
614
  # that method #result uses to construct its result string;
@@ -607,7 +617,7 @@ class ERB
607
617
  # binding
608
618
  # and/or when you want to control where output ends up.
609
619
  # It's good practice to choose a variable name that begins with an underscore:
610
- # `'_'`.
620
+ # <code>'_'</code>.
611
621
  #
612
622
  def initialize: (String, ?eoutvar: String, ?trim_mode: Integer | String | NilClass) -> untyped
613
623
 
@@ -760,8 +770,8 @@ class ERB
760
770
  # -->
761
771
  # Returns a new nameless class whose superclass is `super_class`,
762
772
  # and which has instance method `method_name`.
763
- # Create a template from HTML that has embedded expression tags that use `@arg1`
764
- # and `@arg2`:
773
+ # Create a template from HTML that has embedded expression tags that use
774
+ # <code>@arg1</code> and <code>@arg2</code>:
765
775
  # html = <<TEMPLATE
766
776
  # <html>
767
777
  # <body>
@@ -772,7 +782,7 @@ class ERB
772
782
  # TEMPLATE
773
783
  # template = ERB.new(html)
774
784
  #
775
- # Create a base class that has `@arg1` and `@arg2`:
785
+ # Create a base class that has <code>@arg1</code> and <code>@arg2</code>:
776
786
  # class MyBaseClass
777
787
  # def initialize(arg1, arg2)
778
788
  # @arg1 = arg1
@@ -780,7 +790,8 @@ class ERB
780
790
  # end
781
791
  # end
782
792
  #
783
- # Use method #def_class to create a subclass that has method `:render`:
793
+ # Use method #def_class to create a subclass that has method
794
+ # <code>:render</code>:
784
795
  # MySubClass = template.def_class(MyBaseClass, :render)
785
796
  #
786
797
  # Generate the result: