facets 2.5.0 → 2.5.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 (191) hide show
  1. data/AUTHORS +1 -1
  2. data/CHANGES +28 -45
  3. data/MANIFEST +35 -4
  4. data/README +3 -14
  5. data/RELEASE +36 -70
  6. data/VERSION +1 -1
  7. data/doc/archive/RELEASE-2.5.0 +83 -0
  8. data/doc/log/basic_stats/index.html +4 -4
  9. data/doc/log/changelog.html +509 -2
  10. data/doc/log/changelog.txt +130 -1522
  11. data/doc/rdoc/core/classes/Array.html +366 -141
  12. data/doc/rdoc/core/classes/Binding.html +45 -45
  13. data/doc/rdoc/core/classes/Class.html +38 -38
  14. data/doc/rdoc/core/classes/Comparable.html +26 -26
  15. data/doc/rdoc/core/classes/Enumerable.html +174 -170
  16. data/doc/rdoc/core/classes/Enumerable/Enumerator.html +130 -0
  17. data/doc/rdoc/core/classes/Enumerator.html +132 -0
  18. data/doc/rdoc/core/classes/Exception.html +8 -8
  19. data/doc/rdoc/core/classes/File.html +58 -58
  20. data/doc/rdoc/core/classes/FileTest.html +4 -4
  21. data/doc/rdoc/core/classes/Float.html +8 -8
  22. data/doc/rdoc/core/classes/Functor.html +12 -12
  23. data/doc/rdoc/core/classes/Hash.html +447 -263
  24. data/doc/rdoc/core/classes/Indexable.html +110 -110
  25. data/doc/rdoc/core/classes/Integer.html +2 -2
  26. data/doc/rdoc/core/classes/Kernel.html +329 -329
  27. data/doc/rdoc/core/classes/Lazy/Promise.html +1 -1
  28. data/doc/rdoc/core/classes/MatchData.html +15 -15
  29. data/doc/rdoc/core/classes/Module.html +176 -157
  30. data/doc/rdoc/core/classes/NilClass.html +23 -23
  31. data/doc/rdoc/core/classes/Numeric.html +27 -27
  32. data/doc/rdoc/core/classes/Object.html +8 -8
  33. data/doc/rdoc/core/classes/ObjectSpace.html +5 -5
  34. data/doc/rdoc/core/classes/Proc.html +22 -22
  35. data/doc/rdoc/core/classes/Regexp.html +1 -1
  36. data/doc/rdoc/core/classes/Stackable.html +31 -31
  37. data/doc/rdoc/core/classes/String.html +332 -291
  38. data/doc/rdoc/core/classes/Symbol.html +1 -1
  39. data/doc/rdoc/core/classes/TrueClass.html +8 -8
  40. data/doc/rdoc/core/classes/UnboundMethod.html +18 -13
  41. data/doc/rdoc/core/created.rid +1 -1
  42. data/doc/rdoc/core/files/README.html +7 -29
  43. data/doc/rdoc/core/files/lib/core/facets/array/product_rb.html +1 -1
  44. data/doc/rdoc/core/files/lib/core/facets/enumerable/collect_rb.html +10 -1
  45. data/doc/rdoc/core/files/lib/core/facets/enumerable/compact_map_rb.html +92 -0
  46. data/doc/rdoc/core/files/lib/core/facets/enumerable/map_with_index_rb.html +92 -0
  47. data/doc/rdoc/core/files/lib/core/facets/enumerable/split_rb.html +1 -1
  48. data/doc/rdoc/core/files/lib/core/facets/hash/collate_rb.html +1 -1
  49. data/doc/rdoc/core/files/lib/core/facets/hash/group_by_value_rb.html +92 -0
  50. data/doc/rdoc/core/files/lib/core/facets/hash/new_with_rb.html +92 -0
  51. data/doc/rdoc/core/files/lib/core/facets/module/conflict_rb.html +1 -1
  52. data/doc/rdoc/core/files/lib/core/facets/module/extend_rb.html +92 -0
  53. data/doc/rdoc/core/files/lib/core/facets/string/align_rb.html +1 -1
  54. data/doc/rdoc/core/files/lib/core/facets/string/file_rb.html +96 -0
  55. data/doc/rdoc/core/files/lib/core/facets/string/xor_rb.html +1 -1
  56. data/doc/rdoc/core/files/lib/core/facets/to_hash_rb.html +5 -1
  57. data/doc/rdoc/core/files/lib/core/facets/unboundmethod/name_rb.html +1 -1
  58. data/doc/rdoc/core/fr_class_index.html +2 -0
  59. data/doc/rdoc/core/fr_file_index.html +6 -0
  60. data/doc/rdoc/core/fr_method_index.html +386 -373
  61. data/doc/rdoc/lore/classes/OpenStruct.html +6 -4
  62. data/doc/rdoc/lore/created.rid +1 -1
  63. data/doc/rdoc/lore/files/README.html +7 -29
  64. data/doc/rdoc/lore/files/lib/lore/facets/ostruct_rb.html +1 -1
  65. data/doc/rdoc/more/classes/ANSICode.html +66 -66
  66. data/doc/rdoc/more/classes/Advisable.html +37 -37
  67. data/doc/rdoc/more/classes/Advisable/Method.html +20 -20
  68. data/doc/rdoc/more/classes/Archive/Tar/Minitar.html +27 -27
  69. data/doc/rdoc/more/classes/Archive/Tar/Minitar/Input.html +28 -28
  70. data/doc/rdoc/more/classes/Archive/Tar/Minitar/Output.html +19 -19
  71. data/doc/rdoc/more/classes/Archive/Tar/Minitar/Reader.html +31 -31
  72. data/doc/rdoc/more/classes/Archive/Tar/Minitar/Writer.html +33 -33
  73. data/doc/rdoc/more/classes/Association.html +67 -53
  74. data/doc/rdoc/more/classes/Association/Kernel.html +11 -12
  75. data/doc/rdoc/more/classes/BBCode.html +36 -36
  76. data/doc/rdoc/more/classes/BaseX.html +16 -16
  77. data/doc/rdoc/more/classes/BiCrypt.html +67 -67
  78. data/doc/rdoc/more/classes/BinReadable.html +85 -85
  79. data/doc/rdoc/more/classes/BinReadable/ByteOrder.html +25 -25
  80. data/doc/rdoc/more/classes/Binding.html +8 -8
  81. data/doc/rdoc/more/classes/Buildable.html +4 -4
  82. data/doc/rdoc/more/classes/Cloneable.html +4 -4
  83. data/doc/rdoc/more/classes/ConsoleUtils.html +18 -18
  84. data/doc/rdoc/more/classes/Crypt.html +16 -16
  85. data/doc/rdoc/more/classes/CssTree.html +8 -8
  86. data/doc/rdoc/more/classes/Dictionary.html +52 -45
  87. data/doc/rdoc/more/classes/Enumerable.html +50 -50
  88. data/doc/rdoc/more/classes/Enumerable/Elementor.html +16 -16
  89. data/doc/rdoc/more/classes/Enumerable/Enumerator.html +4 -4
  90. data/doc/rdoc/more/classes/Enumerable/Filterable.html +30 -30
  91. data/doc/rdoc/more/classes/EnumerablePass.html +15 -15
  92. data/doc/rdoc/more/classes/Equatable.html +16 -16
  93. data/doc/rdoc/more/classes/Expirable.html +17 -17
  94. data/doc/rdoc/more/classes/Fileable.html +14 -14
  95. data/doc/rdoc/more/classes/Fileable/DSL.html +41 -41
  96. data/doc/rdoc/more/classes/Hash2Xml.html +4 -4
  97. data/doc/rdoc/more/classes/Hook.html +162 -0
  98. data/doc/rdoc/more/classes/HtmlFilter.html +9 -9
  99. data/doc/rdoc/more/classes/Instantiable.html +9 -9
  100. data/doc/rdoc/more/classes/Instantize.html +8 -8
  101. data/doc/rdoc/more/classes/Interval.html +187 -187
  102. data/doc/rdoc/more/classes/It.html +12 -12
  103. data/doc/rdoc/more/classes/Matcher.html +38 -38
  104. data/doc/rdoc/more/classes/Matcher/MatchData.html +4 -4
  105. data/doc/rdoc/more/classes/Memoizer.html +21 -21
  106. data/doc/rdoc/more/classes/Multiton.html +12 -12
  107. data/doc/rdoc/more/classes/Multiton/MetaMethods.html +28 -28
  108. data/doc/rdoc/more/classes/Net/SMTP.html +8 -8
  109. data/doc/rdoc/more/classes/OpEsc.html +5 -5
  110. data/doc/rdoc/more/classes/OpenCascade.html +4 -4
  111. data/doc/rdoc/more/classes/OpenHash.html +9 -9
  112. data/doc/rdoc/more/classes/OpenStructable.html +36 -36
  113. data/doc/rdoc/more/classes/PQueue.html +84 -84
  114. data/doc/rdoc/more/classes/Paramix.html +16 -16
  115. data/doc/rdoc/more/classes/Paramix/Delegator.html +16 -16
  116. data/doc/rdoc/more/classes/RWDelegator.html +16 -16
  117. data/doc/rdoc/more/classes/Random.html +5 -5
  118. data/doc/rdoc/more/classes/Random/Array.html +37 -37
  119. data/doc/rdoc/more/classes/Random/Hash.html +52 -52
  120. data/doc/rdoc/more/classes/Random/Object.html +4 -4
  121. data/doc/rdoc/more/classes/Random/String.html +34 -34
  122. data/doc/rdoc/more/classes/Random/String/Self.html +9 -9
  123. data/doc/rdoc/more/classes/Registerable.html +13 -13
  124. data/doc/rdoc/more/classes/Stash.html +28 -28
  125. data/doc/rdoc/more/classes/String/Mask.html +72 -72
  126. data/doc/rdoc/more/classes/String/Words.html +31 -31
  127. data/doc/rdoc/more/classes/System.html +253 -253
  128. data/doc/rdoc/more/classes/Timer.html +48 -48
  129. data/doc/rdoc/more/classes/Timer/Dummy.html +9 -9
  130. data/doc/rdoc/more/classes/Tuple.html +170 -170
  131. data/doc/rdoc/more/classes/TypeCast/Class.html +4 -4
  132. data/doc/rdoc/more/classes/TypeCast/Object.html +4 -4
  133. data/doc/rdoc/more/classes/Uninheritable.html +6 -6
  134. data/doc/rdoc/more/classes/X.html +117 -0
  135. data/doc/rdoc/more/classes/XOXO.html +11 -11
  136. data/doc/rdoc/more/classes/ZipUtils.html +88 -88
  137. data/doc/rdoc/more/classes/ZipUtils/DryRun.html +68 -68
  138. data/doc/rdoc/more/classes/ZipUtils/NoWrite.html +68 -68
  139. data/doc/rdoc/more/classes/ZipUtils/Verbose.html +60 -60
  140. data/doc/rdoc/more/created.rid +1 -1
  141. data/doc/rdoc/more/files/README.html +7 -29
  142. data/doc/rdoc/more/files/lib/more/facets/association_rb.html +1 -1
  143. data/doc/rdoc/more/files/lib/more/facets/dictionary_rb.html +1 -1
  144. data/doc/rdoc/more/files/lib/more/facets/hook_rb.html +96 -0
  145. data/doc/rdoc/more/files/lib/more/facets/paramix_rb.html +1 -1
  146. data/doc/rdoc/more/files/lib/more/facets/xoxo_rb.html +2 -2
  147. data/doc/rdoc/more/fr_class_index.html +2 -0
  148. data/doc/rdoc/more/fr_file_index.html +1 -0
  149. data/doc/rdoc/more/fr_method_index.html +686 -681
  150. data/lib/core/facets/array/product.rb +6 -23
  151. data/lib/core/facets/enumerable/collect.rb +3 -53
  152. data/lib/core/facets/enumerable/compact_map.rb +35 -0
  153. data/lib/core/facets/enumerable/map_with_index.rb +23 -0
  154. data/lib/core/facets/enumerable/split.rb +3 -3
  155. data/lib/core/facets/hash/collate.rb +45 -14
  156. data/lib/core/facets/hash/group_by_value.rb +65 -0
  157. data/lib/core/facets/hash/new_with.rb +15 -0
  158. data/lib/core/facets/module/extend.rb +11 -0
  159. data/lib/core/facets/string/align.rb +19 -18
  160. data/lib/core/facets/string/file.rb +17 -0
  161. data/lib/core/facets/string/xor.rb +9 -3
  162. data/lib/core/facets/to_hash.rb +274 -17
  163. data/lib/core/facets/unboundmethod/name.rb +4 -2
  164. data/lib/lore/facets/ostruct.rb +3 -0
  165. data/lib/more/facets/association.rb +28 -12
  166. data/lib/more/facets/dictionary.rb +10 -4
  167. data/lib/more/facets/hook.rb +65 -0
  168. data/lib/more/facets/paramix.rb +5 -5
  169. data/meta/abstract +13 -0
  170. data/meta/authors +1 -0
  171. data/meta/contact +1 -0
  172. data/meta/contributors +48 -0
  173. data/meta/created +1 -0
  174. data/meta/homepage +1 -0
  175. data/meta/license +1 -0
  176. data/meta/loadpath +3 -0
  177. data/meta/releases +14 -0
  178. data/meta/slogan +1 -0
  179. data/meta/summary +1 -0
  180. data/task/test.rake +116 -18
  181. data/test/core/array/test_product.rb +0 -6
  182. data/test/core/binding/test_local_variables.rb +9 -3
  183. data/test/core/enumerable/test_split.rb +19 -0
  184. data/test/core/module/test_conflict.rb +8 -3
  185. data/test/core/test_to_hash.rb +152 -0
  186. data/test/core/unboundmethod/test_arguments.rb +1 -1
  187. data/test/core/unboundmethod/test_name.rb +2 -2
  188. metadata +39 -8
  189. data/doc/log/bstats/stats.html +0 -39
  190. data/doc/log/stats.html +0 -25
  191. data/test/more/test_to_hash.rb +0 -58
@@ -102,30 +102,35 @@ Object
102
102
 
103
103
 
104
104
  <div class="sectiontitle">Methods</div>
105
- <span style="padding-right: 5px;"><a href="#M000134">**</a></span>
106
- <span style="padding-right: 5px;"><a href="#M000149">combination</a></span>
107
- <span style="padding-right: 5px;"><a href="#M000141">conjoin</a></span>
108
- <span style="padding-right: 5px;"><a href="#M000138">delete_unless</a></span>
109
- <span style="padding-right: 5px;"><a href="#M000150">delete_values</a></span>
110
- <span style="padding-right: 5px;"><a href="#M000151">delete_values_at</a></span>
111
- <span style="padding-right: 5px;"><a href="#M000147">index</a></span>
112
- <span style="padding-right: 5px;"><a href="#M000142">merge!</a></span>
113
- <span style="padding-right: 5px;"><a href="#M000137">not_empty?</a></span>
114
- <span style="padding-right: 5px;"><a href="#M000148">only</a></span>
115
- <span style="padding-right: 5px;"><a href="#M000153">pad</a></span>
116
- <span style="padding-right: 5px;"><a href="#M000154">pad!</a></span>
117
- <span style="padding-right: 5px;"><a href="#M000145">permutation</a></span>
118
- <span style="padding-right: 5px;"><a href="#M000133">product</a></span>
119
- <span style="padding-right: 5px;"><a href="#M000135">recursively</a></span>
120
- <span style="padding-right: 5px;"><a href="#M000136">recursively!</a></span>
121
- <span style="padding-right: 5px;"><a href="#M000139">rotate</a></span>
122
- <span style="padding-right: 5px;"><a href="#M000140">rotate!</a></span>
123
- <span style="padding-right: 5px;"><a href="#M000146">select!</a></span>
124
- <span style="padding-right: 5px;"><a href="#M000152">splice</a></span>
125
- <span style="padding-right: 5px;"><a href="#M000132">to_b</a></span>
126
- <span style="padding-right: 5px;"><a href="#M000131">to_h</a></span>
127
- <span style="padding-right: 5px;"><a href="#M000143">traverse</a></span>
128
- <span style="padding-right: 5px;"><a href="#M000144">traverse!</a></span>
105
+ <span style="padding-right: 5px;"><a href="#M000083">**</a></span>
106
+ <span style="padding-right: 5px;"><a href="#M000098">combination</a></span>
107
+ <span style="padding-right: 5px;"><a href="#M000090">conjoin</a></span>
108
+ <span style="padding-right: 5px;"><a href="#M000087">delete_unless</a></span>
109
+ <span style="padding-right: 5px;"><a href="#M000099">delete_values</a></span>
110
+ <span style="padding-right: 5px;"><a href="#M000100">delete_values_at</a></span>
111
+ <span style="padding-right: 5px;"><a href="#M000096">index</a></span>
112
+ <span style="padding-right: 5px;"><a href="#M000091">merge!</a></span>
113
+ <span style="padding-right: 5px;"><a href="#M000086">not_empty?</a></span>
114
+ <span style="padding-right: 5px;"><a href="#M000097">only</a></span>
115
+ <span style="padding-right: 5px;"><a href="#M000102">pad</a></span>
116
+ <span style="padding-right: 5px;"><a href="#M000103">pad!</a></span>
117
+ <span style="padding-right: 5px;"><a href="#M000094">permutation</a></span>
118
+ <span style="padding-right: 5px;"><a href="#M000082">product</a></span>
119
+ <span style="padding-right: 5px;"><a href="#M000084">recursively</a></span>
120
+ <span style="padding-right: 5px;"><a href="#M000085">recursively!</a></span>
121
+ <span style="padding-right: 5px;"><a href="#M000088">rotate</a></span>
122
+ <span style="padding-right: 5px;"><a href="#M000089">rotate!</a></span>
123
+ <span style="padding-right: 5px;"><a href="#M000095">select!</a></span>
124
+ <span style="padding-right: 5px;"><a href="#M000101">splice</a></span>
125
+ <span style="padding-right: 5px;"><a href="#M000081">to_b</a></span>
126
+ <span style="padding-right: 5px;"><a href="#M000075">to_h</a></span>
127
+ <span style="padding-right: 5px;"><a href="#M000079">to_h_assoc</a></span>
128
+ <span style="padding-right: 5px;"><a href="#M000076">to_h_auto</a></span>
129
+ <span style="padding-right: 5px;"><a href="#M000078">to_h_flat</a></span>
130
+ <span style="padding-right: 5px;"><a href="#M000080">to_h_multi</a></span>
131
+ <span style="padding-right: 5px;"><a href="#M000077">to_h_splat</a></span>
132
+ <span style="padding-right: 5px;"><a href="#M000092">traverse</a></span>
133
+ <span style="padding-right: 5px;"><a href="#M000093">traverse!</a></span>
129
134
 
130
135
  <div class="sectiontitle">Included Modules</div>
131
136
  <ul>
@@ -140,22 +145,22 @@ Object
140
145
  <div class="sectiontitle">Public Instance methods</div>
141
146
  <div class="method">
142
147
  <div class="title">
143
- <a name="M000134"></a><b>**</b>(*enums, &amp;block)
148
+ <a name="M000083"></a><b>**</b>(*enums)
144
149
  </div>
145
150
  <div class="description">
146
151
  <p>
147
- Alias for <a href="Array.html#M000133">product</a>
152
+ Alias for <a href="Array.html#M000082">product</a>
148
153
  </p>
149
154
  </div>
150
155
  </div>
151
156
  <div class="method">
152
157
  <div class="title">
153
- <a name="M000149"></a><b>combination</b>(k=2) {|s.values_at(*idx)| ...}
158
+ <a name="M000098"></a><b>combination</b>(k=2) {|s.values_at(*idx)| ...}
154
159
  </div>
155
160
  <div class="description">
156
161
  <p>
157
162
  Yields the block to each unique <a
158
- href="Array.html#M000149">combination</a> of <em>n</em> elements.
163
+ href="Array.html#M000098">combination</a> of <em>n</em> elements.
159
164
  </p>
160
165
  <pre>
161
166
  a = %w|a b c d|
@@ -175,8 +180,8 @@ CREDIT: Florian Gross
175
180
  </p>
176
181
  </div>
177
182
  <div class="sourcecode">
178
- <p class="source-link">[ <a href="javascript:toggleSource('M000149_source')" id="l_M000149_source">+</a> ]</p>
179
- <div id="M000149_source" class="dyn-source">
183
+ <p class="source-link">[ <a href="javascript:toggleSource('M000098_source')" id="l_M000098_source">+</a> ]</p>
184
+ <div id="M000098_source" class="dyn-source">
180
185
  <pre>
181
186
  <span class="ruby-comment cmt"># File lib/core/facets/array/combination.rb, line 21</span>
182
187
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">combination</span>(<span class="ruby-identifier">k</span>=<span class="ruby-value">2</span>)
@@ -203,7 +208,7 @@ CREDIT: Florian Gross
203
208
  </div>
204
209
  <div class="method">
205
210
  <div class="title">
206
- <a name="M000141"></a><b>conjoin</b>(*args) {|i, *slice(i,2)| ...}
211
+ <a name="M000090"></a><b>conjoin</b>(*args) {|i, *slice(i,2)| ...}
207
212
  </div>
208
213
  <div class="description">
209
214
  <p>
@@ -239,8 +244,8 @@ CREDIT: Trans
239
244
  </p>
240
245
  </div>
241
246
  <div class="sourcecode">
242
- <p class="source-link">[ <a href="javascript:toggleSource('M000141_source')" id="l_M000141_source">+</a> ]</p>
243
- <div id="M000141_source" class="dyn-source">
247
+ <p class="source-link">[ <a href="javascript:toggleSource('M000090_source')" id="l_M000090_source">+</a> ]</p>
248
+ <div id="M000090_source" class="dyn-source">
244
249
  <pre>
245
250
  <span class="ruby-comment cmt"># File lib/core/facets/array/conjoin.rb, line 30</span>
246
251
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">conjoin</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -275,7 +280,7 @@ CREDIT: Trans
275
280
  </div>
276
281
  <div class="method">
277
282
  <div class="title">
278
- <a name="M000138"></a><b>delete_unless</b>(&amp;block)
283
+ <a name="M000087"></a><b>delete_unless</b>(&amp;block)
279
284
  </div>
280
285
  <div class="description">
281
286
  <p>
@@ -290,8 +295,8 @@ CREDIT: Daniel Schierbeck
290
295
  </p>
291
296
  </div>
292
297
  <div class="sourcecode">
293
- <p class="source-link">[ <a href="javascript:toggleSource('M000138_source')" id="l_M000138_source">+</a> ]</p>
294
- <div id="M000138_source" class="dyn-source">
298
+ <p class="source-link">[ <a href="javascript:toggleSource('M000087_source')" id="l_M000087_source">+</a> ]</p>
299
+ <div id="M000087_source" class="dyn-source">
295
300
  <pre>
296
301
  <span class="ruby-comment cmt"># File lib/core/facets/array/delete_unless.rb, line 10</span>
297
302
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_unless</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -303,7 +308,7 @@ CREDIT: Daniel Schierbeck
303
308
  </div>
304
309
  <div class="method">
305
310
  <div class="title">
306
- <a name="M000150"></a><b>delete_values</b>(*values)
311
+ <a name="M000099"></a><b>delete_values</b>(*values)
307
312
  </div>
308
313
  <div class="description">
309
314
  <p>
@@ -319,8 +324,8 @@ CREDIT: Trans
319
324
  </p>
320
325
  </div>
321
326
  <div class="sourcecode">
322
- <p class="source-link">[ <a href="javascript:toggleSource('M000150_source')" id="l_M000150_source">+</a> ]</p>
323
- <div id="M000150_source" class="dyn-source">
327
+ <p class="source-link">[ <a href="javascript:toggleSource('M000099_source')" id="l_M000099_source">+</a> ]</p>
328
+ <div id="M000099_source" class="dyn-source">
324
329
  <pre>
325
330
  <span class="ruby-comment cmt"># File lib/core/facets/array/delete_values.rb, line 11</span>
326
331
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_values</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">values</span>)
@@ -334,12 +339,12 @@ CREDIT: Trans
334
339
  </div>
335
340
  <div class="method">
336
341
  <div class="title">
337
- <a name="M000151"></a><b>delete_values_at</b>(*selectors)
342
+ <a name="M000100"></a><b>delete_values_at</b>(*selectors)
338
343
  </div>
339
344
  <div class="description">
340
345
  <p>
341
346
  Delete multiple values from array given indexes or <a
342
- href="Array.html#M000147">index</a> range.
347
+ href="Array.html#M000096">index</a> range.
343
348
  </p>
344
349
  <pre>
345
350
  a = [1,2,3,4]
@@ -357,8 +362,8 @@ CREDIT: Trans
357
362
  </p>
358
363
  </div>
359
364
  <div class="sourcecode">
360
- <p class="source-link">[ <a href="javascript:toggleSource('M000151_source')" id="l_M000151_source">+</a> ]</p>
361
- <div id="M000151_source" class="dyn-source">
365
+ <p class="source-link">[ <a href="javascript:toggleSource('M000100_source')" id="l_M000100_source">+</a> ]</p>
366
+ <div id="M000100_source" class="dyn-source">
362
367
  <pre>
363
368
  <span class="ruby-comment cmt"># File lib/core/facets/array/delete_values.rb, line 32</span>
364
369
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete_values_at</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">selectors</span>)
@@ -383,19 +388,19 @@ CREDIT: Trans
383
388
  </div>
384
389
  <div class="method">
385
390
  <div class="title">
386
- <a name="M000147"></a><b>index</b>(obj=nil, &amp;block)
391
+ <a name="M000096"></a><b>index</b>(obj=nil, &amp;block)
387
392
  </div>
388
393
  <div class="description">
389
394
  <p>
390
- Allows <a href="Array.html#M000147">index</a> to accept a block.
395
+ Allows <a href="Array.html#M000096">index</a> to accept a block.
391
396
  </p>
392
397
  <p>
393
398
  OVERRIDE! This is one of the bery few core overrides in Facets.
394
399
  </p>
395
400
  </div>
396
401
  <div class="sourcecode">
397
- <p class="source-link">[ <a href="javascript:toggleSource('M000147_source')" id="l_M000147_source">+</a> ]</p>
398
- <div id="M000147_source" class="dyn-source">
402
+ <p class="source-link">[ <a href="javascript:toggleSource('M000096_source')" id="l_M000096_source">+</a> ]</p>
403
+ <div id="M000096_source" class="dyn-source">
399
404
  <pre>
400
405
  <span class="ruby-comment cmt"># File lib/core/facets/array/index.rb, line 12</span>
401
406
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">index</span>(<span class="ruby-identifier">obj</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -411,7 +416,7 @@ OVERRIDE! This is one of the bery few core overrides in Facets.
411
416
  </div>
412
417
  <div class="method">
413
418
  <div class="title">
414
- <a name="M000142"></a><b>merge!</b>( other )
419
+ <a name="M000091"></a><b>merge!</b>( other )
415
420
  </div>
416
421
  <div class="description">
417
422
  <p>
@@ -427,8 +432,8 @@ CREDIT: Trans
427
432
  </p>
428
433
  </div>
429
434
  <div class="sourcecode">
430
- <p class="source-link">[ <a href="javascript:toggleSource('M000142_source')" id="l_M000142_source">+</a> ]</p>
431
- <div id="M000142_source" class="dyn-source">
435
+ <p class="source-link">[ <a href="javascript:toggleSource('M000091_source')" id="l_M000091_source">+</a> ]</p>
436
+ <div id="M000091_source" class="dyn-source">
432
437
  <pre>
433
438
  <span class="ruby-comment cmt"># File lib/core/facets/array/merge.rb, line 11</span>
434
439
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">merge!</span>( <span class="ruby-identifier">other</span> )
@@ -440,7 +445,7 @@ CREDIT: Trans
440
445
  </div>
441
446
  <div class="method">
442
447
  <div class="title">
443
- <a name="M000137"></a><b>not_empty?</b>()
448
+ <a name="M000086"></a><b>not_empty?</b>()
444
449
  </div>
445
450
  <div class="description">
446
451
  <p>
@@ -452,8 +457,8 @@ Not empty?
452
457
  </pre>
453
458
  </div>
454
459
  <div class="sourcecode">
455
- <p class="source-link">[ <a href="javascript:toggleSource('M000137_source')" id="l_M000137_source">+</a> ]</p>
456
- <div id="M000137_source" class="dyn-source">
460
+ <p class="source-link">[ <a href="javascript:toggleSource('M000086_source')" id="l_M000086_source">+</a> ]</p>
461
+ <div id="M000086_source" class="dyn-source">
457
462
  <pre>
458
463
  <span class="ruby-comment cmt"># File lib/core/facets/array/not_empty.rb, line 8</span>
459
464
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">not_empty?</span>
@@ -465,11 +470,11 @@ Not empty?
465
470
  </div>
466
471
  <div class="method">
467
472
  <div class="title">
468
- <a name="M000148"></a><b>only</b>()
473
+ <a name="M000097"></a><b>only</b>()
469
474
  </div>
470
475
  <div class="description">
471
476
  <p>
472
- Returns the <em><a href="Array.html#M000148">only</a></em> element in the
477
+ Returns the <em><a href="Array.html#M000097">only</a></em> element in the
473
478
  array. Raises an IndexError if the array&#8216;s size is not 1.
474
479
  </p>
475
480
  <pre>
@@ -482,8 +487,8 @@ CREDIT: Gavin Sinclair, Noah Gibbs
482
487
  </p>
483
488
  </div>
484
489
  <div class="sourcecode">
485
- <p class="source-link">[ <a href="javascript:toggleSource('M000148_source')" id="l_M000148_source">+</a> ]</p>
486
- <div id="M000148_source" class="dyn-source">
490
+ <p class="source-link">[ <a href="javascript:toggleSource('M000097_source')" id="l_M000097_source">+</a> ]</p>
491
+ <div id="M000097_source" class="dyn-source">
487
492
  <pre>
488
493
  <span class="ruby-comment cmt"># File lib/core/facets/array/only.rb, line 12</span>
489
494
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">only</span>
@@ -498,7 +503,7 @@ CREDIT: Gavin Sinclair, Noah Gibbs
498
503
  </div>
499
504
  <div class="method">
500
505
  <div class="title">
501
- <a name="M000153"></a><b>pad</b>(len, val=nil)
506
+ <a name="M000102"></a><b>pad</b>(len, val=nil)
502
507
  </div>
503
508
  <div class="description">
504
509
  <p>
@@ -519,8 +524,8 @@ CREDIT: Richard Laugesen
519
524
  </p>
520
525
  </div>
521
526
  <div class="sourcecode">
522
- <p class="source-link">[ <a href="javascript:toggleSource('M000153_source')" id="l_M000153_source">+</a> ]</p>
523
- <div id="M000153_source" class="dyn-source">
527
+ <p class="source-link">[ <a href="javascript:toggleSource('M000102_source')" id="l_M000102_source">+</a> ]</p>
528
+ <div id="M000102_source" class="dyn-source">
524
529
  <pre>
525
530
  <span class="ruby-comment cmt"># File lib/core/facets/array/pad.rb, line 14</span>
526
531
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pad</span>(<span class="ruby-identifier">len</span>, <span class="ruby-identifier">val</span>=<span class="ruby-keyword kw">nil</span>)
@@ -537,11 +542,11 @@ CREDIT: Richard Laugesen
537
542
  </div>
538
543
  <div class="method">
539
544
  <div class="title">
540
- <a name="M000154"></a><b>pad!</b>(len, val=nil)
545
+ <a name="M000103"></a><b>pad!</b>(len, val=nil)
541
546
  </div>
542
547
  <div class="description">
543
548
  <p>
544
- Like <a href="Array.html#M000153">pad</a> but changes the array in place.
549
+ Like <a href="Array.html#M000102">pad</a> but changes the array in place.
545
550
  </p>
546
551
  <pre>
547
552
  a = [0,1,2]
@@ -553,8 +558,8 @@ CREDIT: Richard Laugesen
553
558
  </p>
554
559
  </div>
555
560
  <div class="sourcecode">
556
- <p class="source-link">[ <a href="javascript:toggleSource('M000154_source')" id="l_M000154_source">+</a> ]</p>
557
- <div id="M000154_source" class="dyn-source">
561
+ <p class="source-link">[ <a href="javascript:toggleSource('M000103_source')" id="l_M000103_source">+</a> ]</p>
562
+ <div id="M000103_source" class="dyn-source">
558
563
  <pre>
559
564
  <span class="ruby-comment cmt"># File lib/core/facets/array/pad.rb, line 31</span>
560
565
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pad!</span>(<span class="ruby-identifier">len</span>, <span class="ruby-identifier">val</span>=<span class="ruby-keyword kw">nil</span>)
@@ -571,12 +576,12 @@ CREDIT: Richard Laugesen
571
576
  </div>
572
577
  <div class="method">
573
578
  <div class="title">
574
- <a name="M000145"></a><b>permutation</b>(n=size) {|[]| ...}
579
+ <a name="M000094"></a><b>permutation</b>(n=size) {|[]| ...}
575
580
  </div>
576
581
  <div class="description">
577
582
  <p>
578
583
  Permutation provids the possible orders of an enumerable. Each is indexed
579
- by a <a href="Array.html#M000145">permutation</a> number. The maximum
584
+ by a <a href="Array.html#M000094">permutation</a> number. The maximum
580
585
  number of arrangements is the factorial of the size of the array.
581
586
  </p>
582
587
  <p>
@@ -584,8 +589,8 @@ CREDIT: Shin-ichiro Hara
584
589
  </p>
585
590
  </div>
586
591
  <div class="sourcecode">
587
- <p class="source-link">[ <a href="javascript:toggleSource('M000145_source')" id="l_M000145_source">+</a> ]</p>
588
- <div id="M000145_source" class="dyn-source">
592
+ <p class="source-link">[ <a href="javascript:toggleSource('M000094_source')" id="l_M000094_source">+</a> ]</p>
593
+ <div id="M000094_source" class="dyn-source">
589
594
  <pre>
590
595
  <span class="ruby-comment cmt"># File lib/core/facets/array/permutation.rb, line 11</span>
591
596
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">permutation</span>(<span class="ruby-identifier">n</span>=<span class="ruby-identifier">size</span>)
@@ -609,23 +614,16 @@ CREDIT: Shin-ichiro Hara
609
614
  </div>
610
615
  <div class="method">
611
616
  <div class="title">
612
- <a name="M000133"></a><b>product</b>(*enums, &amp;block)
617
+ <a name="M000082"></a><b>product</b>(*enums)
613
618
  </div>
614
619
  <div class="description">
615
620
  <p>
616
- Provides the cross-<a href="Array.html#M000133">product</a> of two or more
617
- Enumerables. This is the class-level method. The instance method calls on
618
- this.
621
+ Provides the cartesian <a href="Array.html#M000082">product</a> of two or
622
+ more arrays.
619
623
  </p>
620
624
  <pre>
621
- Enumerable.cartesian_product([1,2], [4], [&quot;apple&quot;, &quot;banana&quot;])
622
- #=&gt; [[1, 4, &quot;apple&quot;], [1, 4, &quot;banana&quot;], [2, 4, &quot;apple&quot;], [2, 4, &quot;banana&quot;]]
623
-
624
- Enumerable.cartesian_product([1,2], [3,4])
625
- #=&gt; [[1, 3], [1, 4], [2, 3], [2, 4]]
626
-
627
625
  a = []
628
- [1,2].cart([4,5]){|elem| a &lt;&lt; elem }
626
+ [1,2].product([4,5])
629
627
  a #=&gt; [[1, 4],[1, 5],[2, 4],[2, 5]]
630
628
  </pre>
631
629
  <p>
@@ -634,14 +632,14 @@ CREDIT: Thomas Hafner
634
632
  </div>
635
633
  <div class="aka">
636
634
  This method is also aliased as
637
- <a href="Array.html#M000134">**</a>
635
+ <a href="Array.html#M000083">**</a>
638
636
  </div>
639
637
  <div class="sourcecode">
640
- <p class="source-link">[ <a href="javascript:toggleSource('M000133_source')" id="l_M000133_source">+</a> ]</p>
641
- <div id="M000133_source" class="dyn-source">
638
+ <p class="source-link">[ <a href="javascript:toggleSource('M000082_source')" id="l_M000082_source">+</a> ]</p>
639
+ <div id="M000082_source" class="dyn-source">
642
640
  <pre>
643
- <span class="ruby-comment cmt"># File lib/core/facets/array/product.rb, line 21</span>
644
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">product</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">enums</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
641
+ <span class="ruby-comment cmt"># File lib/core/facets/array/product.rb, line 13</span>
642
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">product</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">enums</span>)
645
643
  <span class="ruby-identifier">enums</span>.<span class="ruby-identifier">unshift</span> <span class="ruby-keyword kw">self</span>
646
644
  <span class="ruby-identifier">result</span> = [[]]
647
645
  <span class="ruby-keyword kw">while</span> [] <span class="ruby-operator">!=</span> <span class="ruby-identifier">enums</span>
@@ -653,11 +651,7 @@ CREDIT: Thomas Hafner
653
651
  <span class="ruby-keyword kw">end</span>
654
652
  <span class="ruby-keyword kw">end</span>
655
653
  <span class="ruby-keyword kw">end</span>
656
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
657
- <span class="ruby-identifier">result</span>.<span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">e</span>) }
658
- <span class="ruby-keyword kw">else</span>
659
- <span class="ruby-identifier">result</span>
660
- <span class="ruby-keyword kw">end</span>
654
+ <span class="ruby-identifier">result</span>
661
655
  <span class="ruby-keyword kw">end</span>
662
656
  </pre>
663
657
  </div>
@@ -665,11 +659,11 @@ CREDIT: Thomas Hafner
665
659
  </div>
666
660
  <div class="method">
667
661
  <div class="title">
668
- <a name="M000135"></a><b>recursively</b>() {|a| ...}
662
+ <a name="M000084"></a><b>recursively</b>() {|a| ...}
669
663
  </div>
670
664
  <div class="description">
671
665
  <p>
672
- Apply a block to hash, and <a href="Array.html#M000135">recursively</a>
666
+ Apply a block to hash, and <a href="Array.html#M000084">recursively</a>
673
667
  apply that block to each subhash.
674
668
  </p>
675
669
  <pre>
@@ -682,8 +676,8 @@ TODO: Can this be generalized in Enumerbale?
682
676
  </p>
683
677
  </div>
684
678
  <div class="sourcecode">
685
- <p class="source-link">[ <a href="javascript:toggleSource('M000135_source')" id="l_M000135_source">+</a> ]</p>
686
- <div id="M000135_source" class="dyn-source">
679
+ <p class="source-link">[ <a href="javascript:toggleSource('M000084_source')" id="l_M000084_source">+</a> ]</p>
680
+ <div id="M000084_source" class="dyn-source">
687
681
  <pre>
688
682
  <span class="ruby-comment cmt"># File lib/core/facets/array/recursively.rb, line 12</span>
689
683
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recursively</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -703,16 +697,16 @@ TODO: Can this be generalized in Enumerbale?
703
697
  </div>
704
698
  <div class="method">
705
699
  <div class="title">
706
- <a name="M000136"></a><b>recursively!</b>(&amp;block)
700
+ <a name="M000085"></a><b>recursively!</b>(&amp;block)
707
701
  </div>
708
702
  <div class="description">
709
703
  <p>
710
- In place form of <a href="Array.html#M000135">recursively</a>.
704
+ In place form of <a href="Array.html#M000084">recursively</a>.
711
705
  </p>
712
706
  </div>
713
707
  <div class="sourcecode">
714
- <p class="source-link">[ <a href="javascript:toggleSource('M000136_source')" id="l_M000136_source">+</a> ]</p>
715
- <div id="M000136_source" class="dyn-source">
708
+ <p class="source-link">[ <a href="javascript:toggleSource('M000085_source')" id="l_M000085_source">+</a> ]</p>
709
+ <div id="M000085_source" class="dyn-source">
716
710
  <pre>
717
711
  <span class="ruby-comment cmt"># File lib/core/facets/array/recursively.rb, line 26</span>
718
712
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recursively!</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -724,7 +718,7 @@ In place form of <a href="Array.html#M000135">recursively</a>.
724
718
  </div>
725
719
  <div class="method">
726
720
  <div class="title">
727
- <a name="M000139"></a><b>rotate</b>(n=1)
721
+ <a name="M000088"></a><b>rotate</b>(n=1)
728
722
  </div>
729
723
  <div class="description">
730
724
  <p>
@@ -747,8 +741,8 @@ CREDIT: Florian Gross, Thomas Sawyer
747
741
  </p>
748
742
  </div>
749
743
  <div class="sourcecode">
750
- <p class="source-link">[ <a href="javascript:toggleSource('M000139_source')" id="l_M000139_source">+</a> ]</p>
751
- <div id="M000139_source" class="dyn-source">
744
+ <p class="source-link">[ <a href="javascript:toggleSource('M000088_source')" id="l_M000088_source">+</a> ]</p>
745
+ <div id="M000088_source" class="dyn-source">
752
746
  <pre>
753
747
  <span class="ruby-comment cmt"># File lib/core/facets/array/rotate.rb, line 16</span>
754
748
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rotate</span>(<span class="ruby-identifier">n</span>=<span class="ruby-value">1</span>)
@@ -760,11 +754,11 @@ CREDIT: Florian Gross, Thomas Sawyer
760
754
  </div>
761
755
  <div class="method">
762
756
  <div class="title">
763
- <a name="M000140"></a><b>rotate!</b>(n=1)
757
+ <a name="M000089"></a><b>rotate!</b>(n=1)
764
758
  </div>
765
759
  <div class="description">
766
760
  <p>
767
- Same as <a href="Array.html#M000139">rotate</a>, but acts in place.
761
+ Same as <a href="Array.html#M000088">rotate</a>, but acts in place.
768
762
  </p>
769
763
  <pre>
770
764
  a = [1,2,3]
@@ -776,8 +770,8 @@ CREDIT: Florian Gross, Thomas Sawyer
776
770
  </p>
777
771
  </div>
778
772
  <div class="sourcecode">
779
- <p class="source-link">[ <a href="javascript:toggleSource('M000140_source')" id="l_M000140_source">+</a> ]</p>
780
- <div id="M000140_source" class="dyn-source">
773
+ <p class="source-link">[ <a href="javascript:toggleSource('M000089_source')" id="l_M000089_source">+</a> ]</p>
774
+ <div id="M000089_source" class="dyn-source">
781
775
  <pre>
782
776
  <span class="ruby-comment cmt"># File lib/core/facets/array/rotate.rb, line 28</span>
783
777
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rotate!</span>(<span class="ruby-identifier">n</span>=<span class="ruby-value">1</span>)
@@ -796,7 +790,7 @@ CREDIT: Florian Gross, Thomas Sawyer
796
790
  </div>
797
791
  <div class="method">
798
792
  <div class="title">
799
- <a name="M000146"></a><b>select!</b>( {|| ...}
793
+ <a name="M000095"></a><b>select!</b>( {|| ...}
800
794
  </div>
801
795
  <div class="description">
802
796
  <p>
@@ -812,8 +806,8 @@ CREDIT: Gavin Sinclair
812
806
  </p>
813
807
  </div>
814
808
  <div class="sourcecode">
815
- <p class="source-link">[ <a href="javascript:toggleSource('M000146_source')" id="l_M000146_source">+</a> ]</p>
816
- <div id="M000146_source" class="dyn-source">
809
+ <p class="source-link">[ <a href="javascript:toggleSource('M000095_source')" id="l_M000095_source">+</a> ]</p>
810
+ <div id="M000095_source" class="dyn-source">
817
811
  <pre>
818
812
  <span class="ruby-comment cmt"># File lib/core/facets/array/select.rb, line 11</span>
819
813
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">select!</span> <span class="ruby-comment cmt"># :yield:</span>
@@ -825,11 +819,11 @@ CREDIT: Gavin Sinclair
825
819
  </div>
826
820
  <div class="method">
827
821
  <div class="title">
828
- <a name="M000152"></a><b>splice</b>(*args)
822
+ <a name="M000101"></a><b>splice</b>(*args)
829
823
  </div>
830
824
  <div class="description">
831
825
  <p>
832
- Splice acts a <a href="Array.html#M000149">combination</a> of slice! and
826
+ Splice acts a <a href="Array.html#M000098">combination</a> of slice! and
833
827
  store. If two arguments are given it calls store. If a single argument is
834
828
  give it calls slice!.
835
829
  </p>
@@ -847,8 +841,8 @@ CREDIT: Trans
847
841
  </p>
848
842
  </div>
849
843
  <div class="sourcecode">
850
- <p class="source-link">[ <a href="javascript:toggleSource('M000152_source')" id="l_M000152_source">+</a> ]</p>
851
- <div id="M000152_source" class="dyn-source">
844
+ <p class="source-link">[ <a href="javascript:toggleSource('M000101_source')" id="l_M000101_source">+</a> ]</p>
845
+ <div id="M000101_source" class="dyn-source">
852
846
  <pre>
853
847
  <span class="ruby-comment cmt"># File lib/core/facets/array/splice.rb, line 17</span>
854
848
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">splice</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
@@ -864,7 +858,7 @@ CREDIT: Trans
864
858
  </div>
865
859
  <div class="method">
866
860
  <div class="title">
867
- <a name="M000132"></a><b>to_b</b>()
861
+ <a name="M000081"></a><b>to_b</b>()
868
862
  </div>
869
863
  <div class="description">
870
864
  <p>
@@ -872,8 +866,8 @@ Boolean conversion for not empty?
872
866
  </p>
873
867
  </div>
874
868
  <div class="sourcecode">
875
- <p class="source-link">[ <a href="javascript:toggleSource('M000132_source')" id="l_M000132_source">+</a> ]</p>
876
- <div id="M000132_source" class="dyn-source">
869
+ <p class="source-link">[ <a href="javascript:toggleSource('M000081_source')" id="l_M000081_source">+</a> ]</p>
870
+ <div id="M000081_source" class="dyn-source">
877
871
  <pre>
878
872
  <span class="ruby-comment cmt"># File lib/core/facets/boolean.rb, line 60</span>
879
873
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_b</span>
@@ -885,51 +879,253 @@ Boolean conversion for not empty?
885
879
  </div>
886
880
  <div class="method">
887
881
  <div class="title">
888
- <a name="M000131"></a><b>to_h</b>(arrayed=nil)
882
+ <a name="M000075"></a><b>to_h</b>(mode=nil)
889
883
  </div>
890
884
  <div class="description">
891
885
  <p>
892
- Converts a two-element associative array into a hash.
886
+ Converts an array into a hash. Converting an array into a hash is not a
887
+ one-to-one conversion, for this reason <a
888
+ href="Array.html#M000075">to_h</a> examines at the array being converted
889
+ and then dispatches the conversion to the most sutiable specialized
890
+ function. There are three possiblities for this.
891
+ </p>
892
+ <p>
893
+ If the array is a collection of perfect pairs, like that which Hash#to_a
894
+ generates, then conversion is handled by <a
895
+ href="Array.html#M000078">to_h_flat</a>.
893
896
  </p>
894
897
  <pre>
895
898
  a = [ [:a,1], [:b,2] ]
896
899
  a.to_h #=&gt; { :a=&gt;1, :b=&gt;2 }
897
900
  </pre>
898
901
  <p>
899
- If <tt>arrayed</tt> is set it will maintain trailing arrays.
902
+ If the array contains <a href="Array.html#M000097">only</a> arrays, but are
903
+ not perfect pairs, then <a href="Array.html#M000080">to_h_multi</a> is
904
+ called.
905
+ </p>
906
+ <pre>
907
+ a = [ [:a,1,2], [:b,2], [:c], [:d] ]
908
+ a.to_h #=&gt; { :a=&gt;[1,2], :b=&gt;[2], :c=&gt;[], :d=&gt;[] }
909
+ </pre>
910
+ <p>
911
+ If the array contians objects other then arrays then the <a
912
+ href="Array.html#M000077">to_h_splat</a> method is called.
900
913
  </p>
901
914
  <pre>
902
- a = [ [:a,1,2], [:b,3] ]
903
- a.to_h(true) #=&gt; { :a=&gt;[1,2], :b=&gt;[3] }
915
+ a = [ [:a,1,2], 2, :b, [:c,3], 9 ]
916
+ a.to_h #=&gt; { [:a,1,2]=&gt;2, :b=&gt;[:c,3], 9=&gt;nil }
904
917
  </pre>
905
918
  <p>
906
- Note that the use of a values parameter has been deprecated because that
907
- functionality is as simple as:
919
+ Finally, a particular dispatch can be forced by specifying the
920
+ <tt>mode</tt> of conversion, eg. +:multi+, +:splat+, +:flat+, +:assoc+,
921
+ etc.
922
+ </p>
923
+ <p>
924
+ Setting <tt>mode</tt> to <tt>true</tt> is the same as setting it +:multi+.
925
+ This has been left in for backward compatability.
926
+ </p>
927
+ <p>
928
+ NOTE: The use of a <tt>values</tt> parameter has been deprecated because
929
+ that functionality is as simple as:
908
930
  </p>
909
931
  <pre>
910
932
  array1.zip(array2).to_h
911
933
  </pre>
912
934
  <p>
913
- CREDIT: Trans
935
+ CREDIT: Robert Klemme CREDIT: Trans
914
936
  </p>
915
937
  </div>
916
938
  <div class="sourcecode">
917
- <p class="source-link">[ <a href="javascript:toggleSource('M000131_source')" id="l_M000131_source">+</a> ]</p>
918
- <div id="M000131_source" class="dyn-source">
939
+ <p class="source-link">[ <a href="javascript:toggleSource('M000075_source')" id="l_M000075_source">+</a> ]</p>
940
+ <div id="M000075_source" class="dyn-source">
919
941
  <pre>
920
- <span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 20</span>
921
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_h</span>(<span class="ruby-identifier">arrayed</span>=<span class="ruby-keyword kw">nil</span>)
922
- <span class="ruby-identifier">h</span> = {}
923
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arrayed</span> <span class="ruby-comment cmt">#or (flatten.size % 2 == 1)</span>
924
- <span class="ruby-comment cmt">#each{ |e| h[e.first] = e.slice(1..-1) }</span>
925
- <span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-operator">*</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span> }
942
+ <span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 98</span>
943
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_h</span>(<span class="ruby-identifier">mode</span>=<span class="ruby-keyword kw">nil</span>)
944
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">mode</span>
945
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:splat</span>
946
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">to_h_splat</span>
947
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:flat</span>
948
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">to_h_flat</span>
949
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:multi</span>, <span class="ruby-keyword kw">true</span>
950
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">to_h_multi</span>
951
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:assoc</span>
952
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">to_h_assoc</span>
926
953
  <span class="ruby-keyword kw">else</span>
927
- <span class="ruby-comment cmt">#h = Hash[*flatten(1)] # TODO Use in 1.9 instead.</span>
928
- <span class="ruby-identifier">ary</span> = []
929
- <span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span>
930
- <span class="ruby-constant">Array</span><span class="ruby-operator">===</span><span class="ruby-identifier">a</span> <span class="ruby-value">? </span><span class="ruby-identifier">ary</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">a</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">ary</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">a</span>
954
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">to_h_auto</span>
955
+ <span class="ruby-keyword kw">end</span>
956
+ <span class="ruby-keyword kw">end</span>
957
+ </pre>
958
+ </div>
959
+ </div>
960
+ </div>
961
+ <div class="method">
962
+ <div class="title">
963
+ <a name="M000079"></a><b>to_h_assoc</b>()
964
+ </div>
965
+ <div class="description">
966
+ <p>
967
+ When a mixed or multi-element accociative array is used, the result is as
968
+ follows:
969
+ </p>
970
+ <pre>
971
+ a = [ [:a,1,2], [:b,2], [:c], :d ]
972
+ a.to_h #=&gt; { :a=&gt;[1,2], :b=&gt;[2], :c=&gt;[], :d=&gt;[] }
973
+ </pre>
974
+ <p>
975
+ If the fist entry of any subelements are the same, then the value will be
976
+ set to the last occuring value.
977
+ </p>
978
+ <pre>
979
+ a = [ :x, [:x], [:x,1,2], [:x,3], [:x,4] ]
980
+ a.to_h_assoc #=&gt; { :x=&gt;4 }
981
+ </pre>
982
+ </div>
983
+ <div class="sourcecode">
984
+ <p class="source-link">[ <a href="javascript:toggleSource('M000079_source')" id="l_M000079_source">+</a> ]</p>
985
+ <div id="M000079_source" class="dyn-source">
986
+ <pre>
987
+ <span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 202</span>
988
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_h_assoc</span>
989
+ <span class="ruby-identifier">h</span> = {}
990
+ <span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-operator">*</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
991
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
992
+ <span class="ruby-keyword kw">end</span>
993
+ <span class="ruby-identifier">h</span>
994
+ <span class="ruby-keyword kw">end</span>
995
+ </pre>
996
+ </div>
997
+ </div>
998
+ </div>
999
+ <div class="method">
1000
+ <div class="title">
1001
+ <a name="M000076"></a><b>to_h_auto</b>()
1002
+ </div>
1003
+ <div class="description">
1004
+ <p>
1005
+ Converts an array into a hash. Converting an array into a hash is not a
1006
+ one-to-one conversion, for this reason <a
1007
+ href="Array.html#M000075">to_h</a> examines at the array being converted
1008
+ and then dispatches the conversion to the most sutiable specialized
1009
+ function. There are three possiblities for this.
1010
+ </p>
1011
+ <p>
1012
+ If the array is a collection of perfect pairs, like that which Hash#to_a
1013
+ generates, then conversion is handled by <a
1014
+ href="Array.html#M000078">to_h_flat</a>.
1015
+ </p>
1016
+ <pre>
1017
+ a = [ [:a,1], [:b,2] ]
1018
+ a.to_h #=&gt; { :a=&gt;1, :b=&gt;2 }
1019
+ </pre>
1020
+ <p>
1021
+ If the array contains <a href="Array.html#M000097">only</a> arrays, but are
1022
+ not perfect pairs, then <a href="Array.html#M000080">to_h_multi</a> is
1023
+ called.
1024
+ </p>
1025
+ <pre>
1026
+ a = [ [:a,1,2], [:b,2], [:c], [:d] ]
1027
+ a.to_h #=&gt; { :a=&gt;[1,2], :b=&gt;[2], :c=&gt;[], :d=&gt;[] }
1028
+ </pre>
1029
+ <p>
1030
+ If the array contians objects other then arrays then the <a
1031
+ href="Array.html#M000077">to_h_splat</a> method is called.
1032
+ </p>
1033
+ <pre>
1034
+ a = [ [:a,1,2], 2, :b, [:c,3], 9 ]
1035
+ a.to_h #=&gt; { [:a,1,2]=&gt;2, :b=&gt;[:c,3], 9=&gt;nil }
1036
+ </pre>
1037
+ </div>
1038
+ <div class="sourcecode">
1039
+ <p class="source-link">[ <a href="javascript:toggleSource('M000076_source')" id="l_M000076_source">+</a> ]</p>
1040
+ <div id="M000076_source" class="dyn-source">
1041
+ <pre>
1042
+ <span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 138</span>
1043
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_h_auto</span>
1044
+ <span class="ruby-identifier">pairs</span> = <span class="ruby-keyword kw">true</span>
1045
+ <span class="ruby-identifier">mixed</span> = <span class="ruby-keyword kw">false</span>
1046
+
1047
+ <span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span>
1048
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">e</span>
1049
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span>
1050
+ <span class="ruby-identifier">pairs</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">2</span>
1051
+ <span class="ruby-keyword kw">else</span>
1052
+ <span class="ruby-identifier">mixed</span> = <span class="ruby-keyword kw">true</span>
931
1053
  <span class="ruby-keyword kw">end</span>
932
- <span class="ruby-identifier">h</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-operator">*</span><span class="ruby-identifier">ary</span>]
1054
+ <span class="ruby-keyword kw">end</span>
1055
+
1056
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">mixed</span>
1057
+ <span class="ruby-identifier">to_h_splat</span>
1058
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">pairs</span>
1059
+ <span class="ruby-identifier">to_h_flat</span>
1060
+ <span class="ruby-keyword kw">else</span>
1061
+ <span class="ruby-identifier">to_h_multi</span>
1062
+ <span class="ruby-keyword kw">end</span>
1063
+ <span class="ruby-keyword kw">end</span>
1064
+ </pre>
1065
+ </div>
1066
+ </div>
1067
+ </div>
1068
+ <div class="method">
1069
+ <div class="title">
1070
+ <a name="M000078"></a><b>to_h_flat</b>()
1071
+ </div>
1072
+ <div class="description">
1073
+ <p>
1074
+ This is equivalent to <a href="http://*array.flatten">Hash</a>, but it will
1075
+ <a href="Array.html#M000102">pad</a> the array with a <tt>nil</tt> object
1076
+ if there are not an even number of elements.
1077
+ </p>
1078
+ <pre>
1079
+ a = [:a,1,[:b,2,:c]]
1080
+ a.to_h_flat #=&gt; { :a=&gt;1, :b=&gt;2, :c=&gt;nil }
1081
+ </pre>
1082
+ </div>
1083
+ <div class="sourcecode">
1084
+ <p class="source-link">[ <a href="javascript:toggleSource('M000078_source')" id="l_M000078_source">+</a> ]</p>
1085
+ <div id="M000078_source" class="dyn-source">
1086
+ <pre>
1087
+ <span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 180</span>
1088
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_h_flat</span>
1089
+ <span class="ruby-identifier">a</span> = <span class="ruby-identifier">flatten</span>
1090
+ <span class="ruby-identifier">a</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">%</span> <span class="ruby-value">2</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1091
+ <span class="ruby-constant">Hash</span>[<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>]
1092
+ <span class="ruby-keyword kw">end</span>
1093
+ </pre>
1094
+ </div>
1095
+ </div>
1096
+ </div>
1097
+ <div class="method">
1098
+ <div class="title">
1099
+ <a name="M000080"></a><b>to_h_multi</b>()
1100
+ </div>
1101
+ <div class="description">
1102
+ <p>
1103
+ When a mixed or multi-element accociative array is used, the result is as
1104
+ follows:
1105
+ </p>
1106
+ <pre>
1107
+ a = [ [:a,1,2], [:b,2], [:c], :d ]
1108
+ a.to_h #=&gt; { :a=&gt;[1,2], :b=&gt;[2], :c=&gt;[], :d=&gt;[] }
1109
+ </pre>
1110
+ <p>
1111
+ If the fist entry of the subelements is the same, then the values will be
1112
+ merged using concat.
1113
+ </p>
1114
+ <pre>
1115
+ a = [ [:a,1,2], [:a,3], [:a,4], [:a], :a ]
1116
+ a.to_h_multi #=&gt; { :a=&gt;[1,2,3,4,nil,nil] }
1117
+ </pre>
1118
+ </div>
1119
+ <div class="sourcecode">
1120
+ <p class="source-link">[ <a href="javascript:toggleSource('M000080_source')" id="l_M000080_source">+</a> ]</p>
1121
+ <div id="M000080_source" class="dyn-source">
1122
+ <pre>
1123
+ <span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 222</span>
1124
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_h_multi</span>
1125
+ <span class="ruby-identifier">h</span> = {}
1126
+ <span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-operator">*</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
1127
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">||=</span> []
1128
+ <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>].<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">v</span>)
933
1129
  <span class="ruby-keyword kw">end</span>
934
1130
  <span class="ruby-identifier">h</span>
935
1131
  <span class="ruby-keyword kw">end</span>
@@ -939,11 +1135,40 @@ CREDIT: Trans
939
1135
  </div>
940
1136
  <div class="method">
941
1137
  <div class="title">
942
- <a name="M000143"></a><b>traverse</b>() {|item| ...}
1138
+ <a name="M000077"></a><b>to_h_splat</b>()
1139
+ </div>
1140
+ <div class="description">
1141
+ <p>
1142
+ This is equivalent to <a href="Hash.html">Hash</a>[*array], but it will <a
1143
+ href="Array.html#M000102">pad</a> the array with a <tt>nil</tt> object if
1144
+ there are not an even number of elements.
1145
+ </p>
1146
+ <pre>
1147
+ a = [:a,1,:b,2,:c]
1148
+ a.to_h_splat #=&gt; { :a=&gt;1, :b=&gt;2, :c=&gt;nil }
1149
+ </pre>
1150
+ </div>
1151
+ <div class="sourcecode">
1152
+ <p class="source-link">[ <a href="javascript:toggleSource('M000077_source')" id="l_M000077_source">+</a> ]</p>
1153
+ <div id="M000077_source" class="dyn-source">
1154
+ <pre>
1155
+ <span class="ruby-comment cmt"># File lib/core/facets/to_hash.rb, line 167</span>
1156
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_h_splat</span>
1157
+ <span class="ruby-identifier">a</span> = <span class="ruby-identifier">dup</span>
1158
+ <span class="ruby-identifier">a</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">%</span> <span class="ruby-value">2</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1159
+ <span class="ruby-constant">Hash</span>[<span class="ruby-operator">*</span><span class="ruby-identifier">a</span>]
1160
+ <span class="ruby-keyword kw">end</span>
1161
+ </pre>
1162
+ </div>
1163
+ </div>
1164
+ </div>
1165
+ <div class="method">
1166
+ <div class="title">
1167
+ <a name="M000092"></a><b>traverse</b>() {|item| ...}
943
1168
  </div>
944
1169
  <div class="sourcecode">
945
- <p class="source-link">[ <a href="javascript:toggleSource('M000143_source')" id="l_M000143_source">+</a> ]</p>
946
- <div id="M000143_source" class="dyn-source">
1170
+ <p class="source-link">[ <a href="javascript:toggleSource('M000092_source')" id="l_M000092_source">+</a> ]</p>
1171
+ <div id="M000092_source" class="dyn-source">
947
1172
  <pre>
948
1173
  <span class="ruby-comment cmt"># File lib/core/facets/array/traverse.rb, line 5</span>
949
1174
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">traverse</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -961,11 +1186,11 @@ CREDIT: Trans
961
1186
  </div>
962
1187
  <div class="method">
963
1188
  <div class="title">
964
- <a name="M000144"></a><b>traverse!</b>(&amp;block)
1189
+ <a name="M000093"></a><b>traverse!</b>(&amp;block)
965
1190
  </div>
966
1191
  <div class="sourcecode">
967
- <p class="source-link">[ <a href="javascript:toggleSource('M000144_source')" id="l_M000144_source">+</a> ]</p>
968
- <div id="M000144_source" class="dyn-source">
1192
+ <p class="source-link">[ <a href="javascript:toggleSource('M000093_source')" id="l_M000093_source">+</a> ]</p>
1193
+ <div id="M000093_source" class="dyn-source">
969
1194
  <pre>
970
1195
  <span class="ruby-comment cmt"># File lib/core/facets/array/traverse.rb, line 17</span>
971
1196
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">traverse!</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)