facets 3.0.0 → 3.2.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 (748) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.md +112 -0
  3. data/HISTORY.md +179 -0
  4. data/LICENSE.txt +21 -343
  5. data/{README.rdoc → README.md} +74 -67
  6. data/lib/core/facets/array/arrange.rb +1 -42
  7. data/lib/core/facets/array/average.rb +15 -0
  8. data/lib/core/facets/array/before.rb +1 -1
  9. data/lib/core/facets/array/collapse.rb +4 -0
  10. data/lib/core/facets/array/delete_first.rb +21 -0
  11. data/lib/core/facets/array/delete_values_at.rb +1 -0
  12. data/lib/core/facets/array/divide.rb +7 -0
  13. data/lib/core/facets/array/duplicates.rb +15 -0
  14. data/lib/core/facets/array/each_pair.rb +1 -4
  15. data/lib/core/facets/array/first.rb +1 -0
  16. data/lib/core/facets/array/from.rb +11 -16
  17. data/lib/core/facets/array/indexes.rb +113 -0
  18. data/lib/core/facets/array/last.rb +1 -0
  19. data/lib/core/facets/array/mode.rb +2 -2
  20. data/lib/core/facets/array/nonuniq.rb +6 -8
  21. data/lib/core/facets/array/occurrence.rb +8 -4
  22. data/lib/core/facets/array/probability.rb +1 -1
  23. data/lib/core/facets/array/recursively.rb +2 -2
  24. data/lib/core/facets/array/remove.rb +39 -0
  25. data/lib/core/facets/array/span.rb +29 -0
  26. data/lib/core/facets/array/splice.rb +1 -1
  27. data/lib/core/facets/array/split_at.rb +25 -0
  28. data/lib/core/facets/array/standard_deviation.rb +28 -0
  29. data/lib/core/facets/array/step.rb +12 -14
  30. data/lib/core/facets/array/to_ranges.rb +48 -0
  31. data/lib/core/facets/array/uniq_by.rb +7 -3
  32. data/lib/core/facets/array/variance.rb +20 -0
  33. data/lib/core/facets/array.rb +1 -0
  34. data/lib/core/facets/binding/caller.rb +8 -2
  35. data/lib/core/facets/binding/op_get.rb +7 -11
  36. data/lib/core/facets/binding/self.rb +4 -10
  37. data/lib/core/facets/binding.rb +0 -1
  38. data/lib/core/facets/boolean.rb +1 -1
  39. data/lib/core/facets/class/descendants.rb +0 -2
  40. data/lib/core/facets/class.rb +2 -2
  41. data/lib/core/facets/comparable/bound.rb +13 -1
  42. data/lib/core/facets/comparable/clip.rb +3 -32
  43. data/lib/core/facets/denumerable.rb +0 -3
  44. data/lib/core/facets/dir/find.rb +20 -0
  45. data/lib/core/facets/dir/recurse.rb +8 -26
  46. data/lib/core/facets/enumerable/cluster.rb +6 -4
  47. data/lib/core/facets/enumerable/compact_map.rb +2 -12
  48. data/lib/core/facets/enumerable/defer.rb +2 -13
  49. data/lib/core/facets/enumerable/each_by.rb +0 -2
  50. data/lib/core/facets/enumerable/frequency.rb +2 -2
  51. data/lib/core/facets/enumerable/hashify.rb +27 -31
  52. data/lib/core/facets/enumerable/hinge.rb +3 -4
  53. data/lib/core/facets/enumerable/map_with_index.rb +3 -6
  54. data/lib/core/facets/enumerable/mash.rb +5 -28
  55. data/lib/core/facets/enumerable/uniq_by.rb +4 -8
  56. data/lib/core/facets/enumerable/with_position.rb +58 -0
  57. data/lib/core/facets/enumerator.rb +2 -75
  58. data/lib/core/facets/exception/error_print.rb +6 -71
  59. data/lib/core/facets/file/atomic_open.rb +1 -1
  60. data/lib/core/facets/file/null.rb +3 -15
  61. data/lib/core/facets/file/read_binary.rb +3 -12
  62. data/lib/core/facets/hash/except.rb +11 -6
  63. data/lib/core/facets/hash/fetch_nested.rb +8 -9
  64. data/lib/core/facets/hash/graph.rb +1 -1
  65. data/lib/core/facets/hash/rekey.rb +3 -3
  66. data/lib/core/facets/hash/revalue.rb +3 -3
  67. data/lib/core/facets/hash/{to_proc.rb → setter.rb} +8 -9
  68. data/lib/core/facets/hash/slice.rb +0 -26
  69. data/lib/core/facets/hash/update_keys.rb +4 -11
  70. data/lib/core/facets/hash/update_values.rb +4 -10
  71. data/lib/core/facets/indexable.rb +7 -5
  72. data/lib/core/facets/kernel/callstack.rb +5 -24
  73. data/lib/core/facets/kernel/eigenclass.rb +6 -6
  74. data/lib/core/facets/kernel/ergo.rb +3 -3
  75. data/lib/core/facets/kernel/extension.rb +3 -6
  76. data/lib/core/facets/kernel/functor.rb +16 -0
  77. data/lib/core/facets/kernel/instance_class.rb +4 -20
  78. data/lib/core/facets/kernel/instance_send.rb +5 -3
  79. data/lib/core/facets/kernel/like.rb +1 -1
  80. data/lib/core/facets/kernel/load_relative.rb +8 -20
  81. data/lib/core/facets/kernel/memo.rb +4 -26
  82. data/lib/core/facets/kernel/meta_class.rb +10 -6
  83. data/lib/core/facets/kernel/object_class.rb +5 -6
  84. data/lib/core/facets/kernel/object_send.rb +5 -26
  85. data/lib/core/facets/kernel/qua_class.rb +4 -20
  86. data/lib/core/facets/kernel/require_all.rb +8 -20
  87. data/lib/core/facets/kernel/returning.rb +3 -19
  88. data/lib/core/facets/kernel/tap.rb +3 -36
  89. data/lib/core/facets/kernel/tee.rb +2 -0
  90. data/lib/core/facets/kernel/try.rb +38 -28
  91. data/lib/core/facets/kernel.rb +2 -4
  92. data/lib/core/facets/lazy.rb +1 -1
  93. data/lib/core/facets/matchdata/matchtree.rb +2 -0
  94. data/lib/core/facets/module/alias_method_chain.rb +4 -43
  95. data/lib/core/facets/module/attr_setter.rb +3 -2
  96. data/lib/core/facets/module/can.rb +5 -16
  97. data/lib/core/facets/module/class_extend.rb +2 -2
  98. data/lib/core/facets/numeric/delimit.rb +20 -0
  99. data/lib/core/facets/object/dup.rb +0 -46
  100. data/lib/core/facets/proc/bind.rb +0 -2
  101. data/lib/core/facets/proc/compose.rb +7 -28
  102. data/lib/core/facets/proc/to_method.rb +0 -1
  103. data/lib/core/facets/proc/update.rb +8 -1
  104. data/lib/core/facets/range/intersection.rb +42 -0
  105. data/lib/core/facets/range/nudge.rb +27 -0
  106. data/lib/core/facets/string/ascii_only.rb +2 -2
  107. data/lib/core/facets/string/cleanlines.rb +0 -2
  108. data/lib/core/facets/string/dashcase.rb +21 -0
  109. data/lib/core/facets/string/indent.rb +0 -8
  110. data/lib/core/facets/string/lchomp.rb +7 -14
  111. data/lib/core/facets/string/margin.rb +0 -4
  112. data/lib/core/facets/string/newlines.rb +0 -2
  113. data/lib/core/facets/string/random.rb +13 -3
  114. data/lib/core/facets/string/similarity.rb +7 -6
  115. data/lib/core/facets/string/snakecase.rb +12 -5
  116. data/lib/core/facets/string/words.rb +13 -1
  117. data/lib/core/facets/string.rb +0 -3
  118. data/lib/core/facets/struct/attributes.rb +2 -3
  119. data/lib/core/facets/time/trunc.rb +12 -5
  120. data/lib/core/facets/unboundmethod/arguments.rb +1 -0
  121. data/lib/core/facets/version.rb +1 -17
  122. data/lib/core/facets.rb +0 -1
  123. data/lib/standard/facets/argvector.rb +1 -1
  124. data/lib/standard/facets/cgi/escape_html.rb +14 -25
  125. data/lib/standard/facets/cloneable.rb +4 -51
  126. data/lib/standard/facets/continuation.rb +2 -56
  127. data/lib/standard/facets/crypt3.rb +126 -0
  128. data/lib/standard/facets/date/cmp.rb +32 -0
  129. data/lib/standard/facets/date.rb +1 -0
  130. data/lib/standard/facets/digest.rb +0 -1
  131. data/lib/standard/facets/enumargs.rb +5 -0
  132. data/lib/standard/facets/fileutils/cp_rx.rb +0 -2
  133. data/lib/standard/facets/fileutils/ln_r.rb +0 -1
  134. data/lib/standard/facets/find/select.rb +0 -2
  135. data/lib/standard/facets/getoptlong.rb +3 -59
  136. data/lib/standard/facets/load_monitor.rb +2 -26
  137. data/lib/standard/facets/math/gini_coefficient.rb +5 -4
  138. data/lib/standard/facets/math/kldivergence.rb +8 -7
  139. data/lib/standard/facets/math/percentile.rb +2 -2
  140. data/lib/standard/facets/multiton.rb +1 -1
  141. data/lib/standard/facets/net/http.rb +33 -14
  142. data/lib/standard/facets/ostruct/initialize.rb +4 -19
  143. data/lib/standard/facets/ostruct/to_ostruct.rb +2 -1
  144. data/lib/standard/facets/ostruct.rb +0 -88
  145. data/lib/standard/facets/pathname/empty.rb +2 -10
  146. data/lib/standard/facets/pathname/glob.rb +19 -12
  147. data/lib/standard/facets/pathname/null.rb +3 -14
  148. data/lib/standard/facets/random.rb +47 -133
  149. data/lib/standard/facets/timer.rb +3 -3
  150. data/lib/standard/facets/tuple.rb +2 -4
  151. data/lib/standard/facets/uri.rb +3 -2
  152. metadata +84 -1181
  153. data/.index +0 -76
  154. data/.yardopts +0 -10
  155. data/CONTRIBUTE.md +0 -78
  156. data/NOTICE.rdoc +0 -167
  157. data/demo/applique/assertion_framework.rb +0 -1
  158. data/demo/applique/file_helpers.rb +0 -34
  159. data/demo/core/array/combination.rdoc +0 -19
  160. data/demo/core/array/delete.rdoc +0 -23
  161. data/demo/core/array/index.rdoc +0 -14
  162. data/demo/core/array/merge.rdoc +0 -15
  163. data/demo/core/array/only.rdoc +0 -9
  164. data/demo/core/array/pad.rdoc +0 -28
  165. data/demo/core/array/permutation.rdoc +0 -10
  166. data/demo/core/array/product.rdoc +0 -26
  167. data/demo/core/array/recursively.rdoc +0 -16
  168. data/demo/core/array/rotate.rdoc +0 -30
  169. data/demo/core/array/select.rdoc +0 -8
  170. data/demo/core/array/uniq_by.rdoc +0 -9
  171. data/demo/core/binding/caller.rdoc +0 -57
  172. data/demo/core/binding/defined.rdoc +0 -10
  173. data/demo/core/binding/eval.rdoc +0 -8
  174. data/demo/core/binding/local_variables.rdoc +0 -26
  175. data/demo/core/binding/opvars.rdoc +0 -16
  176. data/demo/core/binding/self.rdoc +0 -6
  177. data/demo/core/class/descendants.rdoc +0 -10
  178. data/demo/core/class/to_proc.rdoc +0 -8
  179. data/demo/core/comparable/cap.rdoc +0 -20
  180. data/demo/core/comparable/clip.rdoc +0 -37
  181. data/demo/core/comparable/cmp.rdoc +0 -18
  182. data/demo/core/comparable/op_get.rdoc +0 -29
  183. data/demo/core/dir/ascend.rdoc +0 -24
  184. data/demo/core/dir/descend.rdoc +0 -14
  185. data/demo/core/dir/multiglob.rdoc +0 -41
  186. data/demo/core/dir/parent.rdoc +0 -6
  187. data/demo/core/dir/recurse.rdoc +0 -41
  188. data/demo/core/exception/detail.rdoc +0 -12
  189. data/demo/core/facets.rdoc +0 -6
  190. data/demo/core/filetest/root.rdoc +0 -6
  191. data/demo/core/hash/recursively.rdoc +0 -21
  192. data/demo/core/indexable.rdoc +0 -95
  193. data/demo/core/integer/bitmask.rdoc +0 -46
  194. data/demo/core/integer/even.rdoc +0 -12
  195. data/demo/core/integer/factorial.rdoc +0 -10
  196. data/demo/core/integer/length.rdoc +0 -7
  197. data/demo/core/integer/multiple.rdoc +0 -10
  198. data/demo/core/integer/odd.rdoc +0 -12
  199. data/demo/core/integer/of.rdoc +0 -14
  200. data/demo/core/integer/ordinal.rdoc +0 -9
  201. data/demo/core/matchdata/match.rdoc +0 -7
  202. data/demo/core/matchdata/matchset.rdoc +0 -15
  203. data/demo/core/module/cattr.rdoc +0 -43
  204. data/demo/core/module/class_extend.rdoc +0 -64
  205. data/demo/core/module/class_inheritor.rdoc +0 -126
  206. data/demo/core/module/copy_inheritor.rdoc +0 -30
  207. data/demo/core/module/method_space.rdoc +0 -55
  208. data/demo/core/string/align.rdoc +0 -34
  209. data/demo/core/string/bracket.rdoc +0 -35
  210. data/demo/core/string/bytes.rdoc +0 -8
  211. data/demo/core/string/camelcase.rdoc +0 -47
  212. data/demo/core/string/capitalized.rdoc +0 -27
  213. data/demo/core/string/characters.rdoc +0 -11
  214. data/demo/core/string/cleanlines.rdoc +0 -10
  215. data/demo/core/string/cleave.rdoc +0 -49
  216. data/demo/core/string/divide.rdoc +0 -9
  217. data/demo/core/string/each_char.rdoc +0 -9
  218. data/demo/core/string/each_word.rdoc +0 -9
  219. data/demo/core/string/end_with.rdoc +0 -6
  220. data/demo/core/string/expand_tabs.rdoc +0 -69
  221. data/demo/core/string/fold.rdoc +0 -14
  222. data/demo/core/string/indent.rdoc +0 -65
  223. data/demo/core/string/interpolate.rdoc +0 -7
  224. data/demo/core/string/lchomp.rdoc +0 -14
  225. data/demo/core/string/line_wrap.rdoc +0 -7
  226. data/demo/core/string/lines.rdoc +0 -8
  227. data/demo/core/string/margin.rdoc +0 -92
  228. data/demo/core/string/methodize.rdoc +0 -22
  229. data/demo/core/string/modulize.rdoc +0 -22
  230. data/demo/core/string/mscan.rdoc +0 -10
  231. data/demo/core/string/natcmp.rdoc +0 -10
  232. data/demo/core/string/nchar.rdoc +0 -9
  233. data/demo/core/string/newlines.rdoc +0 -9
  234. data/demo/core/string/op_sub.rdoc +0 -7
  235. data/demo/core/string/pathize.rdoc +0 -22
  236. data/demo/core/string/quote.rdoc +0 -20
  237. data/demo/core/string/range.rdoc +0 -19
  238. data/demo/core/string/rewrite.rdoc +0 -9
  239. data/demo/core/string/shatter.rdoc +0 -9
  240. data/demo/core/string/snakecase.rdoc +0 -10
  241. data/demo/core/string/splice.rdoc +0 -28
  242. data/demo/core/string/start_with.rdoc +0 -7
  243. data/demo/core/string/subtract.rdoc +0 -8
  244. data/demo/core/string/tab.rdoc +0 -16
  245. data/demo/core/string/tabto.rdoc +0 -29
  246. data/demo/core/string/titlecase.rdoc +0 -8
  247. data/demo/core/string/to_re.rdoc +0 -22
  248. data/demo/core/string/unfold.rdoc +0 -9
  249. data/demo/core/string/unindent.rdoc +0 -65
  250. data/demo/core/string/unquote.rdoc +0 -6
  251. data/demo/core/string/variablize.rdoc +0 -7
  252. data/demo/core/string/word_wrap.rdoc +0 -54
  253. data/demo/core/string/words.rdoc +0 -13
  254. data/demo/core/string/xor.rdoc +0 -8
  255. data/demo/standard/02_cloneable.rdoc +0 -46
  256. data/demo/standard/03_enumargs.rdoc +0 -75
  257. data/demo/standard/04_equitable.rdoc +0 -35
  258. data/demo/standard/05_instantiable.rdoc +0 -42
  259. data/demo/standard/basic_object.rdoc +0 -22
  260. data/demo/standard/memoizable.rdoc +0 -134
  261. data/demo/standard/mulititon.rdoc +0 -156
  262. data/lib/core/facets/applique/file_helpers.rb +0 -33
  263. data/lib/core/facets/array/intersection.rb +0 -25
  264. data/lib/core/facets/array/op_pow.rb +0 -14
  265. data/lib/core/facets/array/to_h.rb +0 -22
  266. data/lib/core/facets/binding/local_variables.rb +0 -16
  267. data/lib/core/facets/class/singleton.rb +0 -1
  268. data/lib/core/facets/class/singleton_class.rb +0 -16
  269. data/lib/core/facets/class/subclasses.rb +0 -28
  270. data/lib/core/facets/dir/each_child.rb +0 -16
  271. data/lib/core/facets/enumerable/filter.rb +0 -33
  272. data/lib/core/facets/enumerable/sum.rb +0 -30
  273. data/lib/core/facets/exception/set_message.rb +0 -10
  274. data/lib/core/facets/file/write.rb +0 -24
  275. data/lib/core/facets/fixnum.rb +0 -7
  276. data/lib/core/facets/kernel/__dir__.rb +0 -28
  277. data/lib/core/facets/kernel/constant.rb +0 -22
  278. data/lib/core/facets/kernel/instance_exec.rb +0 -47
  279. data/lib/core/facets/kernel/p.rb +0 -24
  280. data/lib/core/facets/kernel/singleton_class.rb +0 -10
  281. data/lib/core/facets/matchdata/match.rb +0 -15
  282. data/lib/core/facets/method/curry.rb +0 -13
  283. data/lib/core/facets/numeric/negative.rb +0 -1
  284. data/lib/core/facets/numeric/positive.rb +0 -15
  285. data/lib/core/facets/object/itself.rb +0 -16
  286. data/lib/core/facets/object/try_dup.rb +0 -1
  287. data/lib/core/facets/process/daemon.rb +0 -32
  288. data/lib/core/facets/range/overlap.rb +0 -12
  289. data/lib/core/facets/string/characters.rb +0 -13
  290. data/lib/core/facets/string/crypt.rb +0 -22
  291. data/lib/core/facets/string/tab.rb +0 -2
  292. data/lib/core/facets/string/tabto.rb +0 -2
  293. data/lib/core/facets/symbol/succ.rb +0 -23
  294. data/lib/core/facets.yml +0 -76
  295. data/lib/standard/facets/basicobject.rb +0 -75
  296. data/lib/standard/facets/digest/base64digest.rb +0 -45
  297. data/lib/standard/facets/ostruct/each.rb +0 -11
  298. data/lib/standard/facets/ostruct/merge.rb +0 -21
  299. data/lib/standard/facets/ostruct/op_fetch.rb +0 -29
  300. data/lib/standard/facets/ostruct/op_store.rb +0 -1
  301. data/lib/standard/facets/ostruct/to_h.rb +0 -10
  302. data/test/core/array/test_after.rb +0 -27
  303. data/test/core/array/test_arrange.rb +0 -37
  304. data/test/core/array/test_before.rb +0 -27
  305. data/test/core/array/test_collapse.rb +0 -14
  306. data/test/core/array/test_combination.rb +0 -25
  307. data/test/core/array/test_commonality.rb +0 -35
  308. data/test/core/array/test_conjoin.rb +0 -50
  309. data/test/core/array/test_contains.rb +0 -14
  310. data/test/core/array/test_delete.rb +0 -42
  311. data/test/core/array/test_divide.rb +0 -14
  312. data/test/core/array/test_duplicates.rb +0 -29
  313. data/test/core/array/test_each_overlap.rb +0 -31
  314. data/test/core/array/test_entropy.rb +0 -23
  315. data/test/core/array/test_extract_options.rb +0 -28
  316. data/test/core/array/test_first.rb +0 -17
  317. data/test/core/array/test_index.rb +0 -20
  318. data/test/core/array/test_intersection.rb +0 -19
  319. data/test/core/array/test_last.rb +0 -17
  320. data/test/core/array/test_median.rb +0 -27
  321. data/test/core/array/test_merge.rb +0 -27
  322. data/test/core/array/test_missing.rb +0 -12
  323. data/test/core/array/test_mode.rb +0 -17
  324. data/test/core/array/test_nonuniq.rb +0 -25
  325. data/test/core/array/test_not_empty.rb +0 -17
  326. data/test/core/array/test_occur.rb +0 -52
  327. data/test/core/array/test_occurrence.rb +0 -20
  328. data/test/core/array/test_only.rb +0 -17
  329. data/test/core/array/test_pad.rb +0 -40
  330. data/test/core/array/test_peek.rb +0 -28
  331. data/test/core/array/test_permutation.rb +0 -20
  332. data/test/core/array/test_poke.rb +0 -21
  333. data/test/core/array/test_probability.rb +0 -18
  334. data/test/core/array/test_product.rb +0 -64
  335. data/test/core/array/test_pull.rb +0 -15
  336. data/test/core/array/test_recurse.rb +0 -40
  337. data/test/core/array/test_recursively.rb +0 -33
  338. data/test/core/array/test_reject_values.rb +0 -17
  339. data/test/core/array/test_rotate.rb +0 -38
  340. data/test/core/array/test_select.rb +0 -16
  341. data/test/core/array/test_splice.rb +0 -21
  342. data/test/core/array/test_split.rb +0 -22
  343. data/test/core/array/test_squeeze.rb +0 -22
  344. data/test/core/array/test_step.rb +0 -28
  345. data/test/core/array/test_store.rb +0 -22
  346. data/test/core/array/test_traverse.rb +0 -26
  347. data/test/core/array/test_uniq_by.rb +0 -17
  348. data/test/core/array/test_unique_permutation.rb +0 -23
  349. data/test/core/binding/test_caller.rb +0 -69
  350. data/test/core/binding/test_defined.rb +0 -18
  351. data/test/core/binding/test_eval.rb +0 -15
  352. data/test/core/binding/test_local_variables.rb +0 -36
  353. data/test/core/binding/test_op.rb +0 -24
  354. data/test/core/binding/test_self.rb +0 -16
  355. data/test/core/class/test_descendents.rb +0 -19
  356. data/test/core/class/test_preallocate.rb +0 -32
  357. data/test/core/class/test_subclasses.rb +0 -20
  358. data/test/core/class/test_to_proc.rb +0 -16
  359. data/test/core/comparable/test_bound.rb +0 -32
  360. data/test/core/comparable/test_cap.rb +0 -36
  361. data/test/core/comparable/test_clip.rb +0 -31
  362. data/test/core/comparable/test_cmp.rb +0 -16
  363. data/test/core/comparable/test_op_get.rb +0 -61
  364. data/test/core/denumerable_tc.rb +0 -194
  365. data/test/core/dir/test_ascend.rb +0 -40
  366. data/test/core/dir/test_descend.rb +0 -24
  367. data/test/core/dir/test_each_child.rb +0 -22
  368. data/test/core/dir/test_multiglob.rb +0 -25
  369. data/test/core/dir/test_parent.rb +0 -14
  370. data/test/core/dir/test_recurse.rb +0 -26
  371. data/test/core/enumerable/test_accumulate.rb +0 -44
  372. data/test/core/enumerable/test_cluster_by.rb +0 -30
  373. data/test/core/enumerable/test_compact_map.rb +0 -32
  374. data/test/core/enumerable/test_count.rb +0 -32
  375. data/test/core/enumerable/test_defer.rb +0 -27
  376. data/test/core/enumerable/test_each_by.rb +0 -49
  377. data/test/core/enumerable/test_each_with_object.rb +0 -18
  378. data/test/core/enumerable/test_every.rb +0 -33
  379. data/test/core/enumerable/test_ewise.rb +0 -30
  380. data/test/core/enumerable/test_exclude.rb +0 -15
  381. data/test/core/enumerable/test_expand.rb +0 -15
  382. data/test/core/enumerable/test_filter.rb +0 -19
  383. data/test/core/enumerable/test_find_yield.rb +0 -96
  384. data/test/core/enumerable/test_frequency.rb +0 -15
  385. data/test/core/enumerable/test_graph.rb +0 -42
  386. data/test/core/enumerable/test_group_by.rb +0 -36
  387. data/test/core/enumerable/test_key_by.rb +0 -22
  388. data/test/core/enumerable/test_map_by.rb +0 -27
  389. data/test/core/enumerable/test_map_send.rb +0 -26
  390. data/test/core/enumerable/test_map_with_index.rb +0 -23
  391. data/test/core/enumerable/test_mash.rb +0 -17
  392. data/test/core/enumerable/test_modulate.rb +0 -17
  393. data/test/core/enumerable/test_none.rb +0 -29
  394. data/test/core/enumerable/test_occur.rb +0 -40
  395. data/test/core/enumerable/test_one.rb +0 -34
  396. data/test/core/enumerable/test_only.rb +0 -40
  397. data/test/core/enumerable/test_per.rb +0 -19
  398. data/test/core/enumerable/test_purge.rb +0 -22
  399. data/test/core/enumerable/test_recursively.rb +0 -33
  400. data/test/core/enumerable/test_squeeze.rb +0 -35
  401. data/test/core/enumerable/test_sum.rb +0 -40
  402. data/test/core/enumerable/test_take.rb +0 -15
  403. data/test/core/enumerable/test_uniq_by.rb +0 -25
  404. data/test/core/enumerable/test_visit.rb +0 -14
  405. data/test/core/enumerator/lazy/test_squeeze.rb +0 -33
  406. data/test/core/enumerator/test_fx.rb +0 -16
  407. data/test/core/enumerator/test_new.rb +0 -21
  408. data/test/core/enumerator_tc.rb +0 -40
  409. data/test/core/exception/test_detail.rb +0 -15
  410. data/test/core/exception/test_raised.rb +0 -15
  411. data/test/core/exception/test_suppress.rb +0 -16
  412. data/test/core/file/test_append.rb +0 -22
  413. data/test/core/file/test_create.rb +0 -17
  414. data/test/core/file/test_ext.rb +0 -31
  415. data/test/core/file/test_null.rb +0 -14
  416. data/test/core/file/test_read_binary.rb +0 -19
  417. data/test/core/file/test_read_list.rb +0 -16
  418. data/test/core/file/test_rewrite.rb +0 -35
  419. data/test/core/file/test_rootname.rb +0 -13
  420. data/test/core/file/test_sanitize.rb +0 -32
  421. data/test/core/file/test_split_all.rb +0 -14
  422. data/test/core/file/test_write.rb +0 -22
  423. data/test/core/file/test_writelines.rb +0 -21
  424. data/test/core/filetest/test_root.rb +0 -14
  425. data/test/core/functor_tc.rb +0 -41
  426. data/test/core/hash/test_alias.rb +0 -25
  427. data/test/core/hash/test_argumentize.rb +0 -23
  428. data/test/core/hash/test_at.rb +0 -16
  429. data/test/core/hash/test_autonew.rb +0 -22
  430. data/test/core/hash/test_collate.rb +0 -61
  431. data/test/core/hash/test_count.rb +0 -23
  432. data/test/core/hash/test_data.rb +0 -35
  433. data/test/core/hash/test_dearray_values.rb +0 -26
  434. data/test/core/hash/test_deep_merge.rb +0 -31
  435. data/test/core/hash/test_deep_rekey.rb +0 -131
  436. data/test/core/hash/test_delete_at.rb +0 -18
  437. data/test/core/hash/test_delete_unless.rb +0 -18
  438. data/test/core/hash/test_delete_values.rb +0 -30
  439. data/test/core/hash/test_diff.rb +0 -16
  440. data/test/core/hash/test_each_with_key.rb +0 -16
  441. data/test/core/hash/test_expect.rb +0 -24
  442. data/test/core/hash/test_fetch_nested.rb +0 -24
  443. data/test/core/hash/test_graph.rb +0 -40
  444. data/test/core/hash/test_insert.rb +0 -20
  445. data/test/core/hash/test_inverse.rb +0 -20
  446. data/test/core/hash/test_join.rb +0 -32
  447. data/test/core/hash/test_keys.rb +0 -41
  448. data/test/core/hash/test_new_with.rb +0 -17
  449. data/test/core/hash/test_op_add.rb +0 -17
  450. data/test/core/hash/test_op_and.rb +0 -31
  451. data/test/core/hash/test_op_mul.rb +0 -17
  452. data/test/core/hash/test_op_or.rb +0 -17
  453. data/test/core/hash/test_op_push.rb +0 -34
  454. data/test/core/hash/test_op_sub.rb +0 -28
  455. data/test/core/hash/test_recurse.rb +0 -39
  456. data/test/core/hash/test_recursively.rb +0 -71
  457. data/test/core/hash/test_rekey.rb +0 -119
  458. data/test/core/hash/test_replace_each.rb +0 -17
  459. data/test/core/hash/test_revalue.rb +0 -98
  460. data/test/core/hash/test_reverse_merge.rb +0 -39
  461. data/test/core/hash/test_select.rb +0 -44
  462. data/test/core/hash/test_slice.rb +0 -36
  463. data/test/core/hash/test_stringify_keys.rb +0 -26
  464. data/test/core/hash/test_swap.rb +0 -15
  465. data/test/core/hash/test_symbolize_keys.rb +0 -26
  466. data/test/core/hash/test_to_mod.rb +0 -24
  467. data/test/core/hash/test_to_proc.rb +0 -23
  468. data/test/core/hash/test_to_struct.rb +0 -22
  469. data/test/core/hash/test_traverse.rb +0 -29
  470. data/test/core/hash/test_update_each.rb +0 -16
  471. data/test/core/hash/test_update_keys.rb +0 -21
  472. data/test/core/hash/test_update_values.rb +0 -15
  473. data/test/core/hash/test_url_params.rb +0 -26
  474. data/test/core/hash/test_weave.rb +0 -18
  475. data/test/core/hash/test_zip.rb +0 -16
  476. data/test/core/indexable_tc.rb +0 -226
  477. data/test/core/integer/test_bitmask.rb +0 -73
  478. data/test/core/integer/test_even.rb +0 -24
  479. data/test/core/integer/test_factorial.rb +0 -30
  480. data/test/core/integer/test_multiple.rb +0 -16
  481. data/test/core/integer/test_odd.rb +0 -24
  482. data/test/core/integer/test_of.rb +0 -36
  483. data/test/core/integer/test_ordinal.rb +0 -27
  484. data/test/core/kernel/test_as.rb +0 -74
  485. data/test/core/kernel/test_ask.rb +0 -9
  486. data/test/core/kernel/test_assign.rb +0 -61
  487. data/test/core/kernel/test_assign_from.rb +0 -48
  488. data/test/core/kernel/test_attr_singleton.rb +0 -51
  489. data/test/core/kernel/test_blank.rb +0 -103
  490. data/test/core/kernel/test_callstack.rb +0 -21
  491. data/test/core/kernel/test_class.rb +0 -14
  492. data/test/core/kernel/test_complete.rb +0 -19
  493. data/test/core/kernel/test_constant.rb +0 -18
  494. data/test/core/kernel/test_d.rb +0 -10
  495. data/test/core/kernel/test_deep_clone.rb +0 -31
  496. data/test/core/kernel/test_deep_copy.rb +0 -15
  497. data/test/core/kernel/test_dir.rb +0 -24
  498. data/test/core/kernel/test_disable_warnings.rb +0 -38
  499. data/test/core/kernel/test_ergo.rb +0 -32
  500. data/test/core/kernel/test_extension.rb +0 -18
  501. data/test/core/kernel/test_get.rb +0 -54
  502. data/test/core/kernel/test_here.rb +0 -13
  503. data/test/core/kernel/test_hierarchical_send.rb +0 -48
  504. data/test/core/kernel/test_in.rb +0 -14
  505. data/test/core/kernel/test_instance_assign.rb +0 -19
  506. data/test/core/kernel/test_instance_class.rb +0 -15
  507. data/test/core/kernel/test_instance_extract.rb +0 -28
  508. data/test/core/kernel/test_instance_send.rb +0 -26
  509. data/test/core/kernel/test_maybe.rb +0 -13
  510. data/test/core/kernel/test_meta_alias.rb +0 -18
  511. data/test/core/kernel/test_meta_class.rb +0 -33
  512. data/test/core/kernel/test_meta_def.rb +0 -15
  513. data/test/core/kernel/test_meta_eval.rb +0 -18
  514. data/test/core/kernel/test_method.rb +0 -20
  515. data/test/core/kernel/test_not.rb +0 -51
  516. data/test/core/kernel/test_not_nil.rb +0 -25
  517. data/test/core/kernel/test_object_class.rb +0 -22
  518. data/test/core/kernel/test_object_hexid.rb +0 -20
  519. data/test/core/kernel/test_object_send.rb +0 -25
  520. data/test/core/kernel/test_presence.rb +0 -37
  521. data/test/core/kernel/test_qua_class.rb +0 -25
  522. data/test/core/kernel/test_require_all.rb +0 -11
  523. data/test/core/kernel/test_require_relative.rb +0 -12
  524. data/test/core/kernel/test_respond.rb +0 -38
  525. data/test/core/kernel/test_returning.rb +0 -17
  526. data/test/core/kernel/test_silence.rb +0 -24
  527. data/test/core/kernel/test_singleton_class.rb +0 -15
  528. data/test/core/kernel/test_super_method.rb +0 -23
  529. data/test/core/kernel/test_tap.rb +0 -38
  530. data/test/core/kernel/test_temporarily.rb +0 -25
  531. data/test/core/kernel/test_true.rb +0 -31
  532. data/test/core/kernel/test_try.rb +0 -35
  533. data/test/core/kernel/test_val.rb +0 -30
  534. data/test/core/kernel/test_with.rb +0 -18
  535. data/test/core/kernel/test_writers.rb +0 -53
  536. data/test/core/matchdata/test_match.rb +0 -14
  537. data/test/core/matchdata/test_matchset.rb +0 -29
  538. data/test/core/method/test_composition.rb +0 -42
  539. data/test/core/module/test_abstract.rb +0 -24
  540. data/test/core/module/test_alias_accessor.rb +0 -27
  541. data/test/core/module/test_alias_method_chain.rb +0 -34
  542. data/test/core/module/test_alias_module_function.rb +0 -24
  543. data/test/core/module/test_all_instance_methods.rb +0 -27
  544. data/test/core/module/test_ancestor.rb +0 -16
  545. data/test/core/module/test_anonymous.rb +0 -18
  546. data/test/core/module/test_attr_setter.rb +0 -28
  547. data/test/core/module/test_basename.rb +0 -14
  548. data/test/core/module/test_can.rb +0 -22
  549. data/test/core/module/test_class.rb +0 -22
  550. data/test/core/module/test_class_def.rb +0 -22
  551. data/test/core/module/test_class_extend.rb +0 -73
  552. data/test/core/module/test_class_inheritor.rb +0 -135
  553. data/test/core/module/test_copy_inheritor.rb +0 -35
  554. data/test/core/module/test_enclosure.rb +0 -24
  555. data/test/core/module/test_instance_function.rb +0 -30
  556. data/test/core/module/test_instance_method.rb +0 -20
  557. data/test/core/module/test_instance_method_defined.rb +0 -38
  558. data/test/core/module/test_integrate.rb +0 -28
  559. data/test/core/module/test_is.rb +0 -50
  560. data/test/core/module/test_memoize.rb +0 -33
  561. data/test/core/module/test_method_clash.rb +0 -59
  562. data/test/core/module/test_method_space.rb +0 -72
  563. data/test/core/module/test_methodize.rb +0 -26
  564. data/test/core/module/test_modname.rb +0 -13
  565. data/test/core/module/test_module_def.rb +0 -22
  566. data/test/core/module/test_module_load.rb +0 -23
  567. data/test/core/module/test_nodef.rb +0 -19
  568. data/test/core/module/test_op.rb +0 -56
  569. data/test/core/module/test_pathize.rb +0 -25
  570. data/test/core/module/test_preextend.rb +0 -26
  571. data/test/core/module/test_redefine_method.rb +0 -30
  572. data/test/core/module/test_redirect_method.rb +0 -32
  573. data/test/core/module/test_remove.rb +0 -18
  574. data/test/core/module/test_rename_method.rb +0 -34
  575. data/test/core/module/test_revise.rb +0 -61
  576. data/test/core/module/test_set.rb +0 -30
  577. data/test/core/module/test_spacename.rb +0 -15
  578. data/test/core/module/test_to_obj.rb +0 -20
  579. data/test/core/module/test_wrap_method.rb +0 -32
  580. data/test/core/nilclass/test_to_f.rb +0 -13
  581. data/test/core/numeric/test_approx.rb +0 -26
  582. data/test/core/numeric/test_distance.rb +0 -16
  583. data/test/core/numeric/test_length.rb +0 -16
  584. data/test/core/numeric/test_round.rb +0 -76
  585. data/test/core/numeric/test_spacing.rb +0 -17
  586. data/test/core/object/test_dup.rb +0 -115
  587. data/test/core/object/test_object_state.rb +0 -75
  588. data/test/core/object/test_replace.rb +0 -69
  589. data/test/core/object/test_try_dup.rb +0 -59
  590. data/test/core/proc/test_bind.rb +0 -29
  591. data/test/core/proc/test_bind_to.rb +0 -17
  592. data/test/core/proc/test_compose.rb +0 -27
  593. data/test/core/proc/test_curry.rb +0 -38
  594. data/test/core/proc/test_partial.rb +0 -27
  595. data/test/core/proc/test_to_method.rb +0 -43
  596. data/test/core/proc/test_update.rb +0 -15
  597. data/test/core/range/test_combine.rb +0 -32
  598. data/test/core/range/test_op_add.rb +0 -24
  599. data/test/core/range/test_op_sub.rb +0 -34
  600. data/test/core/range/test_overlap.rb +0 -15
  601. data/test/core/range/test_to_r.rb +0 -20
  602. data/test/core/range/test_umbrella.rb +0 -32
  603. data/test/core/range/test_within.rb +0 -25
  604. data/test/core/regexp/test_arity.rb +0 -30
  605. data/test/core/regexp/test_multiline.rb +0 -19
  606. data/test/core/regexp/test_op_add.rb +0 -15
  607. data/test/core/regexp/test_op_or.rb +0 -16
  608. data/test/core/regexp/test_to_re.rb +0 -24
  609. data/test/core/string/test_align.rb +0 -32
  610. data/test/core/string/test_ascii_only.rb +0 -30
  611. data/test/core/string/test_bracket.rb +0 -37
  612. data/test/core/string/test_bytes.rb +0 -13
  613. data/test/core/string/test_camelcase.rb +0 -59
  614. data/test/core/string/test_capitalized.rb +0 -36
  615. data/test/core/string/test_characters.rb +0 -13
  616. data/test/core/string/test_cleanlines.rb +0 -12
  617. data/test/core/string/test_cleave.rb +0 -27
  618. data/test/core/string/test_cmp.rb +0 -18
  619. data/test/core/string/test_compress_lines.rb +0 -18
  620. data/test/core/string/test_divide.rb +0 -17
  621. data/test/core/string/test_each_char.rb +0 -17
  622. data/test/core/string/test_each_word.rb +0 -17
  623. data/test/core/string/test_edit_distance.rb +0 -20
  624. data/test/core/string/test_end_with.rb +0 -24
  625. data/test/core/string/test_exclude.rb +0 -23
  626. data/test/core/string/test_expand_tabs.rb +0 -83
  627. data/test/core/string/test_file.rb +0 -15
  628. data/test/core/string/test_fold.rb +0 -21
  629. data/test/core/string/test_indent.rb +0 -90
  630. data/test/core/string/test_index_all.rb +0 -18
  631. data/test/core/string/test_interpolate.rb +0 -16
  632. data/test/core/string/test_lchomp.rb +0 -25
  633. data/test/core/string/test_line_wrap.rb +0 -15
  634. data/test/core/string/test_lines.rb +0 -15
  635. data/test/core/string/test_lowercase.rb +0 -18
  636. data/test/core/string/test_margin.rb +0 -16
  637. data/test/core/string/test_methodize.rb +0 -28
  638. data/test/core/string/test_modulize.rb +0 -28
  639. data/test/core/string/test_mscan.rb +0 -18
  640. data/test/core/string/test_natcmp.rb +0 -17
  641. data/test/core/string/test_nchar.rb +0 -17
  642. data/test/core/string/test_newlines.rb +0 -14
  643. data/test/core/string/test_number.rb +0 -44
  644. data/test/core/string/test_op_div.rb +0 -15
  645. data/test/core/string/test_op_sub.rb +0 -15
  646. data/test/core/string/test_pathize.rb +0 -31
  647. data/test/core/string/test_quote.rb +0 -41
  648. data/test/core/string/test_range.rb +0 -35
  649. data/test/core/string/test_remove.rb +0 -36
  650. data/test/core/string/test_rewrite.rb +0 -17
  651. data/test/core/string/test_rotate.rb +0 -31
  652. data/test/core/string/test_shatter.rb +0 -17
  653. data/test/core/string/test_similarity.rb +0 -14
  654. data/test/core/string/test_snakecase.rb +0 -22
  655. data/test/core/string/test_splice.rb +0 -37
  656. data/test/core/string/test_squish.rb +0 -31
  657. data/test/core/string/test_start_with.rb +0 -24
  658. data/test/core/string/test_store.rb +0 -16
  659. data/test/core/string/test_subtract.rb +0 -16
  660. data/test/core/string/test_tab.rb +0 -16
  661. data/test/core/string/test_titlecase.rb +0 -16
  662. data/test/core/string/test_to_re.rb +0 -35
  663. data/test/core/string/test_trim.rb +0 -116
  664. data/test/core/string/test_unbracket.rb +0 -38
  665. data/test/core/string/test_underscore.rb +0 -21
  666. data/test/core/string/test_unfold.rb +0 -17
  667. data/test/core/string/test_unindent.rb +0 -105
  668. data/test/core/string/test_unquote.rb +0 -13
  669. data/test/core/string/test_uppercase.rb +0 -22
  670. data/test/core/string/test_variablize.rb +0 -15
  671. data/test/core/string/test_word_wrap.rb +0 -80
  672. data/test/core/string/test_words.rb +0 -24
  673. data/test/core/string/test_xor.rb +0 -16
  674. data/test/core/symbol/test_as_s.rb +0 -15
  675. data/test/core/symbol/test_bang.rb +0 -15
  676. data/test/core/symbol/test_chomp.rb +0 -22
  677. data/test/core/symbol/test_generate.rb +0 -20
  678. data/test/core/symbol/test_not.rb +0 -19
  679. data/test/core/symbol/test_op_div.rb +0 -15
  680. data/test/core/symbol/test_plain.rb +0 -19
  681. data/test/core/symbol/test_query.rb +0 -19
  682. data/test/core/symbol/test_setter.rb +0 -17
  683. data/test/core/symbol/test_succ.rb +0 -16
  684. data/test/core/symbol/test_thrown.rb +0 -22
  685. data/test/core/symbol/test_to_proc.rb +0 -35
  686. data/test/core/symbol/test_variablize.rb +0 -14
  687. data/test/core/time/test_ago.rb +0 -18
  688. data/test/core/time/test_change.rb +0 -17
  689. data/test/core/time/test_dst_adjustment.rb +0 -19
  690. data/test/core/time/test_elapse.rb +0 -15
  691. data/test/core/time/test_future.rb +0 -32
  692. data/test/core/time/test_hence.rb +0 -18
  693. data/test/core/time/test_in.rb +0 -18
  694. data/test/core/time/test_less.rb +0 -139
  695. data/test/core/time/test_past.rb +0 -32
  696. data/test/core/time/test_round_to.rb +0 -34
  697. data/test/core/time/test_set.rb +0 -43
  698. data/test/core/time/test_shift.rb +0 -135
  699. data/test/core/time/test_stamp.rb +0 -42
  700. data/test/core/time/test_to_time.rb +0 -15
  701. data/test/core/time/test_trunc.rb +0 -34
  702. data/test/core/to_hash_tc.rb +0 -210
  703. data/test/core/unboundmethod/test_arguments.rb +0 -25
  704. data/test/core/unboundmethod/test_name.rb +0 -19
  705. data/test/standard/binding/test_block_exec.rb +0 -21
  706. data/test/standard/math/test_abs.rb +0 -13
  707. data/test/standard/math/test_acot.rb +0 -23
  708. data/test/standard/math/test_acoth.rb +0 -22
  709. data/test/standard/math/test_beta.rb +0 -19
  710. data/test/standard/math/test_ceil.rb +0 -22
  711. data/test/standard/math/test_cosec.rb +0 -19
  712. data/test/standard/math/test_cosech.rb +0 -19
  713. data/test/standard/math/test_cot.rb +0 -13
  714. data/test/standard/math/test_coth.rb +0 -13
  715. data/test/standard/math/test_distance.rb +0 -16
  716. data/test/standard/math/test_exp10.rb +0 -14
  717. data/test/standard/math/test_exp2.rb +0 -14
  718. data/test/standard/math/test_factorial.rb +0 -13
  719. data/test/standard/math/test_floor.rb +0 -23
  720. data/test/standard/math/test_gcd.rb +0 -18
  721. data/test/standard/math/test_lcm.rb +0 -13
  722. data/test/standard/math/test_median.rb +0 -17
  723. data/test/standard/math/test_percentile.rb +0 -13
  724. data/test/standard/math/test_pow.rb +0 -30
  725. data/test/standard/math/test_root.rb +0 -15
  726. data/test/standard/math/test_sec.rb +0 -19
  727. data/test/standard/math/test_sech.rb +0 -19
  728. data/test/standard/math/test_sign.rb +0 -20
  729. data/test/standard/math/test_sinc.rb +0 -15
  730. data/test/standard/math/test_srq.rb +0 -20
  731. data/test/standard/pathname/test_chdir.rb +0 -16
  732. data/test/standard/pathname/test_readline.rb +0 -23
  733. data/test/standard/test_argvector.rb +0 -64
  734. data/test/standard/test_cloneable.rb +0 -60
  735. data/test/standard/test_date.rb +0 -82
  736. data/test/standard/test_enumargs.rb +0 -89
  737. data/test/standard/test_equitable.rb +0 -46
  738. data/test/standard/test_instantiable.rb +0 -40
  739. data/test/standard/test_math.rb +0 -3
  740. data/test/standard/test_memoizable.rb +0 -42
  741. data/test/standard/test_multipliers.rb +0 -141
  742. data/test/standard/test_ostruct.rb +0 -191
  743. data/test/standard/test_random.rb +0 -241
  744. data/test/standard/test_shellwords.rb +0 -74
  745. data/test/standard/test_thread.rb +0 -24
  746. data/test/standard/test_timer.rb +0 -62
  747. data/test/standard/test_tuple.rb +0 -68
  748. data/test/standard/test_uri.rb +0 -50
@@ -0,0 +1,20 @@
1
+ require 'facets/array/average'
2
+
3
+ class Array
4
+
5
+ # Calculate the variance of an array of numbers
6
+ #
7
+ # Examples
8
+ #
9
+ # [].variance #=> nil
10
+ # [1, 2, 3].variance #=> 0.6666666666666666
11
+ # [96, 35, 72, 30, 75, 33, 68, 13, 49, 71].variance #=> 609.76
12
+ # [36, -67, -17, 85, -46, -64, -23, -13, 89, -47].variance #=> 2989.0099999999993
13
+ # [60.7829, 31.2622, 20.626, 78.8907, 61.5328].variance #=> 459.1941339495999
14
+ #
15
+ def variance
16
+ avg = average
17
+ map {|n| (n - avg) ** 2 }.average
18
+ end
19
+ end
20
+
@@ -1,5 +1,6 @@
1
1
  require_relative 'array/after.rb'
2
2
  #require_relative 'array/arrange.rb' # too new
3
+ require_relative 'array/average.rb'
3
4
  require_relative 'array/before.rb'
4
5
  require_relative 'array/collapse.rb'
5
6
  require_relative 'array/collisions.rb'
@@ -8,16 +8,22 @@ class Binding
8
8
  eval("caller(#{skip})")
9
9
  end
10
10
 
11
+ # Returns the call stack, same format as Kernel#caller_locations()
12
+ #
13
+ def caller_locations( skip=0 )
14
+ eval("caller_locations(#{skip})")
15
+ end
16
+
11
17
  # Return the line number on which the binding was created.
12
18
  #
13
19
  def __LINE__
14
- Kernel.eval("__LINE__", self)
20
+ self.source_location[1]
15
21
  end
16
22
 
17
23
  # Returns file name in which the binding was created.
18
24
  #
19
25
  def __FILE__
20
- Kernel.eval("__FILE__", self)
26
+ self.source_location[0]
21
27
  end
22
28
 
23
29
  # Return the directory of the file in which the binding was created.
@@ -1,25 +1,21 @@
1
1
  class Binding
2
2
 
3
- # Returns the value of some variable.
3
+ # Returns the value of a local variable.
4
4
  #
5
5
  # a = 2
6
- # binding["a"] #=> 2
6
+ # binding[:a] #=> 2
7
7
  #
8
- def []( x )
9
- eval( x.to_s )
8
+ def [](name)
9
+ local_variable_get(name.to_sym)
10
10
  end
11
11
 
12
12
  # Set the value of a local variable.
13
13
  #
14
- # binding["a"] = 4
14
+ # binding[:a] = 4
15
15
  # a #=> 4
16
16
  #
17
- # @deprecated No longer wortks in Ruby 1.9+.
18
- #
19
- # @see Binding#with for an alternative.
20
- def []=( l, v )
21
- eval( "lambda {|v| #{l} = v}").call( v )
17
+ def []=(name, value)
18
+ local_variable_set(name.to_sym, value)
22
19
  end
23
20
 
24
21
  end
25
-
@@ -1,15 +1,9 @@
1
1
  class Binding
2
2
 
3
- # This is already defined by Rubinius:
4
- # Kernel.eval('Rubinius::VariableScope.current.self', self)
5
- unless method_defined?(:self)
6
-
7
- # Returns self of the binding's context.
8
- def self
9
- eval('self')
10
- end
11
-
3
+ # @deprecated Use Binding#receiver instead (built-in since Ruby 2.6).
4
+ def self
5
+ warn "Binding#self is deprecated. Use Binding#receiver instead.", uplevel: 1
6
+ receiver
12
7
  end
13
8
 
14
9
  end
15
-
@@ -2,7 +2,6 @@ require_relative 'binding/caller.rb'
2
2
  require_relative 'binding/callstack.rb'
3
3
  require_relative 'binding/call_stack.rb'
4
4
  require_relative 'binding/defined.rb'
5
- #require_relative 'binding/local_variables.rb' # uncommon
6
5
  require_relative 'binding/op.rb'
7
6
  require_relative 'binding/op_get.rb'
8
7
  require_relative 'binding/op_set.rb'
@@ -86,7 +86,7 @@ class String
86
86
  #
87
87
  # All other strings return false.
88
88
  #
89
- # Here are some exmamples.
89
+ # Here are some examples.
90
90
  #
91
91
  # "true".to_b #=> true
92
92
  # "yes".to_b #=> true
@@ -1,5 +1,3 @@
1
- require 'facets/class/subclasses'
2
-
3
1
  class Class
4
2
 
5
3
  # List all descedents of this class.
@@ -3,7 +3,7 @@ require_relative 'class/descendants.rb'
3
3
  require_relative 'class/methodize.rb'
4
4
  require_relative 'class/pathize.rb'
5
5
  #require_relative 'class/preallocate.rb' # uncommon
6
- #require_relative 'class/singleton.rb' # uncommon
7
- require_relative 'class/subclasses.rb'
6
+ #require_relative 'class/singleton.rb' # removed, use Ruby's singleton_class
7
+ #require_relative 'class/subclasses.rb' # removed, use Ruby's subclasses
8
8
  require_relative 'class/to_proc.rb'
9
9
 
@@ -1 +1,13 @@
1
- require 'facets/comparable/clip'
1
+ module Comparable
2
+
3
+ # Alias for Comparable#clamp. Reads more naturally in some contexts.
4
+ #
5
+ # 4.bound(2, 7) #=> 4
6
+ # 9.bound(2, 7) #=> 7
7
+ # 1.bound(2, 7) #=> 2
8
+ #
9
+ def bound(lower, upper=nil)
10
+ upper ? clamp(lower, upper) : clamp(lower..)
11
+ end
12
+
13
+ end
@@ -1,38 +1,9 @@
1
1
  module Comparable
2
2
 
3
- # Returns self if above the given lower bound, or
4
- # within the given lower and upper bounds,
5
- # otherwise returns the the bound of which the
6
- # value falls outside.
7
- #
8
- # 4.clip(3) #=> 4
9
- # 4.clip(5) #=> 5
10
- # 4.clip(2,7) #=> 4
11
- # 9.clip(2,7) #=> 7
12
- # 1.clip(2,7) #=> 2
13
- #
14
- # CREDIT Florian Gross, Trans
15
-
3
+ # @deprecated Use Comparable#clamp instead (built-in since Ruby 2.4).
16
4
  def clip(lower, upper=nil)
17
- return lower if self < lower
18
- return self unless upper
19
- return upper if self > upper
20
- return self
5
+ warn "Comparable#clip is deprecated. Use Comparable#clamp instead.", uplevel: 1
6
+ upper ? clamp(lower, upper) : clamp(lower..)
21
7
  end
22
8
 
23
- # Returns self if above the given lower bound, or
24
- # within the given lower and upper bounds,
25
- # otherwise returns the the bound of which the
26
- # value falls outside.
27
- #
28
- # 4.bound(3) #=> 4
29
- # 4.bound(5) #=> 5
30
- # 4.bound(2,7) #=> 4
31
- # 9.bound(2,7) #=> 7
32
- # 1.bound(2,7) #=> 2
33
- #
34
- # CREDIT: Florian Gross
35
-
36
- alias_method :bound, :clip
37
-
38
9
  end
@@ -1,6 +1,3 @@
1
- require 'facets/enumerator'
2
- #require 'facets/enumerable/take'
3
-
4
1
  # Classes which include Denumerable will get versions of map,
5
2
  # select, and so on, which return a Denumerator, so that they
6
3
  # work horizontally without creating intermediate arrays.
@@ -0,0 +1,20 @@
1
+ require 'find'
2
+
3
+ class Dir
4
+
5
+ # Recursively traverse a directory, yielding each file and directory path.
6
+ # Supports Find.prune to skip subtrees.
7
+ #
8
+ # Dir.find('.') do |path|
9
+ # puts path
10
+ # end
11
+ #
12
+ # Returns an enumerator if no block is given.
13
+ #
14
+ # This is a convenience wrapper around Ruby's Find.find.
15
+
16
+ def self.find(*paths, ignore_error: true, &block)
17
+ Find.find(*paths, ignore_error: ignore_error, &block)
18
+ end
19
+
20
+ end
@@ -1,35 +1,17 @@
1
+ require 'facets/dir/find'
2
+
1
3
  class Dir
2
4
 
3
- # Recursively scan a directory and pass each file to the given block.
4
- #
5
- # Dir.recurse('.') do |path|
6
- # # ...
7
- # end
8
- #
9
- # CREDIT: George Moschovitis
10
- #
11
- # TODO: If fully compatible, reimplement as alias of Find.find,
12
- # or just copy and paste Find.find code here if it looks more robust.
13
- #
5
+ # @deprecated Use Dir.find or Find.find instead.
14
6
  def self.recurse(path='.', &block)
15
- list = []
16
- stoplist = ['.', '..']
17
- Dir.foreach(path) do |f|
18
- next if stoplist.include?(f)
19
- filename = (path == '.' ? f : path + '/' + f)
20
- list << filename
21
- block.call(filename) if block
22
- if FileTest.directory?(filename) and not FileTest.symlink?(filename)
23
- list.concat(Dir.recurse(filename, &block))
24
- end
25
- end
26
- list
7
+ warn "Dir.recurse is deprecated. Use Dir.find or Find.find instead.", uplevel: 1
8
+ Dir.find(path, &block)
27
9
  end
28
10
 
29
- # Same as Dir#recurse.
11
+ # @deprecated Use Dir.find or Find.find instead.
30
12
  def self.ls_r(path='.', &block)
31
- recurse(path, &block)
13
+ warn "Dir.ls_r is deprecated. Use Dir.find or Find.find instead.", uplevel: 1
14
+ Dir.find(path, &block)
32
15
  end
33
16
 
34
17
  end
35
-
@@ -1,10 +1,12 @@
1
1
  module Enumerable
2
2
 
3
- # Clusters together adjacent elements into a list of
4
- # sub-arrays.
3
+ # Clusters together adjacent elements into a list of sub-arrays.
5
4
  #
6
- # >> [2,2,2,3,3,4,2,2,1].cluster{ |x| x }
7
- # => [[2, 2, 2], [3, 3], [4], [2, 2], [1]]
5
+ # [2,2,2,3,3,4,2,2,1].cluster{ |x| x }
6
+ # => [[2, 2, 2], [3, 3], [4], [2, 2], [1]]
7
+ #
8
+ # ["dog", "duck", "cat", "dude"].cluster{ |x| x[0] }
9
+ # => [["dog", "duck"], ["cat"], ["dude"]]
8
10
  #
9
11
  # @author Oleg K
10
12
 
@@ -15,18 +15,8 @@ module Enumerable
15
15
  # does almost the same thing and enum.map{}.compact works too.
16
16
 
17
17
  def compact_map(&block)
18
- y = []
19
- if block_given?
20
- each do |*a|
21
- r = yield(*a)
22
- y << r unless r.nil?
23
- end
24
- else
25
- each do |r|
26
- y << r unless r.nil?
27
- end
28
- end
29
- y
18
+ warn "Enumerable#compact_map is deprecated. Use Enumerable#filter_map instead.", uplevel: 1
19
+ filter_map(&block)
30
20
  end
31
21
 
32
22
  #
@@ -27,19 +27,8 @@ module Enumerable
27
27
  # to output each result and discard it.
28
28
  #
29
29
  def defer(&blk)
30
- if block_given?
31
- Denumerator.new do |output|
32
- each do |*input|
33
- yield(output, *input)
34
- end
35
- end
36
- else
37
- Denumerator.new do |output|
38
- each do |*input|
39
- output.yield(*input)
40
- end
41
- end
42
- end
30
+ warn "Enumerable#defer is deprecated. Use Enumerable#lazy instead.", uplevel: 1
31
+ lazy
43
32
  end
44
33
 
45
34
  end
@@ -1,5 +1,3 @@
1
- require 'facets/enumerator'
2
-
3
1
  module Enumerable
4
2
 
5
3
  # Iterate through slices. If slice +steps+ is not
@@ -16,8 +16,8 @@ module Enumerable
16
16
  #++
17
17
 
18
18
  def frequency
19
- p = Hash.new(0); each{ |v| p[v] += 1 }; p
20
-
19
+ warn "Enumerable#frequency is deprecated. Use Enumerable#tally instead.", uplevel: 1
20
+ tally
21
21
  end
22
22
 
23
23
  end
@@ -4,13 +4,13 @@ require 'facets/enumerable/value_by'
4
4
 
5
5
  module Enumerable
6
6
 
7
- # The hashify methods is a higher-order message used to
7
+ # The hashify methods is a higher-order message used to
8
8
  # convert an enumerable object into a hash. Converting an
9
9
  # enumerable object into a hash is not a one-to-one conversion,
10
10
  # for this reason #hashify is used to provide variant approches
11
11
  # for the conversion most suited to the use case at hand.
12
12
  # Here are some (but not a complete set of) examples.
13
- #
13
+ #
14
14
  # If the enumerable is a collection of perfect pairs, like that
15
15
  # which Hash#to_a generates, then #assoc can be used.
16
16
  #
@@ -23,13 +23,13 @@ module Enumerable
23
23
  # a = [ [:a,1,2], [:b,2], [:c], [:d] ]
24
24
  # a.hashify.concat #=> { :a=>[1,2], :b=>[2], :c=>[], :d=>[] }
25
25
  #
26
- # If the array contians objects other then arrays then
26
+ # If the array contains objects other then arrays then
27
27
  # the #splat method might do the trick.
28
28
  #
29
29
  # a = [ [:a,1,2], 2, :b, [:c,3], 9 ]
30
- # a.hashify.splat #=> { [:a,1,2]=>2, :b=>[:c,3], 9=>nil }
30
+ # a.hashify.splat #=> { [:a,1,2]=>2, :b=>[:c,3], 9=>nil }
31
31
  #
32
- # Also, the particular dispatch can be left up the Hashify
32
+ # Also, the particular dispatch can be left up the Hashify
33
33
  # using the #auto method. See Hashify#auto for details on this.
34
34
  #
35
35
  # TODO: This method takes arguments only for the sake of the old
@@ -64,11 +64,9 @@ module Enumerable
64
64
  #
65
65
  # a = [:a,1,:b,2,:c]
66
66
  # a.to_h_splat #=> { :a=>1, :b=>2, :c=>nil }
67
- #
68
- # TODO: Can this be done without #size?
69
67
  def splat
70
- a = @enum.dup
71
- a << nil if a.size % 2 == 1
68
+ a = @enum.to_a
69
+ a << nil if a.size.odd?
72
70
  Hash[*a]
73
71
  end
74
72
 
@@ -78,48 +76,46 @@ module Enumerable
78
76
  #
79
77
  # a = [:a,1,[:b,2,:c]]
80
78
  # a.to_h_flat #=> { :a=>1, :b=>2, :c=>nil }
81
- #
82
- # TODO: Need to do this without #size.
83
79
  def flat
84
- a = @enum.flatten
85
- a << nil if a.size % 2 == 1
80
+ a = @enum.to_a.flatten
81
+ a << nil if a.size.odd?
86
82
  Hash[*a]
87
83
  end
88
84
 
89
- # When a mixed or multi-element accociative array
85
+ # When a mixed or multi-element associative array
90
86
  # is used, the result is as follows:
91
87
  #
92
88
  # a = [ [:a,1,2], [:b,2], [:c], :d ]
93
89
  # a.hashify.assoc #=> { :a=>[1,2], :b=>[2], :c=>[], :d=>[] }
94
90
  #
95
91
  # If the first entry of any subelements are the same, then
96
- # the value will be set to the last occuring value.
92
+ # the value will be set to the last occurring value.
97
93
  #
98
94
  # a = [ :x, [:x], [:x,1,2], [:x,3], [:x,4] ]
99
95
  # a.hashify.assoc #=> { :x=>[4] }
100
96
  #
101
97
  def associate
102
98
  h = {}
103
- each do |k,*v|
99
+ each do |k,*v|
104
100
  h[k] = v
105
101
  end
106
102
  h
107
103
  end
108
104
 
109
105
  # Alias for #associate.
110
- alias :assoc, :associate
106
+ alias :assoc :associate
111
107
 
112
108
  # Like associate but does force values into an array.
113
109
  #
114
110
  def merge
115
111
  h = {}
116
- each do |k,v|
112
+ each do |k,v|
117
113
  h[k] = v
118
114
  end
119
115
  h
120
116
  end
121
117
 
122
- # When a mixed or multi-element accociative array
118
+ # When a mixed or multi-element associative array
123
119
  # is used, the result is as follows:
124
120
  #
125
121
  # a = [ [:a,1,2], [:b,2], [:c], :d ]
@@ -129,11 +125,11 @@ module Enumerable
129
125
  # the values will be merged using #concat.
130
126
  #
131
127
  # a = [ [:a,1,2], [:a,3], [:a,4], [:a], :a ]
132
- # a.hasify.concat #=> { :a=>[1,2,3,4] }
128
+ # a.hashify.concat #=> { :a=>[1,2,3,4] }
133
129
  #
134
130
  def concat
135
131
  h = {}
136
- each do |k,*v|
132
+ each do |k,*v|
137
133
  h[k] ||= []
138
134
  h[k].concat(v)
139
135
  end
@@ -141,7 +137,7 @@ module Enumerable
141
137
  end
142
138
 
143
139
  # Older name for #concat.
144
- alias :multi, :concat
140
+ alias :multi :concat
145
141
 
146
142
  # Convert enumerable object to Hash using index as keys.
147
143
  #
@@ -158,11 +154,11 @@ module Enumerable
158
154
  # Converts enumerable object into a hash. Converting an array
159
155
  # into a hash is not a one-to-one conversion, for this
160
156
  # reason #auto examines the enumerable being converted
161
- # and then dispatches the conversion to the most sutiable
162
- # specialized function. There are three possiblities for this.
157
+ # and then dispatches the conversion to the most suitable
158
+ # specialized function. There are three possibilities for this.
163
159
  #
164
160
  # If the enumerable is a collection of perfect pairs, like that
165
- # which Hash#to_a generates, then conversion is handled by
161
+ # which Hash#to_a generates, then conversion is handled by
166
162
  # #flat.
167
163
  #
168
164
  # a = [ [:a,1], [:b,2] ]
@@ -174,14 +170,14 @@ module Enumerable
174
170
  # a = [ [:a,1,2], [:b,2], [:c], [:d] ]
175
171
  # a.hashify.auto #=> { :a=>[1,2], :b=>[2], :c=>[], :d=>[] }
176
172
  #
177
- # If it contians objects other then arrays then the #splat method
173
+ # If it contains objects other then arrays then the #splat method
178
174
  # is called.
179
175
  #
180
176
  # a = [ [:a,1,2], 2, :b, [:c,3], 9 ]
181
- # a.hashify.auto #=> { [:a,1,2]=>2, :b=>[:c,3], 9=>nil }
177
+ # a.hashify.auto #=> { [:a,1,2]=>2, :b=>[:c,3], 9=>nil }
182
178
  #
183
179
  # Be aware this is not as efficient as using the underlying methods
184
- # directly becuase it must perform an initial iteration over the
180
+ # directly because it must perform an initial iteration over the
185
181
  # enumerable to determine its contents.
186
182
 
187
183
  def auto(&block)
@@ -206,18 +202,18 @@ module Enumerable
206
202
  end
207
203
 
208
204
  # Alias for `#auto`.
209
- alias :automatic, :auto
205
+ alias :automatic :auto
210
206
 
211
207
  private
212
208
 
213
209
  #
214
210
  def each(&b)
215
- @enum.each(&b)
211
+ @enum.each(&b)
216
212
  end
217
213
 
218
214
  #
219
215
  def each_with_index(&b)
220
- @enum.each_with_index(&b)
216
+ @enum.each_with_index(&b)
221
217
  end
222
218
 
223
219
  end
@@ -9,10 +9,9 @@ module Enumerable
9
9
  #
10
10
  # TODO: Enumerable#hinge will get a new name.
11
11
  #
12
- def hinge(init={})
13
- h = init
14
- each{ |v| yield(h,v) }
15
- h
12
+ def hinge(init={}, &block)
13
+ warn "Enumerable#hinge is deprecated. Use Enumerable#each_with_object instead (note: block args are reversed).", uplevel: 1
14
+ each_with_object(init) { |e, obj| block.call(obj, e) }
16
15
  end
17
16
 
18
17
  end
@@ -7,12 +7,9 @@ module Enumerable
7
7
  #
8
8
  # CREDIT: Gavin Sinclair
9
9
 
10
- def map_with_index
11
- r = []
12
- each_with_index do |e, i|
13
- r << yield(e, i)
14
- end
15
- r
10
+ def map_with_index(&block)
11
+ warn "Enumerable#map_with_index is deprecated. Use Enumerable#map.with_index instead.", uplevel: 1
12
+ map.with_index(&block)
16
13
  end
17
14
 
18
15
  # Alias for map_with_index.
@@ -1,34 +1,11 @@
1
- module Enumerable
1
+ require 'facets/enumerable/graph'
2
2
 
3
- # Like `#map`/`#collect`, but generates a Hash. The block is expected
4
- # to return two values: the key and the value for the new hash.
5
- #
6
- # numbers = (1..3)
7
- # squares = numbers.mash{ |n| [n, n*n] } # { 1=>1, 2=>4, 3=>9 }
8
- # sq_roots = numbers.mash{ |n| [n*n, n] } # { 1=>1, 4=>2, 9=>3 }
9
- #
10
- # CREDIT: Andrew Dudzik (adudzik), Trans
3
+ module Enumerable
11
4
 
5
+ # @deprecated Use Enumerable#graph instead.
12
6
  def mash(&yld)
13
- if yld
14
- h = {}
15
- each do |*kv|
16
- r = yld[*kv]
17
- case r
18
- when Hash
19
- nk, nv = *r.to_a[0]
20
- when Range
21
- nk, nv = r.first, r.last
22
- else
23
- nk, nv = *r
24
- end
25
- h[nk] = nv
26
- end
27
- h
28
- else
29
- Enumerator.new(self,:graph)
30
- end
7
+ warn "Enumerable#mash is deprecated. Use Enumerable#graph instead.", uplevel: 1
8
+ graph(&yld)
31
9
  end
32
10
 
33
11
  end
34
-
@@ -1,13 +1,9 @@
1
1
  module Enumerable
2
2
 
3
- # Like #uniq, but determines uniqueness based on a given block.
4
- #
5
- # (-5..5).to_a.uniq_by {|i| i*i }
6
- # #=> [-5, -4, -3, -2, -1, 0]
7
- #
8
- def uniq_by #:yield:
9
- h = {}; inject([]) {|a,x| h[yield(x)] ||= a << x}
3
+ # @deprecated Use Enumerable#uniq with a block instead (Ruby 1.9.2+).
4
+ def uniq_by(&block)
5
+ warn "Enumerable#uniq_by is deprecated. Use Enumerable#uniq(&block) instead.", uplevel: 1
6
+ uniq(&block)
10
7
  end
11
8
 
12
9
  end
13
-