rbs 3.7.0 → 3.8.0.pre.1

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +3 -3
  3. data/.github/workflows/ruby.yml +7 -7
  4. data/CHANGELOG.md +52 -0
  5. data/core/array.rbs +1743 -1580
  6. data/core/basic_object.rbs +38 -35
  7. data/core/comparable.rbs +1 -1
  8. data/core/complex.rbs +165 -93
  9. data/core/data.rbs +1 -1
  10. data/core/dir.rbs +1 -17
  11. data/core/encoding.rbs +12 -6
  12. data/core/enumerable.rbs +270 -266
  13. data/core/enumerator.rbs +0 -2
  14. data/core/env.rbs +1 -1
  15. data/core/errno.rbs +33 -16
  16. data/core/errors.rbs +2 -2
  17. data/core/exception.rbs +236 -170
  18. data/core/fiber.rbs +3 -2
  19. data/core/file.rbs +32 -74
  20. data/core/float.rbs +125 -72
  21. data/core/gc.rbs +138 -40
  22. data/core/hash.rbs +120 -141
  23. data/core/integer.rbs +79 -50
  24. data/core/io/buffer.rbs +49 -43
  25. data/core/io.rbs +97 -144
  26. data/core/kernel.rbs +290 -200
  27. data/core/match_data.rbs +76 -2
  28. data/core/math.rbs +0 -36
  29. data/core/module.rbs +28 -23
  30. data/core/nil_class.rbs +0 -3
  31. data/core/numeric.rbs +100 -103
  32. data/core/object.rbs +0 -4
  33. data/core/object_space/weak_key_map.rbs +3 -4
  34. data/core/object_space.rbs +3 -3
  35. data/core/proc.rbs +0 -2
  36. data/core/process.rbs +109 -57
  37. data/core/ractor.rbs +37 -4
  38. data/core/range.rbs +114 -87
  39. data/core/rational.rbs +0 -2
  40. data/core/rbs/unnamed/argf.rbs +234 -33
  41. data/core/rbs/unnamed/env_class.rbs +35 -53
  42. data/core/rbs/unnamed/random.rbs +1 -2
  43. data/core/regexp.rbs +4 -52
  44. data/core/ruby_vm.rbs +88 -9
  45. data/core/rubygems/config_file.rbs +3 -0
  46. data/core/rubygems/errors.rbs +0 -5
  47. data/core/rubygems/platform.rbs +0 -9
  48. data/core/rubygems/rubygems.rbs +0 -5
  49. data/core/rubygems/version.rbs +6 -6
  50. data/core/set.rbs +3 -15
  51. data/core/string.rbs +130 -136
  52. data/core/struct.rbs +6 -18
  53. data/core/symbol.rbs +14 -21
  54. data/core/thread.rbs +32 -35
  55. data/core/time.rbs +127 -50
  56. data/core/trace_point.rbs +16 -0
  57. data/core/true_class.rbs +0 -1
  58. data/core/warning.rbs +9 -2
  59. data/docs/architecture.md +1 -1
  60. data/docs/syntax.md +1 -1
  61. data/ext/rbs_extension/location.c +29 -19
  62. data/ext/rbs_extension/parser.c +267 -292
  63. data/ext/rbs_extension/parserstate.c +56 -22
  64. data/lib/rbs/annotate/annotations.rb +3 -3
  65. data/lib/rbs/annotate/rdoc_source.rb +2 -2
  66. data/lib/rbs/cli/diff.rb +3 -3
  67. data/lib/rbs/cli/validate.rb +1 -1
  68. data/lib/rbs/cli.rb +13 -13
  69. data/lib/rbs/collection/config.rb +3 -1
  70. data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
  71. data/lib/rbs/environment_loader.rb +1 -1
  72. data/lib/rbs/namespace.rb +1 -0
  73. data/lib/rbs/parser_aux.rb +2 -2
  74. data/lib/rbs/prototype/rb.rb +11 -8
  75. data/lib/rbs/prototype/rbi.rb +9 -5
  76. data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
  77. data/lib/rbs/prototype/runtime.rb +4 -5
  78. data/lib/rbs/type_name.rb +14 -9
  79. data/lib/rbs/unit_test/type_assertions.rb +2 -2
  80. data/lib/rbs/validator.rb +3 -1
  81. data/lib/rbs/version.rb +1 -1
  82. data/lib/rdoc_plugin/parser.rb +2 -2
  83. data/rbs.gemspec +4 -0
  84. data/sig/ancestor_graph.rbs +4 -4
  85. data/sig/namespace.rbs +2 -3
  86. data/sig/resolver/constant_resolver.rbs +2 -2
  87. data/sig/resolver/context.rbs +1 -1
  88. data/sig/type_alias_regularity.rbs +5 -5
  89. data/sig/typename.rbs +8 -5
  90. data/sig/use_map.rbs +1 -1
  91. data/sig/validator.rbs +2 -2
  92. data/stdlib/base64/0/base64.rbs +0 -9
  93. data/stdlib/benchmark/0/benchmark.rbs +11 -2
  94. data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
  95. data/stdlib/cgi/0/core.rbs +47 -0
  96. data/stdlib/coverage/0/coverage.rbs +0 -3
  97. data/stdlib/csv/0/csv.rbs +18 -58
  98. data/stdlib/date/0/date.rbs +4 -19
  99. data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
  100. data/stdlib/digest/0/digest.rbs +25 -2
  101. data/stdlib/erb/0/erb.rbs +0 -1
  102. data/stdlib/etc/0/etc.rbs +51 -34
  103. data/stdlib/fileutils/0/fileutils.rbs +3 -44
  104. data/stdlib/io-console/0/io-console.rbs +69 -15
  105. data/stdlib/ipaddr/0/ipaddr.rbs +8 -4
  106. data/stdlib/json/0/json.rbs +56 -71
  107. data/stdlib/logger/0/log_device.rbs +1 -1
  108. data/stdlib/logger/0/logger.rbs +3 -18
  109. data/stdlib/net-http/0/net-http.rbs +19 -77
  110. data/stdlib/nkf/0/nkf.rbs +30 -0
  111. data/stdlib/objspace/0/objspace.rbs +1 -2
  112. data/stdlib/observable/0/observable.rbs +1 -1
  113. data/stdlib/open-uri/0/open-uri.rbs +52 -0
  114. data/stdlib/open3/0/open3.rbs +0 -8
  115. data/stdlib/openssl/0/openssl.rbs +136 -69
  116. data/stdlib/optparse/0/optparse.rbs +58 -18
  117. data/stdlib/pathname/0/pathname.rbs +2 -8
  118. data/stdlib/pp/0/pp.rbs +3 -1
  119. data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
  120. data/stdlib/pstore/0/pstore.rbs +0 -6
  121. data/stdlib/psych/0/psych.rbs +15 -4
  122. data/stdlib/pty/0/pty.rbs +46 -4
  123. data/stdlib/rdoc/0/code_object.rbs +0 -4
  124. data/stdlib/rdoc/0/markup.rbs +10 -12
  125. data/stdlib/rdoc/0/rdoc.rbs +1 -2
  126. data/stdlib/resolv/0/resolv.rbs +8 -3
  127. data/stdlib/ripper/0/ripper.rbs +0 -2
  128. data/stdlib/securerandom/0/securerandom.rbs +0 -2
  129. data/stdlib/shellwords/0/shellwords.rbs +11 -12
  130. data/stdlib/singleton/0/singleton.rbs +0 -1
  131. data/stdlib/socket/0/addrinfo.rbs +0 -1
  132. data/stdlib/socket/0/basic_socket.rbs +0 -5
  133. data/stdlib/socket/0/socket.rbs +49 -25
  134. data/stdlib/socket/0/tcp_server.rbs +0 -3
  135. data/stdlib/socket/0/tcp_socket.rbs +58 -3
  136. data/stdlib/socket/0/udp_socket.rbs +0 -1
  137. data/stdlib/socket/0/unix_server.rbs +0 -3
  138. data/stdlib/strscan/0/string_scanner.rbs +1265 -422
  139. data/stdlib/tempfile/0/tempfile.rbs +135 -28
  140. data/stdlib/time/0/time.rbs +48 -35
  141. data/stdlib/timeout/0/timeout.rbs +11 -8
  142. data/stdlib/tmpdir/0/tmpdir.rbs +8 -1
  143. data/stdlib/tsort/0/tsort.rbs +0 -4
  144. data/stdlib/uri/0/common.rbs +11 -30
  145. data/stdlib/uri/0/ftp.rbs +1 -1
  146. data/stdlib/uri/0/generic.rbs +22 -18
  147. data/stdlib/uri/0/http.rbs +2 -2
  148. data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
  149. data/stdlib/zlib/0/buf_error.rbs +1 -70
  150. data/stdlib/zlib/0/data_error.rbs +1 -70
  151. data/stdlib/zlib/0/deflate.rbs +8 -72
  152. data/stdlib/zlib/0/error.rbs +1 -70
  153. data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
  154. data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
  155. data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
  156. data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
  157. data/stdlib/zlib/0/gzip_file.rbs +1 -71
  158. data/stdlib/zlib/0/gzip_reader.rbs +3 -74
  159. data/stdlib/zlib/0/gzip_writer.rbs +1 -70
  160. data/stdlib/zlib/0/inflate.rbs +4 -71
  161. data/stdlib/zlib/0/mem_error.rbs +1 -70
  162. data/stdlib/zlib/0/need_dict.rbs +1 -70
  163. data/stdlib/zlib/0/stream_end.rbs +1 -70
  164. data/stdlib/zlib/0/stream_error.rbs +1 -70
  165. data/stdlib/zlib/0/version_error.rbs +1 -70
  166. data/stdlib/zlib/0/zlib.rbs +0 -2
  167. data/stdlib/zlib/0/zstream.rbs +4 -72
  168. metadata +4 -6
@@ -9,7 +9,7 @@ module RBS
9
9
  #
10
10
  # Note that the `TypeName` must be an absolute type name.
11
11
  #
12
- # The following Ruby code has context of `[[nil, TypeName("::Foo")], false]` where
12
+ # The following Ruby code has context of `[[nil, TypeName.parse("::Foo")], false]` where
13
13
  #
14
14
  # * `Foo` is a class defined in RBS file
15
15
  # * `Bar` is not defined in RBS files
@@ -20,9 +20,9 @@ module RBS
20
20
  # ```rb
21
21
  # validator = RBS::TypeAliasRegularity.validate(env: env)
22
22
  #
23
- # validator.nonregular?(TypeName("::foo")) # => nil
24
- # validator.nonregular?(TypeName("::bar")) # => nil
25
- # validator.nonregular?(TypeName("::baz")) # => TypeAliasRegularity::Diagnostic
23
+ # validator.nonregular?(TypeName.parse("::foo")) # => nil
24
+ # validator.nonregular?(TypeName.parse("::bar")) # => nil
25
+ # validator.nonregular?(TypeName.parse("::baz")) # => TypeAliasRegularity::Diagnostic
26
26
  # ```
27
27
  #
28
28
  # A special case is when the type argument is `untyped`.
@@ -51,8 +51,8 @@ module RBS
51
51
  # The type `t` is nonregular because it contains `t[T?]` on it's right hand side.
52
52
  #
53
53
  # ```
54
- # diagnostic = validator.nonregular?(TypeName("::t"))
55
- # diagnostic.type_name # => TypeName("::t")
54
+ # diagnostic = validator.nonregular?(TypeName.parse("::t"))
55
+ # diagnostic.type_name # => TypeName.parse("::t")
56
56
  # diagnostic.nonregular_type # => t[T?]
57
57
  # ```
58
58
  #
data/sig/typename.rbs CHANGED
@@ -57,9 +57,9 @@ module RBS
57
57
  # Returns a new type name with a namespace appended to given namespace.
58
58
  #
59
59
  # ```rb
60
- # TypeName("Hello").with_prefix(Namespace("World")) # => World::Hello
61
- # TypeName("Foo::Bar").with_prefix(Namespace("::Hello")) # => ::Hello::Foo::Bar
62
- # TypeName("::A::B").with_prefix(Namespace("C")) # => ::A::B
60
+ # TypeName.parse("Hello").with_prefix(Namespace("World")) # => World::Hello
61
+ # TypeName.parse("Foo::Bar").with_prefix(Namespace("::Hello")) # => ::Hello::Foo::Bar
62
+ # TypeName.parse("::A::B").with_prefix(Namespace("C")) # => ::A::B
63
63
  # ```
64
64
  #
65
65
  def with_prefix: (Namespace namespace) -> TypeName
@@ -67,10 +67,13 @@ module RBS
67
67
  def +: (TypeName) -> TypeName
68
68
 
69
69
  def split: () -> Array[Symbol]
70
+
71
+ # Returns type name with given string representation.
72
+ def self.parse: (String name) -> RBS::TypeName
70
73
  end
71
74
  end
72
75
 
73
76
  module Kernel
74
- # Returns type name with given string representation.
75
- def TypeName: (String name) -> RBS::TypeName
77
+ # Deprecated: Use `RBS::TypeName.parse` instead
78
+ %a{steep:deprecated} def TypeName: (String name) -> RBS::TypeName
76
79
  end
data/sig/use_map.rbs CHANGED
@@ -3,7 +3,7 @@ module RBS
3
3
  # ```rb
4
4
  # map = UseMap.build(environment)
5
5
  #
6
- # map.resolve?(TypeName("TN")) # => nil or resolved type name
6
+ # map.resolve?(TypeName.parse("TN")) # => nil or resolved type name
7
7
  # ```
8
8
  #
9
9
  class UseMap
data/sig/validator.rbs CHANGED
@@ -2,7 +2,7 @@ module RBS
2
2
  class Validator
3
3
  attr_reader env: Environment
4
4
 
5
- attr_reader resolver: Resolver::TypeNameResolver
5
+ attr_reader resolver: Resolver::TypeNameResolver?
6
6
 
7
7
  attr_reader definition_builder: DefinitionBuilder
8
8
 
@@ -10,7 +10,7 @@ module RBS
10
10
 
11
11
  attr_reader type_alias_regularity: TypeAliasRegularity
12
12
 
13
- def initialize: (env: Environment, resolver: Resolver::TypeNameResolver) -> void
13
+ def initialize: (env: Environment, ?resolver: Resolver::TypeNameResolver?) -> void
14
14
 
15
15
  # Validates the presence of type names and type application arity match.
16
16
  #
@@ -5,14 +5,12 @@
5
5
  # printable ASCII characters.
6
6
  # * Decoding such an encoded string.
7
7
  #
8
- #
9
8
  # Base64 is commonly used in contexts where binary data is not allowed or
10
9
  # supported:
11
10
  #
12
11
  # * Images in HTML or CSS files, or in URLs.
13
12
  # * Email attachments.
14
13
  #
15
- #
16
14
  # A Base64-encoded string is about one-third larger that its source. See the
17
15
  # [Wikipedia article](https://en.wikipedia.org/wiki/Base64) for more
18
16
  # information.
@@ -24,7 +22,6 @@
24
22
  # * Whether "padding" is to be used.
25
23
  # * Whether encoded strings are to contain newlines.
26
24
  #
27
- #
28
25
  # Note: Examples on this page assume that the including program has executed:
29
26
  #
30
27
  # require 'base64'
@@ -45,22 +42,18 @@
45
42
  # [RFC-4648-compliant](https://datatracker.ietf.org/doc/html/rfc4648);
46
43
  # safe for URLs.
47
44
  #
48
- #
49
- #
50
45
  # If you are working with Base64-encoded strings that will come from or be put
51
46
  # into URLs, you should choose this encoder-decoder pair of RFC-4648-compliant
52
47
  # methods:
53
48
  #
54
49
  # * Base64.urlsafe_encode64 and Base64.urlsafe_decode64.
55
50
  #
56
- #
57
51
  # Otherwise, you may choose any of the pairs in this module, including the pair
58
52
  # above, or the RFC-2045-compliant pairs:
59
53
  #
60
54
  # * Base64.encode64 and Base64.decode64.
61
55
  # * Base64.strict_encode64 and Base64.strict_decode64.
62
56
  #
63
- #
64
57
  # ## Padding
65
58
  #
66
59
  # Base64-encoding changes a triplet of input bytes into a quartet of output
@@ -104,7 +97,6 @@
104
97
  # # n = 2: 8 bytes => 12 characters.
105
98
  # Base64.strict_encode64('12345678') # => "MDEyMzQ1Njc="
106
99
  #
107
- #
108
100
  # When padding is suppressed, for a positive integer *n*:
109
101
  #
110
102
  # * Input bytes of length *3n* generate unpadded output characters of length
@@ -131,7 +123,6 @@
131
123
  # # m = 2: 8 bytes => 11 characters.
132
124
  # Base64.urlsafe_encode64('12345678', padding: false) # => "MDEyMzQ1Njc"
133
125
  #
134
- #
135
126
  # **Padding in Decode Methods**
136
127
  #
137
128
  # All of the Base64 decode methods support (but do not require) padding.
@@ -46,7 +46,6 @@
46
46
  # x.report("upto:") { 1.upto(n) do ; a = "1"; end }
47
47
  # end
48
48
  #
49
- #
50
49
  # The result:
51
50
  #
52
51
  # user system total real
@@ -241,7 +240,11 @@ module Benchmark
241
240
  # rdoc-file=lib/benchmark.rb
242
241
  # - realtime() { || ... }
243
242
  # -->
244
- # Returns the elapsed real time used to execute the given block.
243
+ # Returns the elapsed real time used to execute the given block. The unit of
244
+ # time is seconds.
245
+ #
246
+ # Benchmark.realtime { "a" * 1_000_000_000 }
247
+ # #=> 0.5098029999935534
245
248
  #
246
249
  def self?.realtime: () { () -> void } -> Float
247
250
 
@@ -366,17 +369,23 @@ module Benchmark
366
369
  #
367
370
  # `%u`
368
371
  # : Replaced by the user CPU time, as reported by Tms#utime.
372
+ #
369
373
  # `%y`
370
374
  # : Replaced by the system CPU time, as reported by #stime (Mnemonic: y of
371
375
  # "s*y*stem")
376
+ #
372
377
  # `%U`
373
378
  # : Replaced by the children's user CPU time, as reported by Tms#cutime
379
+ #
374
380
  # `%Y`
375
381
  # : Replaced by the children's system CPU time, as reported by Tms#cstime
382
+ #
376
383
  # `%t`
377
384
  # : Replaced by the total CPU time, as reported by Tms#total
385
+ #
378
386
  # `%r`
379
387
  # : Replaced by the elapsed real time, as reported by Tms#real
388
+ #
380
389
  # `%n`
381
390
  # : Replaced by the label string, as reported by Tms#label (Mnemonic: n of
382
391
  # "*n*ame")
@@ -1,155 +1,3 @@
1
- # <!-- rdoc-file=ext/bigdecimal/bigdecimal.c -->
2
- # BigDecimal provides arbitrary-precision floating point decimal arithmetic.
3
- #
4
- # ## Introduction
5
- #
6
- # Ruby provides built-in support for arbitrary precision integer arithmetic.
7
- #
8
- # For example:
9
- #
10
- # 42**13 #=> 1265437718438866624512
11
- #
12
- # BigDecimal provides similar support for very large or very accurate floating
13
- # point numbers.
14
- #
15
- # Decimal arithmetic is also useful for general calculation, because it provides
16
- # the correct answers people expect--whereas normal binary floating point
17
- # arithmetic often introduces subtle errors because of the conversion between
18
- # base 10 and base 2.
19
- #
20
- # For example, try:
21
- #
22
- # sum = 0
23
- # 10_000.times do
24
- # sum = sum + 0.0001
25
- # end
26
- # print sum #=> 0.9999999999999062
27
- #
28
- # and contrast with the output from:
29
- #
30
- # require 'bigdecimal'
31
- #
32
- # sum = BigDecimal("0")
33
- # 10_000.times do
34
- # sum = sum + BigDecimal("0.0001")
35
- # end
36
- # print sum #=> 0.1E1
37
- #
38
- # Similarly:
39
- #
40
- # (BigDecimal("1.2") - BigDecimal("1.0")) == BigDecimal("0.2") #=> true
41
- #
42
- # (1.2 - 1.0) == 0.2 #=> false
43
- #
44
- # ## A Note About Precision
45
- #
46
- # For a calculation using a BigDecimal and another `value`, the precision of the
47
- # result depends on the type of `value`:
48
- #
49
- # * If `value` is a Float, the precision is Float::DIG + 1.
50
- # * If `value` is a Rational, the precision is larger than Float::DIG + 1.
51
- # * If `value` is a BigDecimal, the precision is `value`'s precision in the
52
- # internal representation, which is platform-dependent.
53
- # * If `value` is other object, the precision is determined by the result of
54
- # +BigDecimal(value)+.
55
- #
56
- #
57
- # ## Special features of accurate decimal arithmetic
58
- #
59
- # Because BigDecimal is more accurate than normal binary floating point
60
- # arithmetic, it requires some special values.
61
- #
62
- # ### Infinity
63
- #
64
- # BigDecimal sometimes needs to return infinity, for example if you divide a
65
- # value by zero.
66
- #
67
- # BigDecimal("1.0") / BigDecimal("0.0") #=> Infinity
68
- # BigDecimal("-1.0") / BigDecimal("0.0") #=> -Infinity
69
- #
70
- # You can represent infinite numbers to BigDecimal using the strings
71
- # `'Infinity'`, `'+Infinity'` and `'-Infinity'` (case-sensitive)
72
- #
73
- # ### Not a Number
74
- #
75
- # When a computation results in an undefined value, the special value `NaN` (for
76
- # 'not a number') is returned.
77
- #
78
- # Example:
79
- #
80
- # BigDecimal("0.0") / BigDecimal("0.0") #=> NaN
81
- #
82
- # You can also create undefined values.
83
- #
84
- # NaN is never considered to be the same as any other value, even NaN itself:
85
- #
86
- # n = BigDecimal('NaN')
87
- # n == 0.0 #=> false
88
- # n == n #=> false
89
- #
90
- # ### Positive and negative zero
91
- #
92
- # If a computation results in a value which is too small to be represented as a
93
- # BigDecimal within the currently specified limits of precision, zero must be
94
- # returned.
95
- #
96
- # If the value which is too small to be represented is negative, a BigDecimal
97
- # value of negative zero is returned.
98
- #
99
- # BigDecimal("1.0") / BigDecimal("-Infinity") #=> -0.0
100
- #
101
- # If the value is positive, a value of positive zero is returned.
102
- #
103
- # BigDecimal("1.0") / BigDecimal("Infinity") #=> 0.0
104
- #
105
- # (See BigDecimal.mode for how to specify limits of precision.)
106
- #
107
- # Note that `-0.0` and `0.0` are considered to be the same for the purposes of
108
- # comparison.
109
- #
110
- # Note also that in mathematics, there is no particular concept of negative or
111
- # positive zero; true mathematical zero has no sign.
112
- #
113
- # ## bigdecimal/util
114
- #
115
- # When you require `bigdecimal/util`, the #to_d method will be available on
116
- # BigDecimal and the native Integer, Float, Rational, and String classes:
117
- #
118
- # require 'bigdecimal/util'
119
- #
120
- # 42.to_d # => 0.42e2
121
- # 0.5.to_d # => 0.5e0
122
- # (2/3r).to_d(3) # => 0.667e0
123
- # "0.5".to_d # => 0.5e0
124
- #
125
- # ## Methods for Working with JSON
126
- #
127
- # * [::json_create](rdoc-ref:BigDecimal.json_create): Returns a new BigDecimal
128
- # object constructed from the given object.
129
- # * [#as_json](rdoc-ref:BigDecimal#as_json): Returns a 2-element hash
130
- # representing `self`.
131
- # * [#to_json](rdoc-ref:BigDecimal#to_json): Returns a JSON string
132
- # representing `self`.
133
- #
134
- #
135
- # These methods are provided by the [JSON gem](https://github.com/flori/json).
136
- # To make these methods available:
137
- #
138
- # require 'json/add/bigdecimal'
139
- #
140
- # * ## License
141
- #
142
- #
143
- # Copyright (C) 2002 by Shigeo Kobayashi <shigeo@tinyforest.gr.jp>.
144
- #
145
- # BigDecimal is released under the Ruby and 2-clause BSD licenses. See
146
- # LICENSE.txt for details.
147
- #
148
- # Maintained by mrkn <mrkn@mrkn.jp> and ruby-core members.
149
- #
150
- # Documented by zzak <zachary@zacharyscott.net>, mathew <meta@pobox.com>, and
151
- # many other contributors.
152
- #
153
1
  class BigDecimal < Numeric
154
2
  # <!--
155
3
  # rdoc-file=ext/bigdecimal/bigdecimal.c
@@ -208,14 +56,12 @@ class BigDecimal < Numeric
208
56
  # * BigDecimal::EXCEPTION_ZERODIVIDE.
209
57
  # * BigDecimal::EXCEPTION_ALL.
210
58
  #
211
- #
212
59
  # Values for `setting` for exception handling:
213
60
  #
214
61
  # * `true`: sets the given `mode` to `true`.
215
62
  # * `false`: sets the given `mode` to `false`.
216
63
  # * `nil`: does not modify the mode settings.
217
64
  #
218
- #
219
65
  # You can use method BigDecimal.save_exception_mode to temporarily change, and
220
66
  # then automatically restore, exception modes.
221
67
  #
@@ -226,7 +72,6 @@ class BigDecimal < Numeric
226
72
  #
227
73
  # * BigDecimal::ROUND_MODE
228
74
  #
229
- #
230
75
  # You can use method BigDecimal.save_rounding_mode to temporarily change, and
231
76
  # then automatically restore, the rounding mode.
232
77
  #
@@ -240,7 +85,6 @@ class BigDecimal < Numeric
240
85
  # * `false` (default): Returns `BigDecimal('NaN')`.
241
86
  # * `true`: Raises FloatDomainError.
242
87
  #
243
- #
244
88
  # Examples:
245
89
  #
246
90
  # BigDecimal.mode(BigDecimal::EXCEPTION_ALL, false) # => 0
@@ -257,7 +101,6 @@ class BigDecimal < Numeric
257
101
  # `BigDecimal('-Infinity')`.
258
102
  # * `true`: Raises FloatDomainError.
259
103
  #
260
- #
261
104
  # Examples:
262
105
  #
263
106
  # BigDecimal.mode(BigDecimal::EXCEPTION_ALL, false) # => 0
@@ -275,7 +118,6 @@ class BigDecimal < Numeric
275
118
  # * `false` (default): Returns `BigDecimal('0')` or `BigDecimal('-Infinity')`.
276
119
  # * `true`: Raises FloatDomainError.
277
120
  #
278
- #
279
121
  # Examples:
280
122
  #
281
123
  # BigDecimal.mode(BigDecimal::EXCEPTION_ALL, false) # => 0
@@ -296,7 +138,6 @@ class BigDecimal < Numeric
296
138
  # `BigDecimal('-Infinity')`.
297
139
  # * `true`: Raises FloatDomainError.
298
140
  #
299
- #
300
141
  # Examples:
301
142
  #
302
143
  # BigDecimal.mode(BigDecimal::EXCEPTION_ALL, false) # => 0
@@ -317,7 +158,6 @@ class BigDecimal < Numeric
317
158
  # `BigDecimal('-Infinity')`.
318
159
  # * `true`: Raises FloatDomainError.
319
160
  #
320
- #
321
161
  # Examples:
322
162
  #
323
163
  # BigDecimal.mode(BigDecimal::EXCEPTION_ALL, false) # => 0
@@ -1030,16 +870,22 @@ class BigDecimal < Numeric
1030
870
  #
1031
871
  # BigDecimal::SIGN_NaN
1032
872
  # : value is Not a Number
873
+ #
1033
874
  # BigDecimal::SIGN_POSITIVE_ZERO
1034
875
  # : value is +0
876
+ #
1035
877
  # BigDecimal::SIGN_NEGATIVE_ZERO
1036
878
  # : value is -0
879
+ #
1037
880
  # BigDecimal::SIGN_POSITIVE_INFINITE
1038
881
  # : value is +Infinity
882
+ #
1039
883
  # BigDecimal::SIGN_NEGATIVE_INFINITE
1040
884
  # : value is -Infinity
885
+ #
1041
886
  # BigDecimal::SIGN_POSITIVE_FINITE
1042
887
  # : value is positive
888
+ #
1043
889
  # BigDecimal::SIGN_NEGATIVE_FINITE
1044
890
  # : value is negative
1045
891
  #
@@ -1403,8 +1249,6 @@ module Kernel
1403
1249
  # * Raises an exception if keyword argument `exception` is `true`.
1404
1250
  # * Returns `nil` if keyword argument `exception` is `false`.
1405
1251
  #
1406
- #
1407
- #
1408
1252
  # Raises an exception if `value` evaluates to a Float and `digits` is larger
1409
1253
  # than Float::DIG + 1.
1410
1254
  #
@@ -1713,11 +1557,11 @@ class Complex
1713
1557
  # -->
1714
1558
  # Returns the quotient of `self` and `numeric`:
1715
1559
  #
1716
- # Complex(2, 3) / Complex(2, 3) # => ((1/1)+(0/1)*i)
1717
- # Complex(900) / Complex(1) # => ((900/1)+(0/1)*i)
1718
- # Complex(-2, 9) / Complex(-9, 2) # => ((36/85)-(77/85)*i)
1719
- # Complex(9, 8) / 4 # => ((9/4)+(2/1)*i)
1720
- # Complex(20, 9) / 9.8 # => (2.0408163265306123+0.9183673469387754i)
1560
+ # Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
1561
+ # Complex.rect(900) / Complex.rect(1) # => (900+0i)
1562
+ # Complex.rect(-2, 9) / Complex.rect(-9, 2) # => ((36/85)-(77/85)*i)
1563
+ # Complex.rect(9, 8) / 4 # => ((9/4)+2i)
1564
+ # Complex.rect(20, 9) / 9.8 # => (2.0408163265306123+0.9183673469387754i)
1721
1565
  #
1722
1566
  def /: (BigDecimal) -> Complex
1723
1567
  | ...
@@ -1728,11 +1572,11 @@ class Complex
1728
1572
  # -->
1729
1573
  # Returns the product of `self` and `numeric`:
1730
1574
  #
1731
- # Complex(2, 3) * Complex(2, 3) # => (-5+12i)
1732
- # Complex(900) * Complex(1) # => (900+0i)
1733
- # Complex(-2, 9) * Complex(-9, 2) # => (0-85i)
1734
- # Complex(9, 8) * 4 # => (36+32i)
1735
- # Complex(20, 9) * 9.8 # => (196.0+88.2i)
1575
+ # Complex.rect(2, 3) * Complex.rect(2, 3) # => (-5+12i)
1576
+ # Complex.rect(900) * Complex.rect(1) # => (900+0i)
1577
+ # Complex.rect(-2, 9) * Complex.rect(-9, 2) # => (0-85i)
1578
+ # Complex.rect(9, 8) * 4 # => (36+32i)
1579
+ # Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
1736
1580
  #
1737
1581
  def *: (BigDecimal) -> Complex
1738
1582
  | ...
@@ -1743,11 +1587,11 @@ class Complex
1743
1587
  # -->
1744
1588
  # Returns the sum of `self` and `numeric`:
1745
1589
  #
1746
- # Complex(2, 3) + Complex(2, 3) # => (4+6i)
1747
- # Complex(900) + Complex(1) # => (901+0i)
1748
- # Complex(-2, 9) + Complex(-9, 2) # => (-11+11i)
1749
- # Complex(9, 8) + 4 # => (13+8i)
1750
- # Complex(20, 9) + 9.8 # => (29.8+9i)
1590
+ # Complex.rect(2, 3) + Complex.rect(2, 3) # => (4+6i)
1591
+ # Complex.rect(900) + Complex.rect(1) # => (901+0i)
1592
+ # Complex.rect(-2, 9) + Complex.rect(-9, 2) # => (-11+11i)
1593
+ # Complex.rect(9, 8) + 4 # => (13+8i)
1594
+ # Complex.rect(20, 9) + 9.8 # => (29.8+9i)
1751
1595
  #
1752
1596
  def +: (BigDecimal) -> Complex
1753
1597
  | ...
@@ -1758,11 +1602,11 @@ class Complex
1758
1602
  # -->
1759
1603
  # Returns the difference of `self` and `numeric`:
1760
1604
  #
1761
- # Complex(2, 3) - Complex(2, 3) # => (0+0i)
1762
- # Complex(900) - Complex(1) # => (899+0i)
1763
- # Complex(-2, 9) - Complex(-9, 2) # => (7+7i)
1764
- # Complex(9, 8) - 4 # => (5+8i)
1765
- # Complex(20, 9) - 9.8 # => (10.2+9i)
1605
+ # Complex.rect(2, 3) - Complex.rect(2, 3) # => (0+0i)
1606
+ # Complex.rect(900) - Complex.rect(1) # => (899+0i)
1607
+ # Complex.rect(-2, 9) - Complex.rect(-9, 2) # => (7+7i)
1608
+ # Complex.rect(9, 8) - 4 # => (5+8i)
1609
+ # Complex.rect(20, 9) - 9.8 # => (10.2+9i)
1766
1610
  #
1767
1611
  def -: (BigDecimal) -> Complex
1768
1612
  | ...