rbs 2.0.0 → 2.1.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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +5 -0
  3. data/CHANGELOG.md +23 -0
  4. data/README.md +6 -1
  5. data/core/array.rbs +2866 -1086
  6. data/core/basic_object.rbs +150 -30
  7. data/core/binding.rbs +33 -0
  8. data/core/builtin.rbs +4 -4
  9. data/core/class.rbs +43 -5
  10. data/core/comparable.rbs +57 -0
  11. data/core/complex.rbs +170 -4
  12. data/core/constants.rbs +51 -0
  13. data/core/deprecated.rbs +7 -0
  14. data/core/dir.rbs +305 -20
  15. data/core/encoding.rbs +472 -77
  16. data/core/enumerable.rbs +2173 -234
  17. data/core/enumerator.rbs +448 -182
  18. data/core/env.rbs +448 -1
  19. data/core/errno.rbs +1 -10
  20. data/core/errors.rbs +152 -2
  21. data/core/exception.rbs +201 -127
  22. data/core/false_class.rbs +27 -0
  23. data/core/fiber.rbs +118 -37
  24. data/core/fiber_error.rbs +8 -9
  25. data/core/file.rbs +1059 -139
  26. data/core/file_test.rbs +287 -32
  27. data/core/float.rbs +776 -300
  28. data/core/gc.rbs +185 -34
  29. data/core/global_variables.rbs +5 -1
  30. data/core/hash.rbs +1582 -649
  31. data/core/integer.rbs +974 -204
  32. data/core/io/buffer.rbs +710 -0
  33. data/core/io/wait.rbs +29 -8
  34. data/core/io.rbs +2438 -417
  35. data/core/kernel.rbs +2315 -316
  36. data/core/marshal.rbs +37 -2
  37. data/core/match_data.rbs +123 -6
  38. data/core/math.rbs +126 -6
  39. data/core/method.rbs +226 -102
  40. data/core/module.rbs +421 -45
  41. data/core/nil_class.rbs +64 -0
  42. data/core/numeric.rbs +620 -142
  43. data/core/object.rbs +453 -81
  44. data/core/object_space.rbs +92 -2
  45. data/core/proc.rbs +482 -285
  46. data/core/process.rbs +443 -34
  47. data/core/ractor.rbs +232 -9
  48. data/core/random.rbs +151 -52
  49. data/core/range.rbs +885 -160
  50. data/core/rational.rbs +122 -6
  51. data/core/rb_config.rbs +14 -4
  52. data/core/refinement.rbs +44 -0
  53. data/core/regexp.rbs +156 -14
  54. data/core/ruby_vm.rbs +42 -3
  55. data/core/signal.rbs +78 -39
  56. data/core/string.rbs +2123 -567
  57. data/core/string_io.rbs +204 -0
  58. data/core/struct.rbs +283 -28
  59. data/core/symbol.rbs +304 -30
  60. data/core/thread.rbs +1288 -688
  61. data/core/thread_group.rbs +66 -10
  62. data/core/time.rbs +643 -217
  63. data/core/trace_point.rbs +100 -12
  64. data/core/true_class.rbs +24 -0
  65. data/core/unbound_method.rbs +73 -7
  66. data/core/warning.rbs +37 -12
  67. data/docs/CONTRIBUTING.md +40 -34
  68. data/docs/stdlib.md +3 -102
  69. data/lib/rbs/annotate/annotations.rb +197 -0
  70. data/lib/rbs/annotate/formatter.rb +80 -0
  71. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  72. data/lib/rbs/annotate/rdoc_source.rb +120 -0
  73. data/lib/rbs/annotate.rb +6 -0
  74. data/lib/rbs/cli.rb +45 -1
  75. data/lib/rbs/definition_builder.rb +5 -1
  76. data/lib/rbs/location_aux.rb +12 -0
  77. data/lib/rbs/prototype/rb.rb +12 -0
  78. data/lib/rbs/version.rb +1 -1
  79. data/sig/annotate/annotations.rbs +102 -0
  80. data/sig/annotate/formatter.rbs +24 -0
  81. data/sig/annotate/rdoc_annotater.rbs +82 -0
  82. data/sig/annotate/rdoc_source.rbs +30 -0
  83. data/sig/cli.rbs +2 -0
  84. data/sig/collection/{collections.rbs → sources.rbs} +0 -0
  85. data/sig/location.rbs +6 -0
  86. data/sig/method_types.rbs +5 -1
  87. data/sig/polyfill.rbs +78 -0
  88. data/stdlib/abbrev/0/abbrev.rbs +6 -0
  89. data/stdlib/abbrev/0/array.rbs +26 -0
  90. data/stdlib/base64/0/base64.rbs +31 -0
  91. data/stdlib/benchmark/0/benchmark.rbs +74 -3
  92. data/stdlib/bigdecimal/0/big_decimal.rbs +614 -165
  93. data/stdlib/bigdecimal-math/0/big_math.rbs +41 -64
  94. data/stdlib/cgi/0/core.rbs +59 -0
  95. data/stdlib/coverage/0/coverage.rbs +164 -2
  96. data/stdlib/csv/0/csv.rbs +2862 -398
  97. data/stdlib/date/0/date.rbs +483 -25
  98. data/stdlib/date/0/date_time.rbs +187 -12
  99. data/stdlib/dbm/0/dbm.rbs +152 -17
  100. data/stdlib/digest/0/digest.rbs +146 -0
  101. data/stdlib/erb/0/erb.rbs +65 -245
  102. data/stdlib/fiber/0/fiber.rbs +73 -91
  103. data/stdlib/fileutils/0/fileutils.rbs +301 -1
  104. data/stdlib/find/0/find.rbs +9 -0
  105. data/stdlib/forwardable/0/forwardable.rbs +65 -1
  106. data/stdlib/io-console/0/io-console.rbs +227 -15
  107. data/stdlib/ipaddr/0/ipaddr.rbs +161 -0
  108. data/stdlib/json/0/json.rbs +1146 -144
  109. data/stdlib/logger/0/formatter.rbs +24 -0
  110. data/stdlib/logger/0/log_device.rbs +64 -0
  111. data/stdlib/logger/0/logger.rbs +165 -13
  112. data/stdlib/logger/0/period.rbs +10 -0
  113. data/stdlib/logger/0/severity.rbs +26 -0
  114. data/stdlib/monitor/0/monitor.rbs +163 -0
  115. data/stdlib/mutex_m/0/mutex_m.rbs +35 -6
  116. data/stdlib/net-http/0/net-http.rbs +1492 -683
  117. data/stdlib/nkf/0/nkf.rbs +372 -0
  118. data/stdlib/objspace/0/objspace.rbs +149 -90
  119. data/stdlib/openssl/0/openssl.rbs +8108 -71
  120. data/stdlib/optparse/0/optparse.rbs +487 -19
  121. data/stdlib/pathname/0/pathname.rbs +425 -124
  122. data/stdlib/prettyprint/0/prettyprint.rbs +120 -99
  123. data/stdlib/prime/0/integer-extension.rbs +20 -2
  124. data/stdlib/prime/0/prime.rbs +88 -21
  125. data/stdlib/pstore/0/pstore.rbs +102 -0
  126. data/stdlib/pty/0/pty.rbs +64 -14
  127. data/stdlib/resolv/0/resolv.rbs +420 -31
  128. data/stdlib/rubygems/0/basic_specification.rbs +4 -1
  129. data/stdlib/rubygems/0/config_file.rbs +33 -1
  130. data/stdlib/rubygems/0/dependency_installer.rbs +4 -3
  131. data/stdlib/rubygems/0/installer.rbs +13 -1
  132. data/stdlib/rubygems/0/path_support.rbs +4 -1
  133. data/stdlib/rubygems/0/platform.rbs +5 -1
  134. data/stdlib/rubygems/0/request_set.rbs +44 -2
  135. data/stdlib/rubygems/0/requirement.rbs +65 -2
  136. data/stdlib/rubygems/0/rubygems.rbs +407 -0
  137. data/stdlib/rubygems/0/source_list.rbs +13 -0
  138. data/stdlib/rubygems/0/specification.rbs +21 -1
  139. data/stdlib/rubygems/0/stream_ui.rbs +3 -1
  140. data/stdlib/rubygems/0/uninstaller.rbs +8 -1
  141. data/stdlib/rubygems/0/version.rbs +60 -157
  142. data/stdlib/securerandom/0/securerandom.rbs +44 -0
  143. data/stdlib/set/0/set.rbs +420 -106
  144. data/stdlib/shellwords/0/shellwords.rbs +55 -77
  145. data/stdlib/singleton/0/singleton.rbs +20 -0
  146. data/stdlib/socket/0/addrinfo.rbs +210 -9
  147. data/stdlib/socket/0/basic_socket.rbs +103 -11
  148. data/stdlib/socket/0/ip_socket.rbs +31 -9
  149. data/stdlib/socket/0/socket.rbs +586 -38
  150. data/stdlib/socket/0/tcp_server.rbs +22 -2
  151. data/stdlib/socket/0/tcp_socket.rbs +12 -1
  152. data/stdlib/socket/0/udp_socket.rbs +25 -2
  153. data/stdlib/socket/0/unix_server.rbs +22 -2
  154. data/stdlib/socket/0/unix_socket.rbs +45 -5
  155. data/stdlib/strscan/0/string_scanner.rbs +210 -9
  156. data/stdlib/tempfile/0/tempfile.rbs +58 -10
  157. data/stdlib/time/0/time.rbs +208 -116
  158. data/stdlib/timeout/0/timeout.rbs +10 -0
  159. data/stdlib/tmpdir/0/tmpdir.rbs +13 -4
  160. data/stdlib/tsort/0/cyclic.rbs +1 -0
  161. data/stdlib/tsort/0/interfaces.rbs +1 -0
  162. data/stdlib/tsort/0/tsort.rbs +42 -0
  163. data/stdlib/uri/0/common.rbs +57 -8
  164. data/stdlib/uri/0/file.rbs +55 -109
  165. data/stdlib/uri/0/ftp.rbs +6 -3
  166. data/stdlib/uri/0/generic.rbs +556 -327
  167. data/stdlib/uri/0/http.rbs +26 -115
  168. data/stdlib/uri/0/https.rbs +8 -102
  169. data/stdlib/uri/0/ldap.rbs +143 -137
  170. data/stdlib/uri/0/ldaps.rbs +8 -102
  171. data/stdlib/uri/0/mailto.rbs +3 -0
  172. data/stdlib/uri/0/rfc2396_parser.rbs +66 -26
  173. data/stdlib/uri/0/ws.rbs +6 -3
  174. data/stdlib/uri/0/wss.rbs +5 -3
  175. data/stdlib/yaml/0/dbm.rbs +151 -87
  176. data/stdlib/yaml/0/store.rbs +6 -0
  177. data/stdlib/zlib/0/zlib.rbs +90 -31
  178. metadata +17 -5
  179. data/lib/rbs/location.rb +0 -221
data/stdlib/set/0/set.rbs CHANGED
@@ -1,50 +1,200 @@
1
- # Set implements a collection of unordered values with no duplicates. This is a
2
- # hybrid of Array's intuitive inter-operation facilities and Hash's fast lookup.
1
+ # <!-- rdoc-file=lib/set.rb -->
2
+ # This library provides the Set class, which deals with a collection
3
+ # of unordered values with no duplicates. It is a hybrid of Array's
4
+ # intuitive inter-operation facilities and Hash's fast lookup.
5
+ # The method `to_set` is added to Enumerable for convenience.
6
+ # Set implements a collection of unordered values with no duplicates.
7
+ # This is a hybrid of Array's intuitive inter-operation facilities and
8
+ # Hash's fast lookup.
9
+ # Set is easy to use with Enumerable objects (implementing `each`).
10
+ # Most of the initializer methods and binary operators accept generic
11
+ # Enumerable objects besides sets and arrays. An Enumerable object
12
+ # can be converted to Set using the `to_set` method.
13
+ # Set uses Hash as storage, so you must note the following points:
14
+ # * Equality of elements is determined according to Object#eql? and
15
+ # Object#hash. Use Set#compare_by_identity to make a set compare
16
+ # its elements by their identity.
17
+ # * Set assumes that the identity of each element does not change
18
+ # while it is stored. Modifying an element of a set will render the
19
+ # set to an unreliable state.
20
+ # * When a string is to be stored, a frozen copy of the string is
21
+ # stored instead unless the original string is already frozen.
3
22
  #
4
- # Set is easy to use with Enumerable objects (implementing `each`). Most of the
5
- # initializer methods and binary operators accept generic Enumerable objects
6
- # besides sets and arrays. An Enumerable object can be converted to Set using
7
- # the `to_set` method.
23
+ # ## Comparison
24
+ # The comparison operators `<`, `>`, `<=`, and `>=` are implemented as
25
+ # shorthand for the {proper_,}{subset?,superset?} methods. The `<=>`
26
+ # operator reflects this order, or return `nil` for sets that both
27
+ # have distinct elements (`{x, y}` vs. `{x, z}` for example).
28
+ # ## Example
29
+ # require 'set'
30
+ # s1 = Set[1, 2] #=> #<Set: {1, 2}>
31
+ # s2 = [1, 2].to_set #=> #<Set: {1, 2}>
32
+ # s1 == s2 #=> true
33
+ # s1.add("foo") #=> #<Set: {1, 2, "foo"}>
34
+ # s1.merge([2, 6]) #=> #<Set: {1, 2, "foo", 6}>
35
+ # s1.subset?(s2) #=> false
36
+ # s2.subset?(s1) #=> true
8
37
  #
9
- # Set uses Hash as storage, so you must note the following points:
38
+ # ## Contact
39
+ # * Akinori MUSHA <mailto:knu@iDaemons.org> (current maintainer)
10
40
  #
11
- # * Equality of elements is determined according to Object#eql? and
12
- # Object#hash. Use Set#compare_by_identity to make a set compare its
13
- # elements by their identity.
14
- # * Set assumes that the identity of each element does not change while it is
15
- # stored. Modifying an element of a set will render the set to an
16
- # unreliable state.
17
- # * When a string is to be stored, a frozen copy of the string is stored
18
- # instead unless the original string is already frozen.
41
+ # ## What's Here
42
+ # First, what's elsewhere. Class Set:
43
+ # * Inherits from [class
44
+ # Object](https://docs.ruby-lang.org/en/master/Object.html#class-Object-labe
45
+ # l-What-27s+Here).
46
+ # * Includes [module
47
+ # which provides dozens of additional
48
+ # g/en/master/Enumerable.html#module-Enumerable-label-What-27s+Here),
49
+ # which provides dozens of additional methods.
19
50
  #
51
+ # In particular, class Set does not have many methods of its own
52
+ # for fetching or for iterating.
53
+ # Instead, it relies on those in Enumerable.
54
+ # Here, class Set provides methods that are useful for:
55
+ # * [Creating a Set](#class-Set-label-Methods+for+Creating+a+Set)
56
+ # * [Set Operations](#class-Set-label-Methods+for+Set+Operations)
57
+ # * [Comparing](#class-Set-label-Methods+for+Comparing)
58
+ # * [Querying](#class-Set-label-Methods+for+Querying)
59
+ # * [Assigning](#class-Set-label-Methods+for+Assigning)
60
+ # * [Deleting](#class-Set-label-Methods+for+Deleting)
61
+ # * [Converting](#class-Set-label-Methods+for+Converting)
62
+ # * [Iterating](#class-Set-label-Methods+for+Iterating)
63
+ # * [And more....](#class-Set-label-Other+Methods)
20
64
  #
21
- # ## Comparison
65
+ # ### Methods for Creating a Set
66
+ # * ::[] -
67
+ # Returns a new set containing the given objects.
68
+ # * ::new -
69
+ # Returns a new set containing either the given objects
70
+ # (if no block given) or the return values from the called block
71
+ # (if a block given).
22
72
  #
23
- # The comparison operators <, >, <=, and >= are implemented as shorthand for the
24
- # {proper_,}{subset?,superset?} methods. However, the <=> operator is
25
- # intentionally left out because not every pair of sets is comparable ({x, y}
26
- # vs. {x, z} for example).
73
+ # ### Methods for Set Operations
74
+ # * [|](#method-i-7C) (aliased as #union and #+) -
75
+ # Returns a new set containing all elements from `self`
76
+ # and all elements from a given enumerable (no duplicates).
77
+ # * [&](#method-i-26) (aliased as #intersection) -
78
+ # Returns a new set containing all elements common to `self`
79
+ # and a given enumerable.
80
+ # * [-](#method-i-2D) (aliased as #difference) -
81
+ # Returns a copy of `self` with all elements
82
+ # in a given enumerable removed.
83
+ # * [\^](#method-i-5E) -
84
+ # Returns a new set containing all elements from `self`
85
+ # and a given enumerable except those common to both.
27
86
  #
28
- # ## Example
87
+ # ### Methods for Comparing
88
+ # * [<=>](#method-i-3C-3D-3E) -
89
+ # Returns -1, 0, or 1 as `self` is less than, equal to,
90
+ # or greater than a given object.
91
+ # * [==](#method-i-3D-3D) -
92
+ # Returns whether `self` and a given enumerable are equal,
93
+ # as determined by Object#eql?.
94
+ # * #compare_by_identity? -
95
+ # Returns whether the set considers only identity
96
+ # when comparing elements.
29
97
  #
30
- # require 'set'
31
- # s1 = Set[1, 2] #=> #<Set: {1, 2}>
32
- # s2 = [1, 2].to_set #=> #<Set: {1, 2}>
33
- # s1 == s2 #=> true
34
- # s1.add("foo") #=> #<Set: {1, 2, "foo"}>
35
- # s1.merge([2, 6]) #=> #<Set: {1, 2, "foo", 6}>
36
- # s1.subset?(s2) #=> false
37
- # s2.subset?(s1) #=> true
98
+ # ### Methods for Querying
99
+ # * #length (aliased as #size) -
100
+ # Returns the count of elements.
101
+ # * #empty? -
102
+ # Returns whether the set has no elements.
103
+ # * #include? (aliased as #member? and #===) -
104
+ # Returns whether a given object is an element in the set.
105
+ # * #subset? (aliased as [<=](#method-i-3C-3D)) -
106
+ # Returns whether a given object is a subset of the set.
107
+ # * #proper_subset? (aliased as [<](#method-i-3C)) -
108
+ # Returns whether a given enumerable is a proper subset of the set.
109
+ # * #superset? (aliased as [<=](#method-i-3E-3D)]) -
110
+ # Returns whether a given enumerable is a superset of the set.
111
+ # * #proper_superset? (aliased as [>](#method-i-3E)) -
112
+ # Returns whether a given enumerable is a proper superset of the set.
113
+ # * #disjoint? -
114
+ # Returns `true` if the set and a given enumerable
115
+ # have no common elements, `false` otherwise.
116
+ # * #intersect? -
117
+ # Returns `true` if the set and a given enumerable -
118
+ # have any common elements, `false` otherwise.
119
+ # * #compare_by_identity? -
120
+ # Returns whether the set considers only identity
121
+ # when comparing elements.
38
122
  #
39
- # ## Contact
123
+ # ### Methods for Assigning
124
+ # * #add (aliased as #<<) -
125
+ # Adds a given object to the set; returns `self`.
126
+ # * #add? -
127
+ # If the given object is not an element in the set,
128
+ # adds it and returns `self`; otherwise, returns `nil`.
129
+ # * #merge -
130
+ # Adds each given object to the set; returns `self`.
131
+ # * #replace -
132
+ # Replaces the contents of the set with the contents
133
+ # of a given enumerable.
134
+ #
135
+ # ### Methods for Deleting
136
+ # * #clear -
137
+ # Removes all elements in the set; returns `self`.
138
+ # * #delete -
139
+ # Removes a given object from the set; returns `self`.
140
+ # * #delete? -
141
+ # If the given object is an element in the set,
142
+ # removes it and returns `self`; otherwise, returns `nil`.
143
+ # * #subtract -
144
+ # Removes each given object from the set; returns `self`.
145
+ # * #delete_if - Removes elements specified by a given block.
146
+ # * #select! (aliased as #filter!) -
147
+ # Removes elements not specified by a given block.
148
+ # * #keep_if -
149
+ # Removes elements not specified by a given block.
150
+ # * #reject!
151
+ # Removes elements specified by a given block.
152
+ #
153
+ # ### Methods for Converting
154
+ # * #classify -
155
+ # Returns a hash that classifies the elements,
156
+ # as determined by the given block.
157
+ # * #collect! (aliased as #map!) -
158
+ # Replaces each element with a block return-value.
159
+ # * #divide -
160
+ # Returns a hash that classifies the elements,
161
+ # as determined by the given block;
162
+ # differs from #classify in that the block may accept
163
+ # either one or two arguments.
164
+ # * #flatten -
165
+ # Returns a new set that is a recursive flattening of `self`.
166
+ # #flatten! -
167
+ # Replaces each nested set in `self` with the elements from that set.
168
+ # * #inspect (aliased as #to_s) -
169
+ # Returns a string displaying the elements.
170
+ # * #join -
171
+ # Returns a string containing all elements, converted to strings
172
+ # as needed, and joined by the given record separator.
173
+ # * #to_a -
174
+ # Returns an array containing all set elements.
175
+ # * #to_set -
176
+ # Returns `self` if given no arguments and no block;
177
+ # with a block given, returns a new set consisting of block
178
+ # return values.
40
179
  #
41
- # - Akinori MUSHA <knu@iDaemons.org> (current maintainer)
180
+ # ### Methods for Iterating
181
+ # * #each -
182
+ # Calls the block with each successive element; returns `self`.
183
+ #
184
+ # ### Other Methods
185
+ # * #reset -
186
+ # Resets the internal state; useful if an object
187
+ # has been modified while an element in the set.
42
188
  #
43
189
  class Set[A]
44
- # Creates a new set containing the elements of the given enumerable object.
45
- #
46
- # If a block is given, the elements of enum are preprocessed by the given block.
47
- #
190
+ # <!--
191
+ # rdoc-file=lib/set.rb
192
+ # - new(enum = nil) { |o| ... }
193
+ # -->
194
+ # Creates a new set containing the elements of the given enumerable
195
+ # object.
196
+ # If a block is given, the elements of enum are preprocessed by the
197
+ # given block.
48
198
  # Set.new([1, 2]) #=> #<Set: {1, 2}>
49
199
  # Set.new([1, 2, 1]) #=> #<Set: {1, 2}>
50
200
  # Set.new([1, 'c', :s]) #=> #<Set: {1, "c", :s}>
@@ -55,90 +205,147 @@ class Set[A]
55
205
  | [X] (_Each[X]) { (X) -> A } -> untyped
56
206
  | (?nil) -> untyped
57
207
 
208
+ # <!--
209
+ # rdoc-file=lib/set.rb
210
+ # - [](*ary)
211
+ # -->
58
212
  # Creates a new set containing the given objects.
59
- #
60
213
  # Set[1, 2] # => #<Set: {1, 2}>
61
214
  # Set[1, 2, 1] # => #<Set: {1, 2}>
62
215
  # Set[1, 'c', :s] # => #<Set: {1, "c", :s}>
63
216
  #
64
217
  def self.[]: [X] (*X) -> Set[X]
65
218
 
66
- # Returns a new set containing elements common to the set and the given
67
- # enumerable object.
68
- #
219
+ # <!--
220
+ # rdoc-file=lib/set.rb
221
+ # - &(enum)
222
+ # -->
223
+ # Returns a new set containing elements common to the set and the
224
+ # given enumerable object.
69
225
  # Set[1, 3, 5] & Set[3, 2, 1] #=> #<Set: {3, 1}>
70
226
  # Set['a', 'b', 'z'] & ['a', 'b', 'c'] #=> #<Set: {"a", "b"}>
71
227
  #
72
228
  def &: (_Each[A]) -> self
73
229
 
230
+ # <!--
231
+ # rdoc-file=lib/set.rb
232
+ # - intersection(enum)
233
+ # -->
234
+ #
74
235
  alias intersection &
75
236
 
76
- # Returns a new set built by merging the set and the elements of the given
77
- # enumerable object.
78
- #
237
+ # <!--
238
+ # rdoc-file=lib/set.rb
239
+ # - |(enum)
240
+ # -->
241
+ # Returns a new set built by merging the set and the elements of the
242
+ # given enumerable object.
79
243
  # Set[1, 2, 3] | Set[2, 4, 5] #=> #<Set: {1, 2, 3, 4, 5}>
80
244
  # Set[1, 5, 'z'] | (1..6) #=> #<Set: {1, 5, "z", 2, 3, 4, 6}>
81
245
  #
82
246
  def |: (_Each[A]) -> self
83
247
 
248
+ # <!--
249
+ # rdoc-file=lib/set.rb
250
+ # - union(enum)
251
+ # -->
252
+ #
84
253
  alias union |
85
254
 
255
+ # <!--
256
+ # rdoc-file=lib/set.rb
257
+ # - +(enum)
258
+ # -->
259
+ #
86
260
  alias + |
87
261
 
88
- # Returns a new set built by duplicating the set, removing every element that
89
- # appears in the given enumerable object.
90
- #
262
+ # <!--
263
+ # rdoc-file=lib/set.rb
264
+ # - -(enum)
265
+ # -->
266
+ # Returns a new set built by duplicating the set, removing every
267
+ # element that appears in the given enumerable object.
91
268
  # Set[1, 3, 5] - Set[1, 5] #=> #<Set: {3}>
92
269
  # Set['a', 'b', 'z'] - ['a', 'c'] #=> #<Set: {"b", "z"}>
93
270
  #
94
271
  def -: (_Each[A]) -> self
95
272
 
273
+ # <!--
274
+ # rdoc-file=lib/set.rb
275
+ # - difference(enum)
276
+ # -->
277
+ #
96
278
  alias difference -
97
279
 
98
- # Adds the given object to the set and returns self. Use `merge` to add many
99
- # elements at once.
100
- #
280
+ # <!--
281
+ # rdoc-file=lib/set.rb
282
+ # - add(o)
283
+ # -->
284
+ # Adds the given object to the set and returns self. Use `merge` to
285
+ # add many elements at once.
101
286
  # Set[1, 2].add(3) #=> #<Set: {1, 2, 3}>
102
287
  # Set[1, 2].add([3, 4]) #=> #<Set: {1, 2, [3, 4]}>
103
288
  # Set[1, 2].add(2) #=> #<Set: {1, 2}>
104
289
  #
105
290
  def add: (A) -> self
106
291
 
292
+ # <!--
293
+ # rdoc-file=lib/set.rb
294
+ # - <<(o)
295
+ # -->
296
+ #
107
297
  alias << add
108
298
 
109
- # Adds the given object to the set and returns self. If the object is already
110
- # in the set, returns nil.
111
- #
299
+ # <!--
300
+ # rdoc-file=lib/set.rb
301
+ # - add?(o)
302
+ # -->
303
+ # Adds the given object to the set and returns self. If the
304
+ # object is already in the set, returns nil.
112
305
  # Set[1, 2].add?(3) #=> #<Set: {1, 2, 3}>
113
306
  # Set[1, 2].add?([3, 4]) #=> #<Set: {1, 2, [3, 4]}>
114
307
  # Set[1, 2].add?(2) #=> nil
115
308
  #
116
309
  def add?: (A) -> self?
117
310
 
311
+ # <!--
312
+ # rdoc-file=lib/set.rb
313
+ # - include?(o)
314
+ # -->
118
315
  # Returns true if the set contains the given object.
119
- #
120
- # Note that `include?` and `member?` do not test member equality using `==` as
121
- # do other Enumerables.
122
- #
316
+ # Note that `include?` and `member?` do not test member
317
+ # equality using `==` as do other Enumerables.
123
318
  # See also Enumerable#include?
124
319
  #
125
320
  def include?: (A) -> bool
126
321
 
322
+ # <!--
323
+ # rdoc-file=lib/set.rb
324
+ # - member?(o)
325
+ # -->
326
+ #
127
327
  alias member? include?
128
328
 
129
- # Returns a new set containing elements exclusive between the set and the given
130
- # enumerable object. (set ^ enum) is equivalent to ((set | enum) - (set &
131
- # enum)).
132
- #
329
+ # <!--
330
+ # rdoc-file=lib/set.rb
331
+ # - ^(enum)
332
+ # -->
333
+ # Returns a new set containing elements exclusive between the set
334
+ # and the given enumerable object. `(set ^ enum)` is equivalent to
335
+ # `((set | enum) - (set & enum))`.
133
336
  # Set[1, 2] ^ Set[2, 3] #=> #<Set: {3, 1}>
134
337
  # Set[1, 'b', 'c'] ^ ['b', 'd'] #=> #<Set: {"d", 1, "c"}>
135
338
  #
136
339
  def ^: (_Each[A]) -> self
137
340
 
138
- # Classifies the set by the return value of the given block and returns a hash
139
- # of {value => set of elements} pairs. The block is called once for each
140
- # element of the set, passing the element as parameter.
141
- #
341
+ # <!--
342
+ # rdoc-file=lib/set.rb
343
+ # - classify() { |o| ... }
344
+ # -->
345
+ # Classifies the set by the return value of the given block and
346
+ # returns a hash of {value => set of elements} pairs. The block is
347
+ # called once for each element of the set, passing the element as
348
+ # parameter.
142
349
  # require 'set'
143
350
  # files = Set.new(Dir.glob("*.rb"))
144
351
  # hash = files.classify { |f| File.mtime(f).year }
@@ -150,56 +357,92 @@ class Set[A]
150
357
  #
151
358
  def classify: [X] () { (A) -> X } -> Hash[X, self]
152
359
 
360
+ # <!--
361
+ # rdoc-file=lib/set.rb
362
+ # - clear()
363
+ # -->
153
364
  # Removes all elements and returns self.
154
- #
155
365
  # set = Set[1, 'c', :s] #=> #<Set: {1, "c", :s}>
156
366
  # set.clear #=> #<Set: {}>
157
367
  # set #=> #<Set: {}>
158
368
  #
159
369
  def clear: () -> self
160
370
 
161
- # Replaces the elements with ones returned by collect(). Returns an enumerator
162
- # if no block is given.
371
+ # <!--
372
+ # rdoc-file=lib/set.rb
373
+ # - collect!() { |o| ... }
374
+ # -->
375
+ # Replaces the elements with ones returned by `collect()`.
376
+ # Returns an enumerator if no block is given.
163
377
  #
164
378
  def collect!: () { (A) -> A } -> self
165
379
 
380
+ # <!--
381
+ # rdoc-file=lib/set.rb
382
+ # - map!()
383
+ # -->
384
+ #
166
385
  alias map! collect!
167
386
 
168
- # Deletes the given object from the set and returns self. Use `subtract` to
169
- # delete many items at once.
387
+ # <!--
388
+ # rdoc-file=lib/set.rb
389
+ # - delete(o)
390
+ # -->
391
+ # Deletes the given object from the set and returns self. Use
392
+ # `subtract` to delete many items at once.
170
393
  #
171
394
  def delete: (A) -> self
172
395
 
173
- # Deletes the given object from the set and returns self. If the object is not
174
- # in the set, returns nil.
396
+ # <!--
397
+ # rdoc-file=lib/set.rb
398
+ # - delete?(o)
399
+ # -->
400
+ # Deletes the given object from the set and returns self. If the
401
+ # object is not in the set, returns nil.
175
402
  #
176
403
  def delete?: (A) -> self?
177
404
 
178
- # Deletes every element of the set for which block evaluates to true, and
179
- # returns self. Returns an enumerator if no block is given.
405
+ # <!--
406
+ # rdoc-file=lib/set.rb
407
+ # - delete_if() { |o| ... }
408
+ # -->
409
+ # Deletes every element of the set for which block evaluates to
410
+ # true, and returns self. Returns an enumerator if no block is
411
+ # given.
180
412
  #
181
413
  def delete_if: () { (A) -> untyped } -> self
182
414
 
183
- # Equivalent to Set#delete_if, but returns nil if no changes were made. Returns
184
- # an enumerator if no block is given.
415
+ # <!--
416
+ # rdoc-file=lib/set.rb
417
+ # - reject!(&block)
418
+ # -->
419
+ # Equivalent to Set#delete_if, but returns nil if no changes were
420
+ # made. Returns an enumerator if no block is given.
185
421
  #
186
422
  def reject!: () { (A) -> untyped } -> self
187
423
 
188
- # Returns true if the set and the given set have no element in common. This
189
- # method is the opposite of `intersect?`.
190
- #
424
+ # <!--
425
+ # rdoc-file=lib/set.rb
426
+ # - disjoint?(set)
427
+ # -->
428
+ # Returns true if the set and the given enumerable have
429
+ # no element in common. This method is the opposite of `intersect?`.
191
430
  # Set[1, 2, 3].disjoint? Set[3, 4] #=> false
192
431
  # Set[1, 2, 3].disjoint? Set[4, 5] #=> true
432
+ # Set[1, 2, 3].disjoint? [3, 4] #=> false
433
+ # Set[1, 2, 3].disjoint? 4..5 #=> true
193
434
  #
194
435
  def disjoint?: (self) -> bool
195
436
 
196
- # Divides the set into a set of subsets according to the commonality defined by
197
- # the given block.
198
- #
199
- # If the arity of the block is 2, elements o1 and o2 are in common if
200
- # block.call(o1, o2) is true. Otherwise, elements o1 and o2 are in common if
201
- # block.call(o1) == block.call(o2).
202
- #
437
+ # <!--
438
+ # rdoc-file=lib/set.rb
439
+ # - divide(&func)
440
+ # -->
441
+ # Divides the set into a set of subsets according to the commonality
442
+ # defined by the given block.
443
+ # If the arity of the block is 2, elements o1 and o2 are in common
444
+ # if block.call(o1, o2) is true. Otherwise, elements o1 and o2 are
445
+ # in common if block.call(o1) == block.call(o2).
203
446
  # require 'set'
204
447
  # numbers = Set[1, 3, 4, 6, 9, 10, 11]
205
448
  # set = numbers.divide { |i,j| (i - j).abs == 1 }
@@ -213,85 +456,151 @@ class Set[A]
213
456
  def divide: () { (A, A) -> untyped } -> Set[self]
214
457
  | () { (A) -> untyped } -> Set[self]
215
458
 
216
- # Calls the given block once for each element in the set, passing the element as
217
- # parameter. Returns an enumerator if no block is given.
459
+ # <!--
460
+ # rdoc-file=lib/set.rb
461
+ # - each(&block)
462
+ # -->
463
+ # Calls the given block once for each element in the set, passing
464
+ # the element as parameter. Returns an enumerator if no block is
465
+ # given.
218
466
  #
219
467
  def each: () { (A) -> void } -> self
220
468
 
469
+ # <!--
470
+ # rdoc-file=lib/set.rb
471
+ # - empty?()
472
+ # -->
221
473
  # Returns true if the set contains no elements.
222
474
  #
223
475
  def empty?: () -> bool
224
476
 
225
- # Returns a new set that is a copy of the set, flattening each containing set
226
- # recursively.
477
+ # <!--
478
+ # rdoc-file=lib/set.rb
479
+ # - flatten()
480
+ # -->
481
+ # Returns a new set that is a copy of the set, flattening each
482
+ # containing set recursively.
227
483
  #
228
484
  def flatten: () -> Set[untyped]
229
485
 
230
- # Returns true if the set and the given set have at least one element in common.
231
- #
486
+ # <!--
487
+ # rdoc-file=lib/set.rb
488
+ # - intersect?(set)
489
+ # -->
490
+ # Returns true if the set and the given enumerable have at least one
491
+ # element in common.
232
492
  # Set[1, 2, 3].intersect? Set[4, 5] #=> false
233
493
  # Set[1, 2, 3].intersect? Set[3, 4] #=> true
494
+ # Set[1, 2, 3].intersect? 4..5 #=> false
495
+ # Set[1, 2, 3].intersect? [3, 4] #=> true
234
496
  #
235
497
  def intersect?: (self) -> bool
236
498
 
237
- # Deletes every element of the set for which block evaluates to false, and
238
- # returns self. Returns an enumerator if no block is given.
499
+ # <!--
500
+ # rdoc-file=lib/set.rb
501
+ # - keep_if() { |o| ... }
502
+ # -->
503
+ # Deletes every element of the set for which block evaluates to
504
+ # false, and returns self. Returns an enumerator if no block is
505
+ # given.
239
506
  #
240
507
  def keep_if: () { (A) -> untyped } -> self
241
508
 
509
+ # <!--
510
+ # rdoc-file=lib/set.rb
511
+ # - size()
512
+ # -->
242
513
  # Returns the number of elements.
243
514
  #
244
515
  def size: () -> Integer
245
516
 
517
+ # <!--
518
+ # rdoc-file=lib/set.rb
519
+ # - length()
520
+ # -->
521
+ #
246
522
  alias length size
247
523
 
248
- # Merges the elements of the given enumerable object to the set and returns
249
- # self.
524
+ # <!--
525
+ # rdoc-file=lib/set.rb
526
+ # - merge(enum)
527
+ # -->
528
+ # Merges the elements of the given enumerable object to the set and
529
+ # returns self.
250
530
  #
251
531
  def merge: (_Each[A]) -> self
252
532
 
533
+ # <!--
534
+ # rdoc-file=lib/set.rb
535
+ # - subset?(set)
536
+ # -->
253
537
  # Returns true if the set is a subset of the given set.
254
538
  #
255
539
  def subset?: (self) -> bool
256
540
 
257
541
  def proper_subst?: (self) -> bool
258
542
 
543
+ # <!--
544
+ # rdoc-file=lib/set.rb
545
+ # - superset?(set)
546
+ # -->
259
547
  # Returns true if the set is a superset of the given set.
260
548
  #
261
549
  def superset?: (self) -> bool
262
550
 
551
+ # <!--
552
+ # rdoc-file=lib/set.rb
553
+ # - proper_superset?(set)
554
+ # -->
263
555
  # Returns true if the set is a proper superset of the given set.
264
556
  #
265
557
  def proper_superset?: (self) -> bool
266
558
 
267
- # Replaces the contents of the set with the contents of the given enumerable
268
- # object and returns self.
269
- #
559
+ # <!--
560
+ # rdoc-file=lib/set.rb
561
+ # - replace(enum)
562
+ # -->
563
+ # Replaces the contents of the set with the contents of the given
564
+ # enumerable object and returns self.
270
565
  # set = Set[1, 'c', :s] #=> #<Set: {1, "c", :s}>
271
566
  # set.replace([1, 2]) #=> #<Set: {1, 2}>
272
567
  # set #=> #<Set: {1, 2}>
273
568
  #
274
569
  def replace: (_Each[A]) -> self
275
570
 
276
- # Resets the internal state after modification to existing elements and returns
277
- # self.
278
- #
571
+ # <!--
572
+ # rdoc-file=lib/set.rb
573
+ # - reset()
574
+ # -->
575
+ # Resets the internal state after modification to existing elements
576
+ # and returns self.
279
577
  # Elements will be reindexed and deduplicated.
280
578
  #
281
579
  def reset: () -> self
282
580
 
283
- # Equivalent to Set#keep_if, but returns nil if no changes were made. Returns an
284
- # enumerator if no block is given.
581
+ # <!--
582
+ # rdoc-file=lib/set.rb
583
+ # - select!(&block)
584
+ # -->
585
+ # Equivalent to Set#keep_if, but returns nil if no changes were
586
+ # made. Returns an enumerator if no block is given.
285
587
  #
286
588
  def select!: () { (A) -> untyped } -> self?
287
589
 
288
- # Deletes every element that appears in the given enumerable object and returns
289
- # self.
590
+ # <!--
591
+ # rdoc-file=lib/set.rb
592
+ # - subtract(enum)
593
+ # -->
594
+ # Deletes every element that appears in the given enumerable object
595
+ # and returns self.
290
596
  #
291
597
  def subtract: (_Each[A]) -> self
292
598
 
293
- # Converts the set to an array. The order of elements is uncertain.
294
- #
599
+ # <!--
600
+ # rdoc-file=lib/set.rb
601
+ # - to_a()
602
+ # -->
603
+ # Converts the set to an array. The order of elements is uncertain.
295
604
  # Set[1, 2].to_a #=> [1, 2]
296
605
  # Set[1, 'c', :s].to_a #=> [1, "c", :s]
297
606
  #
@@ -300,7 +609,12 @@ class Set[A]
300
609
  include Enumerable[A]
301
610
  end
302
611
 
612
+ %a{annotate:rdoc:skip}
303
613
  module Enumerable[unchecked out Elem]
614
+ # <!--
615
+ # rdoc-file=lib/set.rb
616
+ # - to_set(klass = Set, *args, &block)
617
+ # -->
304
618
  # Makes a set from the enumerable object with given arguments.
305
619
  # Needs to `require "set"` to use this method.
306
620
  #