facets 3.1.0 → 3.2.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 (770) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY.md +177 -0
  3. data/LICENSE.txt +21 -343
  4. data/README.md +34 -41
  5. data/lib/core/facets/array/arrange.rb +1 -42
  6. data/lib/core/facets/array/average.rb +0 -1
  7. data/lib/core/facets/array/before.rb +1 -1
  8. data/lib/core/facets/array/delete_first.rb +21 -0
  9. data/lib/core/facets/array/duplicates.rb +13 -0
  10. data/lib/core/facets/array/indexes.rb +113 -0
  11. data/lib/core/facets/array/nonuniq.rb +6 -8
  12. data/lib/core/facets/array/occurrence.rb +4 -1
  13. data/lib/core/facets/array/remove.rb +39 -0
  14. data/lib/core/facets/array/span.rb +29 -0
  15. data/lib/core/facets/array/split_at.rb +25 -0
  16. data/lib/core/facets/array/standard_deviation.rb +7 -2
  17. data/lib/core/facets/array/step.rb +12 -14
  18. data/lib/core/facets/array/to_ranges.rb +48 -0
  19. data/lib/core/facets/array/uniq_by.rb +3 -3
  20. data/lib/core/facets/array.rb +1 -1
  21. data/lib/core/facets/binding/caller.rb +8 -2
  22. data/lib/core/facets/binding/op_get.rb +7 -11
  23. data/lib/core/facets/binding/self.rb +4 -10
  24. data/lib/core/facets/boolean.rb +1 -1
  25. data/lib/core/facets/class/descendants.rb +0 -2
  26. data/lib/core/facets/class.rb +2 -2
  27. data/lib/core/facets/comparable/bound.rb +13 -1
  28. data/lib/core/facets/comparable/clip.rb +3 -32
  29. data/lib/core/facets/denumerable.rb +0 -3
  30. data/lib/core/facets/dir/find.rb +20 -0
  31. data/lib/core/facets/dir/recurse.rb +8 -26
  32. data/lib/core/facets/dir.rb +1 -1
  33. data/lib/core/facets/enumerable/compact_map.rb +2 -12
  34. data/lib/core/facets/enumerable/defer.rb +2 -13
  35. data/lib/core/facets/enumerable/each_by.rb +0 -2
  36. data/lib/core/facets/enumerable/frequency.rb +2 -2
  37. data/lib/core/facets/enumerable/hinge.rb +3 -4
  38. data/lib/core/facets/enumerable/map_with_index.rb +3 -6
  39. data/lib/core/facets/enumerable/mash.rb +5 -28
  40. data/lib/core/facets/enumerable/uniq_by.rb +4 -8
  41. data/lib/core/facets/enumerable/with_position.rb +58 -0
  42. data/lib/core/facets/enumerable.rb +2 -2
  43. data/lib/core/facets/enumerator.rb +2 -75
  44. data/lib/core/facets/essentials.rb +3 -3
  45. data/lib/core/facets/exception/error_print.rb +6 -71
  46. data/lib/core/facets/file/null.rb +3 -15
  47. data/lib/core/facets/file/read_binary.rb +3 -12
  48. data/lib/core/facets/file.rb +1 -1
  49. data/lib/core/facets/hash/except.rb +0 -7
  50. data/lib/core/facets/hash/fetch_nested.rb +8 -9
  51. data/lib/core/facets/hash/graph.rb +1 -1
  52. data/lib/core/facets/hash/rekey.rb +3 -3
  53. data/lib/core/facets/hash/revalue.rb +3 -3
  54. data/lib/core/facets/hash/{to_proc.rb → setter.rb} +8 -9
  55. data/lib/core/facets/hash/slice.rb +0 -26
  56. data/lib/core/facets/hash/update_keys.rb +4 -11
  57. data/lib/core/facets/hash/update_values.rb +4 -10
  58. data/lib/core/facets/hash.rb +1 -1
  59. data/lib/core/facets/indexable.rb +6 -4
  60. data/lib/core/facets/kernel/as.rb +2 -2
  61. data/lib/core/facets/kernel/callstack.rb +5 -24
  62. data/lib/core/facets/kernel/eigenclass.rb +6 -6
  63. data/lib/core/facets/kernel/extension.rb +3 -6
  64. data/lib/core/facets/kernel/functor.rb +16 -0
  65. data/lib/core/facets/kernel/instance_class.rb +4 -20
  66. data/lib/core/facets/kernel/instance_send.rb +5 -3
  67. data/lib/core/facets/kernel/load_relative.rb +8 -20
  68. data/lib/core/facets/kernel/memo.rb +4 -26
  69. data/lib/core/facets/kernel/meta_class.rb +10 -6
  70. data/lib/core/facets/kernel/object_class.rb +5 -6
  71. data/lib/core/facets/kernel/object_send.rb +5 -26
  72. data/lib/core/facets/kernel/qua_class.rb +4 -20
  73. data/lib/core/facets/kernel/require_all.rb +8 -20
  74. data/lib/core/facets/kernel/returning.rb +3 -19
  75. data/lib/core/facets/kernel/tap.rb +3 -36
  76. data/lib/core/facets/kernel/tee.rb +2 -0
  77. data/lib/core/facets/kernel/try.rb +38 -28
  78. data/lib/core/facets/kernel.rb +2 -4
  79. data/lib/core/facets/lazy.rb +1 -1
  80. data/lib/core/facets/matchdata.rb +1 -1
  81. data/lib/core/facets/module/alias_method_chain.rb +4 -43
  82. data/lib/core/facets/module/attr_setter.rb +3 -2
  83. data/lib/core/facets/module/can.rb +5 -16
  84. data/lib/core/facets/module/class_extend.rb +2 -2
  85. data/lib/core/facets/numeric.rb +2 -2
  86. data/lib/core/facets/object/dup.rb +0 -46
  87. data/lib/core/facets/object.rb +2 -2
  88. data/lib/core/facets/proc/bind.rb +0 -2
  89. data/lib/core/facets/proc/compose.rb +7 -28
  90. data/lib/core/facets/proc/to_method.rb +0 -1
  91. data/lib/core/facets/proc/update.rb +8 -1
  92. data/lib/core/facets/process.rb +1 -1
  93. data/lib/core/facets/range/intersection.rb +42 -0
  94. data/lib/core/facets/range/nudge.rb +6 -8
  95. data/lib/core/facets/range.rb +1 -1
  96. data/lib/core/facets/string/ascii_only.rb +2 -2
  97. data/lib/core/facets/string/cleanlines.rb +0 -2
  98. data/lib/core/facets/string/dashcase.rb +21 -0
  99. data/lib/core/facets/string/lchomp.rb +7 -14
  100. data/lib/core/facets/string/newlines.rb +0 -2
  101. data/lib/core/facets/string/snakecase.rb +12 -5
  102. data/lib/core/facets/string/words.rb +13 -1
  103. data/lib/core/facets/string.rb +0 -1
  104. data/lib/core/facets/struct/attributes.rb +2 -3
  105. data/lib/core/facets/symbol.rb +1 -1
  106. data/lib/core/facets/time/trunc.rb +12 -5
  107. data/lib/core/facets/unboundmethod/arguments.rb +1 -0
  108. data/lib/core/facets/version.rb +1 -17
  109. data/lib/core/facets.rb +0 -1
  110. data/lib/standard/facets/argvector.rb +1 -1
  111. data/lib/standard/facets/cgi/escape_html.rb +14 -25
  112. data/lib/standard/facets/cloneable.rb +4 -51
  113. data/lib/standard/facets/continuation.rb +2 -56
  114. data/lib/standard/facets/crypt3.rb +126 -0
  115. data/lib/standard/facets/date/cmp.rb +32 -0
  116. data/lib/standard/facets/date.rb +1 -0
  117. data/lib/standard/facets/digest.rb +0 -1
  118. data/lib/standard/facets/fileutils/cp_rx.rb +0 -2
  119. data/lib/standard/facets/fileutils/ln_r.rb +0 -1
  120. data/lib/standard/facets/find/select.rb +0 -2
  121. data/lib/standard/facets/getoptlong.rb +3 -59
  122. data/lib/standard/facets/load_monitor.rb +2 -26
  123. data/lib/standard/facets/math/gini_coefficient.rb +5 -4
  124. data/lib/standard/facets/math/kldivergence.rb +8 -7
  125. data/lib/standard/facets/math/percentile.rb +1 -1
  126. data/lib/standard/facets/multiton.rb +1 -1
  127. data/lib/standard/facets/opendsl.rb +33 -0
  128. data/lib/standard/facets/ostruct/initialize.rb +4 -19
  129. data/lib/standard/facets/ostruct/to_ostruct.rb +2 -1
  130. data/lib/standard/facets/ostruct.rb +0 -88
  131. data/lib/standard/facets/pathname/empty.rb +2 -10
  132. data/lib/standard/facets/pathname/glob.rb +19 -12
  133. data/lib/standard/facets/pathname/null.rb +3 -14
  134. data/lib/standard/facets/pic.rb +173 -0
  135. data/lib/standard/facets/random.rb +47 -133
  136. data/lib/standard/facets/tuple.rb +2 -4
  137. data/lib/standard/facets/uri.rb +3 -2
  138. metadata +31 -1172
  139. data/.index +0 -80
  140. data/.yardopts +0 -10
  141. data/NOTICE.rdoc +0 -167
  142. data/demo/applique/assertion_framework.rb +0 -1
  143. data/demo/applique/file_helpers.rb +0 -34
  144. data/demo/core/array/after.md +0 -13
  145. data/demo/core/array/arrange.md +0 -17
  146. data/demo/core/array/before.md +0 -14
  147. data/demo/core/array/collapse.md +0 -15
  148. data/demo/core/array/collisions.md +0 -30
  149. data/demo/core/array/commonality.md +0 -31
  150. data/demo/core/array/conjoin.md +0 -47
  151. data/demo/core/array/contains.md +0 -9
  152. data/demo/core/array/delete_unless.md +0 -13
  153. data/demo/core/array/delete_values.md +0 -10
  154. data/demo/core/array/delete_values_at.md +0 -15
  155. data/demo/core/array/divide.md +0 -14
  156. data/demo/core/array/duplicates.md +0 -14
  157. data/demo/core/array/each_overlap.md +0 -12
  158. data/demo/core/array/each_pair.md +0 -13
  159. data/demo/core/array/each_value.md +0 -12
  160. data/demo/core/array/entropy.md +0 -13
  161. data/demo/core/array/extract_options.md +0 -13
  162. data/demo/core/array/first.md +0 -11
  163. data/demo/core/array/from.md +0 -11
  164. data/demo/core/array/ideal_entropy.md +0 -11
  165. data/demo/core/array/intersection.md +0 -11
  166. data/demo/core/array/last.md +0 -11
  167. data/demo/core/array/median.md +0 -23
  168. data/demo/core/array/merge.md +0 -15
  169. data/demo/core/array/missing.md +0 -10
  170. data/demo/core/array/mode.md +0 -9
  171. data/demo/core/array/nonuniq.md +0 -16
  172. data/demo/core/array/not_empty.md +0 -8
  173. data/demo/core/array/occur.md +0 -18
  174. data/demo/core/array/occurrence.md +0 -13
  175. data/demo/core/array/only.md +0 -9
  176. data/demo/core/array/op_pow.md +0 -10
  177. data/demo/core/array/pad.md +0 -28
  178. data/demo/core/array/peek.md +0 -10
  179. data/demo/core/array/poke.md +0 -15
  180. data/demo/core/array/probability +0 -8
  181. data/demo/core/array/pull.md +0 -10
  182. data/demo/core/array/recurse.md +0 -10
  183. data/demo/core/array/recursively.md +0 -20
  184. data/demo/core/array/reject_values.md +0 -10
  185. data/demo/core/array/splice.md +0 -14
  186. data/demo/core/array/split.md +0 -13
  187. data/demo/core/array/squeeze.md +0 -14
  188. data/demo/core/array/step.md +0 -16
  189. data/demo/core/array/store.md +0 -9
  190. data/demo/core/array/thru.md +0 -12
  191. data/demo/core/array/to_h.md +0 -11
  192. data/demo/core/array/traverse.md +0 -20
  193. data/demo/core/array/uniq_by.md +0 -16
  194. data/demo/core/array/unique_permutation.md +0 -14
  195. data/demo/core/array/zip.md +0 -8
  196. data/demo/core/binding/caller.md +0 -57
  197. data/demo/core/binding/defined.md +0 -10
  198. data/demo/core/binding/opvars.md +0 -16
  199. data/demo/core/binding/self.md +0 -6
  200. data/demo/core/class/descendants.md +0 -13
  201. data/demo/core/class/to_proc.md +0 -11
  202. data/demo/core/comparable/at_least.md +0 -11
  203. data/demo/core/comparable/at_most.md +0 -11
  204. data/demo/core/comparable/bound.md +0 -13
  205. data/demo/core/comparable/cap.md +0 -11
  206. data/demo/core/comparable/clip.md +0 -29
  207. data/demo/core/comparable/cmp.md +0 -18
  208. data/demo/core/comparable/op_get.md +0 -32
  209. data/demo/core/dir/ascend.md +0 -24
  210. data/demo/core/dir/descend.md +0 -16
  211. data/demo/core/dir/multiglob.md +0 -41
  212. data/demo/core/dir/parent.md +0 -6
  213. data/demo/core/dir/recurse.md +0 -41
  214. data/demo/core/exception/detail.md +0 -19
  215. data/demo/core/facets.md +0 -6
  216. data/demo/core/filetest/root.md +0 -13
  217. data/demo/core/hash/recursively.md +0 -21
  218. data/demo/core/indexable.md +0 -95
  219. data/demo/core/integer/bitmask.md +0 -46
  220. data/demo/core/integer/factorial.md +0 -10
  221. data/demo/core/integer/length.md +0 -7
  222. data/demo/core/integer/multiple.md +0 -12
  223. data/demo/core/integer/of.md +0 -11
  224. data/demo/core/integer/ordinal.md +0 -11
  225. data/demo/core/integer/times_collect.md +0 -9
  226. data/demo/core/matchdata/match.md +0 -7
  227. data/demo/core/matchdata/matchset.md +0 -7
  228. data/demo/core/matchdata/matchtree.md +0 -10
  229. data/demo/core/module/cattr.md +0 -43
  230. data/demo/core/module/class_extend.md +0 -64
  231. data/demo/core/module/class_inheritor.md +0 -126
  232. data/demo/core/module/copy_inheritor.md +0 -30
  233. data/demo/core/module/include_as.md +0 -31
  234. data/demo/core/module/method_space.md +0 -24
  235. data/demo/core/string/acronym.md +0 -9
  236. data/demo/core/string/align.md +0 -34
  237. data/demo/core/string/ascii_only.md +0 -37
  238. data/demo/core/string/bracket.md +0 -35
  239. data/demo/core/string/camelcase.md +0 -47
  240. data/demo/core/string/capitalized.md +0 -27
  241. data/demo/core/string/characters.md +0 -11
  242. data/demo/core/string/cleanlines.md +0 -10
  243. data/demo/core/string/cleave.md +0 -49
  244. data/demo/core/string/compress_lines.md +0 -22
  245. data/demo/core/string/crypt.md +0 -15
  246. data/demo/core/string/divide.md +0 -9
  247. data/demo/core/string/each_word.md +0 -11
  248. data/demo/core/string/edit_distance.md +0 -15
  249. data/demo/core/string/exclude.md +0 -15
  250. data/demo/core/string/expand_tabs.md +0 -69
  251. data/demo/core/string/fold.md +0 -14
  252. data/demo/core/string/indent.md +0 -65
  253. data/demo/core/string/index_all.md +0 -14
  254. data/demo/core/string/interpolate.md +0 -8
  255. data/demo/core/string/lchomp.md +0 -14
  256. data/demo/core/string/line_wrap.md +0 -7
  257. data/demo/core/string/lowercase.md +0 -12
  258. data/demo/core/string/methodize.md +0 -22
  259. data/demo/core/string/modulize.md +0 -22
  260. data/demo/core/string/mscan.md +0 -10
  261. data/demo/core/string/natcmp.md +0 -10
  262. data/demo/core/string/nchar.md +0 -9
  263. data/demo/core/string/newlines.md +0 -9
  264. data/demo/core/string/number.md +0 -27
  265. data/demo/core/string/op_div.md +0 -10
  266. data/demo/core/string/op_sub.md +0 -7
  267. data/demo/core/string/pathize.md +0 -22
  268. data/demo/core/string/quote.md +0 -20
  269. data/demo/core/string/random.md +0 -25
  270. data/demo/core/string/range.md +0 -19
  271. data/demo/core/string/remove.md +0 -33
  272. data/demo/core/string/rewrite.md +0 -9
  273. data/demo/core/string/shatter.md +0 -9
  274. data/demo/core/string/similarity.md +0 -12
  275. data/demo/core/string/snakecase.md +0 -14
  276. data/demo/core/string/splice.md +0 -28
  277. data/demo/core/string/squish.md +0 -27
  278. data/demo/core/string/store.md +0 -10
  279. data/demo/core/string/subtract.md +0 -8
  280. data/demo/core/string/titlecase.md +0 -8
  281. data/demo/core/string/to_re.md +0 -22
  282. data/demo/core/string/trim.md +0 -92
  283. data/demo/core/string/unbracket.md +0 -24
  284. data/demo/core/string/underscore.md +0 -17
  285. data/demo/core/string/unfold.md +0 -9
  286. data/demo/core/string/unindent.md +0 -65
  287. data/demo/core/string/unquote.md +0 -6
  288. data/demo/core/string/uppercase.md +0 -15
  289. data/demo/core/string/variablize.md +0 -7
  290. data/demo/core/string/word_wrap.md +0 -54
  291. data/demo/core/string/words.md +0 -13
  292. data/demo/core/string/xor.md +0 -8
  293. data/demo/standard/02_cloneable.rdoc +0 -46
  294. data/demo/standard/03_enumargs.rdoc +0 -75
  295. data/demo/standard/04_equitable.rdoc +0 -35
  296. data/demo/standard/05_instantiable.rdoc +0 -42
  297. data/demo/standard/basic_object.rdoc +0 -22
  298. data/demo/standard/memoizable.rdoc +0 -134
  299. data/demo/standard/mulititon.rdoc +0 -156
  300. data/lib/core/facets/applique/file_helpers.rb +0 -33
  301. data/lib/core/facets/array/intersection.rb +0 -25
  302. data/lib/core/facets/array/op_pow.rb +0 -12
  303. data/lib/core/facets/array/to_h.rb +0 -19
  304. data/lib/core/facets/class/singleton.rb +0 -1
  305. data/lib/core/facets/class/singleton_class.rb +0 -16
  306. data/lib/core/facets/class/subclasses.rb +0 -28
  307. data/lib/core/facets/dir/each_child.rb +0 -16
  308. data/lib/core/facets/enumerable/filter.rb +0 -33
  309. data/lib/core/facets/enumerable/sum.rb +0 -40
  310. data/lib/core/facets/exception/set_message.rb +0 -10
  311. data/lib/core/facets/file/write.rb +0 -24
  312. data/lib/core/facets/fixnum.rb +0 -7
  313. data/lib/core/facets/kernel/__dir__.rb +0 -28
  314. data/lib/core/facets/kernel/constant.rb +0 -22
  315. data/lib/core/facets/kernel/instance_exec.rb +0 -47
  316. data/lib/core/facets/kernel/p.rb +0 -24
  317. data/lib/core/facets/kernel/singleton_class.rb +0 -10
  318. data/lib/core/facets/matchdata/match.rb +0 -15
  319. data/lib/core/facets/method/curry.rb +0 -13
  320. data/lib/core/facets/numeric/negative.rb +0 -1
  321. data/lib/core/facets/numeric/positive.rb +0 -15
  322. data/lib/core/facets/object/itself.rb +0 -16
  323. data/lib/core/facets/object/try_dup.rb +0 -1
  324. data/lib/core/facets/process/daemon.rb +0 -32
  325. data/lib/core/facets/range/overlap.rb +0 -12
  326. data/lib/core/facets/string/characters.rb +0 -13
  327. data/lib/core/facets/string/crypt.rb +0 -22
  328. data/lib/core/facets/symbol/succ.rb +0 -23
  329. data/lib/core/facets.yml +0 -80
  330. data/lib/standard/facets/basicobject.rb +0 -75
  331. data/lib/standard/facets/digest/base64digest.rb +0 -45
  332. data/lib/standard/facets/ostruct/each.rb +0 -11
  333. data/lib/standard/facets/ostruct/merge.rb +0 -21
  334. data/lib/standard/facets/ostruct/op_fetch.rb +0 -29
  335. data/lib/standard/facets/ostruct/op_store.rb +0 -1
  336. data/lib/standard/facets/ostruct/to_h.rb +0 -10
  337. data/test/core/array/test_arrange.rb +0 -37
  338. data/test/core/array/test_average.rb +0 -16
  339. data/test/core/array/test_before.rb +0 -48
  340. data/test/core/array/test_collapse.rb +0 -23
  341. data/test/core/array/test_commonality.rb +0 -35
  342. data/test/core/array/test_conjoin.rb +0 -50
  343. data/test/core/array/test_contains.rb +0 -14
  344. data/test/core/array/test_delete.rb +0 -42
  345. data/test/core/array/test_delete_unless.rb +0 -17
  346. data/test/core/array/test_delete_values.rb +0 -31
  347. data/test/core/array/test_divide.rb +0 -24
  348. data/test/core/array/test_duplicates.rb +0 -29
  349. data/test/core/array/test_each_overlap.rb +0 -31
  350. data/test/core/array/test_each_pair.rb +0 -16
  351. data/test/core/array/test_each_value.rb +0 -16
  352. data/test/core/array/test_entropy.rb +0 -23
  353. data/test/core/array/test_extract_options.rb +0 -28
  354. data/test/core/array/test_first.rb +0 -17
  355. data/test/core/array/test_from.rb +0 -42
  356. data/test/core/array/test_intersection.rb +0 -19
  357. data/test/core/array/test_last.rb +0 -17
  358. data/test/core/array/test_median.rb +0 -27
  359. data/test/core/array/test_merge.rb +0 -27
  360. data/test/core/array/test_missing.rb +0 -12
  361. data/test/core/array/test_mode.rb +0 -17
  362. data/test/core/array/test_nonuniq.rb +0 -25
  363. data/test/core/array/test_not_empty.rb +0 -17
  364. data/test/core/array/test_occur.rb +0 -52
  365. data/test/core/array/test_occurrence.rb +0 -20
  366. data/test/core/array/test_only.rb +0 -17
  367. data/test/core/array/test_op_pow.rb +0 -13
  368. data/test/core/array/test_pad.rb +0 -40
  369. data/test/core/array/test_peek.rb +0 -28
  370. data/test/core/array/test_poke.rb +0 -21
  371. data/test/core/array/test_probability.rb +0 -18
  372. data/test/core/array/test_pull.rb +0 -15
  373. data/test/core/array/test_recurse.rb +0 -40
  374. data/test/core/array/test_recursively.rb +0 -33
  375. data/test/core/array/test_reject_values.rb +0 -17
  376. data/test/core/array/test_splice.rb +0 -21
  377. data/test/core/array/test_split.rb +0 -22
  378. data/test/core/array/test_squeeze.rb +0 -22
  379. data/test/core/array/test_standard_deviation.rb +0 -18
  380. data/test/core/array/test_step.rb +0 -28
  381. data/test/core/array/test_store.rb +0 -22
  382. data/test/core/array/test_to_h.rb +0 -14
  383. data/test/core/array/test_traverse.rb +0 -26
  384. data/test/core/array/test_uniq_by.rb +0 -24
  385. data/test/core/array/test_unique_permutation.rb +0 -23
  386. data/test/core/array/test_variance.rb +0 -17
  387. data/test/core/array/test_zip.rb +0 -13
  388. data/test/core/binding/test_caller.rb +0 -69
  389. data/test/core/binding/test_defined.rb +0 -18
  390. data/test/core/binding/test_op.rb +0 -24
  391. data/test/core/binding/test_self.rb +0 -16
  392. data/test/core/class/test_descendents.rb +0 -19
  393. data/test/core/class/test_preallocate.rb +0 -32
  394. data/test/core/class/test_subclasses.rb +0 -20
  395. data/test/core/class/test_to_proc.rb +0 -16
  396. data/test/core/comparable/test_bound.rb +0 -32
  397. data/test/core/comparable/test_cap.rb +0 -36
  398. data/test/core/comparable/test_clip.rb +0 -31
  399. data/test/core/comparable/test_cmp.rb +0 -16
  400. data/test/core/comparable/test_op_get.rb +0 -61
  401. data/test/core/denumerable_tc.rb +0 -194
  402. data/test/core/dir/test_ascend.rb +0 -40
  403. data/test/core/dir/test_descend.rb +0 -24
  404. data/test/core/dir/test_each_child.rb +0 -22
  405. data/test/core/dir/test_multiglob.rb +0 -25
  406. data/test/core/dir/test_parent.rb +0 -14
  407. data/test/core/dir/test_recurse.rb +0 -26
  408. data/test/core/enumerable/test_accumulate.rb +0 -44
  409. data/test/core/enumerable/test_cluster.rb +0 -36
  410. data/test/core/enumerable/test_compact_map.rb +0 -32
  411. data/test/core/enumerable/test_defer.rb +0 -27
  412. data/test/core/enumerable/test_each_by.rb +0 -49
  413. data/test/core/enumerable/test_every.rb +0 -33
  414. data/test/core/enumerable/test_ewise.rb +0 -30
  415. data/test/core/enumerable/test_exclude.rb +0 -15
  416. data/test/core/enumerable/test_expand.rb +0 -15
  417. data/test/core/enumerable/test_filter.rb +0 -19
  418. data/test/core/enumerable/test_find_yield.rb +0 -96
  419. data/test/core/enumerable/test_frequency.rb +0 -15
  420. data/test/core/enumerable/test_graph.rb +0 -42
  421. data/test/core/enumerable/test_hashify.rb +0 -113
  422. data/test/core/enumerable/test_key_by.rb +0 -22
  423. data/test/core/enumerable/test_map_by.rb +0 -27
  424. data/test/core/enumerable/test_map_send.rb +0 -26
  425. data/test/core/enumerable/test_map_with_index.rb +0 -23
  426. data/test/core/enumerable/test_mash.rb +0 -17
  427. data/test/core/enumerable/test_modulate.rb +0 -17
  428. data/test/core/enumerable/test_occur.rb +0 -40
  429. data/test/core/enumerable/test_only.rb +0 -40
  430. data/test/core/enumerable/test_per.rb +0 -19
  431. data/test/core/enumerable/test_purge.rb +0 -22
  432. data/test/core/enumerable/test_recursively.rb +0 -33
  433. data/test/core/enumerable/test_squeeze.rb +0 -35
  434. data/test/core/enumerable/test_sum.rb +0 -40
  435. data/test/core/enumerable/test_uniq_by.rb +0 -25
  436. data/test/core/enumerable/test_visit.rb +0 -14
  437. data/test/core/enumerator/lazy/test_squeeze.rb +0 -33
  438. data/test/core/enumerator/test_fx.rb +0 -16
  439. data/test/core/enumerator/test_new.rb +0 -21
  440. data/test/core/enumerator_tc.rb +0 -40
  441. data/test/core/exception/test_detail.rb +0 -15
  442. data/test/core/exception/test_raised.rb +0 -15
  443. data/test/core/exception/test_suppress.rb +0 -16
  444. data/test/core/file/test_append.rb +0 -22
  445. data/test/core/file/test_create.rb +0 -17
  446. data/test/core/file/test_ext.rb +0 -31
  447. data/test/core/file/test_null.rb +0 -14
  448. data/test/core/file/test_read_binary.rb +0 -19
  449. data/test/core/file/test_read_list.rb +0 -16
  450. data/test/core/file/test_rewrite.rb +0 -35
  451. data/test/core/file/test_rootname.rb +0 -13
  452. data/test/core/file/test_sanitize.rb +0 -32
  453. data/test/core/file/test_split_all.rb +0 -14
  454. data/test/core/file/test_write.rb +0 -22
  455. data/test/core/file/test_writelines.rb +0 -21
  456. data/test/core/filetest/test_root.rb +0 -14
  457. data/test/core/functor_tc.rb +0 -41
  458. data/test/core/hash/test_alias.rb +0 -25
  459. data/test/core/hash/test_argumentize.rb +0 -23
  460. data/test/core/hash/test_at.rb +0 -16
  461. data/test/core/hash/test_autonew.rb +0 -22
  462. data/test/core/hash/test_collate.rb +0 -61
  463. data/test/core/hash/test_count.rb +0 -23
  464. data/test/core/hash/test_data.rb +0 -35
  465. data/test/core/hash/test_dearray_values.rb +0 -26
  466. data/test/core/hash/test_deep_merge.rb +0 -31
  467. data/test/core/hash/test_deep_rekey.rb +0 -131
  468. data/test/core/hash/test_delete_at.rb +0 -18
  469. data/test/core/hash/test_delete_unless.rb +0 -18
  470. data/test/core/hash/test_delete_values.rb +0 -30
  471. data/test/core/hash/test_diff.rb +0 -16
  472. data/test/core/hash/test_each_with_key.rb +0 -16
  473. data/test/core/hash/test_expect.rb +0 -34
  474. data/test/core/hash/test_fetch_nested.rb +0 -24
  475. data/test/core/hash/test_graph.rb +0 -40
  476. data/test/core/hash/test_insert.rb +0 -20
  477. data/test/core/hash/test_inverse.rb +0 -20
  478. data/test/core/hash/test_join.rb +0 -32
  479. data/test/core/hash/test_keys.rb +0 -41
  480. data/test/core/hash/test_new_with.rb +0 -17
  481. data/test/core/hash/test_op_add.rb +0 -17
  482. data/test/core/hash/test_op_and.rb +0 -31
  483. data/test/core/hash/test_op_mul.rb +0 -17
  484. data/test/core/hash/test_op_or.rb +0 -17
  485. data/test/core/hash/test_op_push.rb +0 -34
  486. data/test/core/hash/test_op_sub.rb +0 -28
  487. data/test/core/hash/test_recurse.rb +0 -39
  488. data/test/core/hash/test_recursively.rb +0 -71
  489. data/test/core/hash/test_rekey.rb +0 -119
  490. data/test/core/hash/test_replace_each.rb +0 -17
  491. data/test/core/hash/test_revalue.rb +0 -98
  492. data/test/core/hash/test_reverse_merge.rb +0 -39
  493. data/test/core/hash/test_slice.rb +0 -36
  494. data/test/core/hash/test_stringify_keys.rb +0 -26
  495. data/test/core/hash/test_swap.rb +0 -15
  496. data/test/core/hash/test_symbolize_keys.rb +0 -26
  497. data/test/core/hash/test_to_mod.rb +0 -24
  498. data/test/core/hash/test_to_proc.rb +0 -23
  499. data/test/core/hash/test_to_struct.rb +0 -22
  500. data/test/core/hash/test_traverse.rb +0 -29
  501. data/test/core/hash/test_update_each.rb +0 -16
  502. data/test/core/hash/test_update_keys.rb +0 -21
  503. data/test/core/hash/test_update_values.rb +0 -15
  504. data/test/core/hash/test_weave.rb +0 -18
  505. data/test/core/hash/test_zip.rb +0 -16
  506. data/test/core/indexable_tc.rb +0 -226
  507. data/test/core/integer/test_bitmask.rb +0 -73
  508. data/test/core/integer/test_factorial.rb +0 -30
  509. data/test/core/integer/test_multiple.rb +0 -16
  510. data/test/core/integer/test_of.rb +0 -36
  511. data/test/core/integer/test_ordinal.rb +0 -27
  512. data/test/core/kernel/test_as.rb +0 -74
  513. data/test/core/kernel/test_ask.rb +0 -9
  514. data/test/core/kernel/test_assign.rb +0 -61
  515. data/test/core/kernel/test_assign_from.rb +0 -48
  516. data/test/core/kernel/test_attr_singleton.rb +0 -51
  517. data/test/core/kernel/test_blank.rb +0 -103
  518. data/test/core/kernel/test_callstack.rb +0 -21
  519. data/test/core/kernel/test_class.rb +0 -14
  520. data/test/core/kernel/test_complete.rb +0 -19
  521. data/test/core/kernel/test_constant.rb +0 -18
  522. data/test/core/kernel/test_d.rb +0 -10
  523. data/test/core/kernel/test_deep_clone.rb +0 -31
  524. data/test/core/kernel/test_deep_copy.rb +0 -15
  525. data/test/core/kernel/test_dir.rb +0 -24
  526. data/test/core/kernel/test_disable_warnings.rb +0 -38
  527. data/test/core/kernel/test_ergo.rb +0 -34
  528. data/test/core/kernel/test_extension.rb +0 -18
  529. data/test/core/kernel/test_get.rb +0 -54
  530. data/test/core/kernel/test_here.rb +0 -13
  531. data/test/core/kernel/test_hierarchical_send.rb +0 -48
  532. data/test/core/kernel/test_in.rb +0 -14
  533. data/test/core/kernel/test_instance_assign.rb +0 -19
  534. data/test/core/kernel/test_instance_class.rb +0 -15
  535. data/test/core/kernel/test_instance_extract.rb +0 -28
  536. data/test/core/kernel/test_instance_replace.rb +0 -47
  537. data/test/core/kernel/test_instance_send.rb +0 -26
  538. data/test/core/kernel/test_maybe.rb +0 -13
  539. data/test/core/kernel/test_meta_alias.rb +0 -18
  540. data/test/core/kernel/test_meta_class.rb +0 -33
  541. data/test/core/kernel/test_meta_def.rb +0 -15
  542. data/test/core/kernel/test_meta_eval.rb +0 -18
  543. data/test/core/kernel/test_method.rb +0 -20
  544. data/test/core/kernel/test_not.rb +0 -51
  545. data/test/core/kernel/test_not_nil.rb +0 -25
  546. data/test/core/kernel/test_object_class.rb +0 -22
  547. data/test/core/kernel/test_object_hexid.rb +0 -20
  548. data/test/core/kernel/test_object_send.rb +0 -25
  549. data/test/core/kernel/test_presence.rb +0 -37
  550. data/test/core/kernel/test_qua_class.rb +0 -25
  551. data/test/core/kernel/test_require_all.rb +0 -11
  552. data/test/core/kernel/test_respond.rb +0 -38
  553. data/test/core/kernel/test_returning.rb +0 -17
  554. data/test/core/kernel/test_silence.rb +0 -24
  555. data/test/core/kernel/test_singleton_class.rb +0 -15
  556. data/test/core/kernel/test_super_method.rb +0 -23
  557. data/test/core/kernel/test_tap.rb +0 -38
  558. data/test/core/kernel/test_temporarily.rb +0 -25
  559. data/test/core/kernel/test_true.rb +0 -31
  560. data/test/core/kernel/test_try.rb +0 -35
  561. data/test/core/kernel/test_val.rb +0 -30
  562. data/test/core/kernel/test_with.rb +0 -18
  563. data/test/core/kernel/test_writers.rb +0 -53
  564. data/test/core/matchdata/test_match.rb +0 -14
  565. data/test/core/matchdata/test_matchset.rb +0 -29
  566. data/test/core/method/test_composition.rb +0 -42
  567. data/test/core/module/test_abstract.rb +0 -24
  568. data/test/core/module/test_alias_accessor.rb +0 -27
  569. data/test/core/module/test_alias_method_chain.rb +0 -34
  570. data/test/core/module/test_alias_module_function.rb +0 -24
  571. data/test/core/module/test_all_instance_methods.rb +0 -27
  572. data/test/core/module/test_ancestor.rb +0 -16
  573. data/test/core/module/test_anonymous.rb +0 -18
  574. data/test/core/module/test_attr_setter.rb +0 -28
  575. data/test/core/module/test_basename.rb +0 -14
  576. data/test/core/module/test_can.rb +0 -22
  577. data/test/core/module/test_class.rb +0 -22
  578. data/test/core/module/test_class_def.rb +0 -22
  579. data/test/core/module/test_class_extend.rb +0 -73
  580. data/test/core/module/test_class_inheritor.rb +0 -135
  581. data/test/core/module/test_copy_inheritor.rb +0 -35
  582. data/test/core/module/test_enclosure.rb +0 -24
  583. data/test/core/module/test_instance_function.rb +0 -30
  584. data/test/core/module/test_instance_method.rb +0 -20
  585. data/test/core/module/test_instance_method_defined.rb +0 -38
  586. data/test/core/module/test_integrate.rb +0 -28
  587. data/test/core/module/test_is.rb +0 -50
  588. data/test/core/module/test_memoize.rb +0 -33
  589. data/test/core/module/test_method_clash.rb +0 -59
  590. data/test/core/module/test_method_space.rb +0 -72
  591. data/test/core/module/test_methodize.rb +0 -26
  592. data/test/core/module/test_modname.rb +0 -13
  593. data/test/core/module/test_module_def.rb +0 -22
  594. data/test/core/module/test_module_load.rb +0 -23
  595. data/test/core/module/test_nodef.rb +0 -19
  596. data/test/core/module/test_op.rb +0 -56
  597. data/test/core/module/test_pathize.rb +0 -25
  598. data/test/core/module/test_preextend.rb +0 -26
  599. data/test/core/module/test_redefine_method.rb +0 -30
  600. data/test/core/module/test_redirect_method.rb +0 -32
  601. data/test/core/module/test_remove.rb +0 -18
  602. data/test/core/module/test_rename_method.rb +0 -34
  603. data/test/core/module/test_revise.rb +0 -61
  604. data/test/core/module/test_set.rb +0 -30
  605. data/test/core/module/test_spacename.rb +0 -15
  606. data/test/core/module/test_to_obj.rb +0 -20
  607. data/test/core/module/test_wrap_method.rb +0 -32
  608. data/test/core/numeric/test_approx.rb +0 -26
  609. data/test/core/numeric/test_delimit.rb +0 -68
  610. data/test/core/numeric/test_distance.rb +0 -16
  611. data/test/core/numeric/test_length.rb +0 -16
  612. data/test/core/numeric/test_round_to.rb +0 -76
  613. data/test/core/numeric/test_spacing.rb +0 -17
  614. data/test/core/object/test_dup.rb +0 -115
  615. data/test/core/object/test_object_state.rb +0 -75
  616. data/test/core/object/test_try_dup.rb +0 -59
  617. data/test/core/proc/test_bind.rb +0 -29
  618. data/test/core/proc/test_bind_to.rb +0 -17
  619. data/test/core/proc/test_compose.rb +0 -27
  620. data/test/core/proc/test_partial.rb +0 -27
  621. data/test/core/proc/test_to_method.rb +0 -43
  622. data/test/core/proc/test_update.rb +0 -15
  623. data/test/core/range/test_combine.rb +0 -32
  624. data/test/core/range/test_nudge.rb +0 -32
  625. data/test/core/range/test_op_add.rb +0 -24
  626. data/test/core/range/test_op_sub.rb +0 -34
  627. data/test/core/range/test_overlap.rb +0 -15
  628. data/test/core/range/test_to_rng.rb +0 -20
  629. data/test/core/range/test_umbrella.rb +0 -32
  630. data/test/core/range/test_within.rb +0 -25
  631. data/test/core/regexp/test_arity.rb +0 -30
  632. data/test/core/regexp/test_multiline.rb +0 -19
  633. data/test/core/regexp/test_op_add.rb +0 -15
  634. data/test/core/regexp/test_op_or.rb +0 -16
  635. data/test/core/regexp/test_to_re.rb +0 -24
  636. data/test/core/string/test_acronym.rb +0 -14
  637. data/test/core/string/test_align.rb +0 -32
  638. data/test/core/string/test_ascii_only.rb +0 -51
  639. data/test/core/string/test_bracket.rb +0 -37
  640. data/test/core/string/test_camelcase.rb +0 -59
  641. data/test/core/string/test_capitalized.rb +0 -36
  642. data/test/core/string/test_characters.rb +0 -13
  643. data/test/core/string/test_cleanlines.rb +0 -12
  644. data/test/core/string/test_cleave.rb +0 -27
  645. data/test/core/string/test_cmp.rb +0 -18
  646. data/test/core/string/test_compress_lines.rb +0 -27
  647. data/test/core/string/test_crypt.rb +0 -17
  648. data/test/core/string/test_divide.rb +0 -17
  649. data/test/core/string/test_each_word.rb +0 -17
  650. data/test/core/string/test_edit_distance.rb +0 -20
  651. data/test/core/string/test_exclude.rb +0 -23
  652. data/test/core/string/test_expand_tabs.rb +0 -83
  653. data/test/core/string/test_file.rb +0 -15
  654. data/test/core/string/test_fold.rb +0 -21
  655. data/test/core/string/test_indent.rb +0 -90
  656. data/test/core/string/test_index_all.rb +0 -22
  657. data/test/core/string/test_interpolate.rb +0 -16
  658. data/test/core/string/test_lchomp.rb +0 -25
  659. data/test/core/string/test_line_wrap.rb +0 -15
  660. data/test/core/string/test_lowercase.rb +0 -18
  661. data/test/core/string/test_margin.rb +0 -16
  662. data/test/core/string/test_methodize.rb +0 -28
  663. data/test/core/string/test_modulize.rb +0 -28
  664. data/test/core/string/test_mscan.rb +0 -18
  665. data/test/core/string/test_natcmp.rb +0 -17
  666. data/test/core/string/test_nchar.rb +0 -17
  667. data/test/core/string/test_newlines.rb +0 -14
  668. data/test/core/string/test_number.rb +0 -44
  669. data/test/core/string/test_op_div.rb +0 -15
  670. data/test/core/string/test_op_sub.rb +0 -15
  671. data/test/core/string/test_pathize.rb +0 -31
  672. data/test/core/string/test_quote.rb +0 -41
  673. data/test/core/string/test_random.rb +0 -25
  674. data/test/core/string/test_range.rb +0 -35
  675. data/test/core/string/test_remove.rb +0 -50
  676. data/test/core/string/test_rewrite.rb +0 -17
  677. data/test/core/string/test_rotate.rb +0 -31
  678. data/test/core/string/test_shatter.rb +0 -17
  679. data/test/core/string/test_similarity.rb +0 -22
  680. data/test/core/string/test_snakecase.rb +0 -22
  681. data/test/core/string/test_splice.rb +0 -37
  682. data/test/core/string/test_squish.rb +0 -31
  683. data/test/core/string/test_store.rb +0 -16
  684. data/test/core/string/test_subtract.rb +0 -16
  685. data/test/core/string/test_titlecase.rb +0 -16
  686. data/test/core/string/test_to_re.rb +0 -35
  687. data/test/core/string/test_trim.rb +0 -116
  688. data/test/core/string/test_unbracket.rb +0 -38
  689. data/test/core/string/test_underscore.rb +0 -21
  690. data/test/core/string/test_unfold.rb +0 -17
  691. data/test/core/string/test_unindent.rb +0 -105
  692. data/test/core/string/test_unquote.rb +0 -13
  693. data/test/core/string/test_uppercase.rb +0 -22
  694. data/test/core/string/test_variablize.rb +0 -15
  695. data/test/core/string/test_word_wrap.rb +0 -80
  696. data/test/core/string/test_words.rb +0 -24
  697. data/test/core/string/test_xor.rb +0 -16
  698. data/test/core/struct/test_replace.rb +0 -18
  699. data/test/core/symbol/test_as_s.rb +0 -15
  700. data/test/core/symbol/test_bang.rb +0 -15
  701. data/test/core/symbol/test_chomp.rb +0 -22
  702. data/test/core/symbol/test_generate.rb +0 -20
  703. data/test/core/symbol/test_not.rb +0 -19
  704. data/test/core/symbol/test_op_div.rb +0 -15
  705. data/test/core/symbol/test_plain.rb +0 -19
  706. data/test/core/symbol/test_query.rb +0 -19
  707. data/test/core/symbol/test_setter.rb +0 -17
  708. data/test/core/symbol/test_succ.rb +0 -16
  709. data/test/core/symbol/test_thrown.rb +0 -22
  710. data/test/core/symbol/test_variablize.rb +0 -14
  711. data/test/core/time/test_ago.rb +0 -18
  712. data/test/core/time/test_change.rb +0 -17
  713. data/test/core/time/test_dst_adjustment.rb +0 -19
  714. data/test/core/time/test_elapse.rb +0 -15
  715. data/test/core/time/test_future.rb +0 -32
  716. data/test/core/time/test_hence.rb +0 -18
  717. data/test/core/time/test_in.rb +0 -18
  718. data/test/core/time/test_less.rb +0 -139
  719. data/test/core/time/test_past.rb +0 -32
  720. data/test/core/time/test_round_to.rb +0 -34
  721. data/test/core/time/test_set.rb +0 -43
  722. data/test/core/time/test_shift.rb +0 -135
  723. data/test/core/time/test_stamp.rb +0 -42
  724. data/test/core/time/test_to_time.rb +0 -15
  725. data/test/core/time/test_trunc.rb +0 -34
  726. data/test/core/unboundmethod/test_arguments.rb +0 -25
  727. data/test/standard/binding/test_block_exec.rb +0 -21
  728. data/test/standard/math/test_abs.rb +0 -13
  729. data/test/standard/math/test_acot.rb +0 -23
  730. data/test/standard/math/test_acoth.rb +0 -22
  731. data/test/standard/math/test_beta.rb +0 -19
  732. data/test/standard/math/test_ceil.rb +0 -22
  733. data/test/standard/math/test_cosec.rb +0 -19
  734. data/test/standard/math/test_cosech.rb +0 -19
  735. data/test/standard/math/test_cot.rb +0 -13
  736. data/test/standard/math/test_coth.rb +0 -13
  737. data/test/standard/math/test_distance.rb +0 -16
  738. data/test/standard/math/test_exp10.rb +0 -14
  739. data/test/standard/math/test_exp2.rb +0 -14
  740. data/test/standard/math/test_factorial.rb +0 -13
  741. data/test/standard/math/test_floor.rb +0 -23
  742. data/test/standard/math/test_gcd.rb +0 -18
  743. data/test/standard/math/test_lcm.rb +0 -13
  744. data/test/standard/math/test_median.rb +0 -17
  745. data/test/standard/math/test_percentile.rb +0 -13
  746. data/test/standard/math/test_pow.rb +0 -30
  747. data/test/standard/math/test_root.rb +0 -15
  748. data/test/standard/math/test_sec.rb +0 -19
  749. data/test/standard/math/test_sech.rb +0 -19
  750. data/test/standard/math/test_sign.rb +0 -20
  751. data/test/standard/math/test_sinc.rb +0 -15
  752. data/test/standard/math/test_srq.rb +0 -20
  753. data/test/standard/pathname/test_chdir.rb +0 -16
  754. data/test/standard/pathname/test_readline.rb +0 -23
  755. data/test/standard/test_argvector.rb +0 -64
  756. data/test/standard/test_cloneable.rb +0 -60
  757. data/test/standard/test_date.rb +0 -82
  758. data/test/standard/test_enumargs.rb +0 -105
  759. data/test/standard/test_equitable.rb +0 -46
  760. data/test/standard/test_instantiable.rb +0 -40
  761. data/test/standard/test_math.rb +0 -3
  762. data/test/standard/test_memoizable.rb +0 -42
  763. data/test/standard/test_multipliers.rb +0 -141
  764. data/test/standard/test_ostruct.rb +0 -191
  765. data/test/standard/test_random.rb +0 -241
  766. data/test/standard/test_shellwords.rb +0 -74
  767. data/test/standard/test_thread.rb +0 -24
  768. data/test/standard/test_timer.rb +0 -62
  769. data/test/standard/test_tuple.rb +0 -68
  770. data/test/standard/test_uri.rb +0 -50
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # Ruby Facets
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/facets.png)](http://badge.fury.io/rb/facets)
4
- [![Build Status](https://secure.travis-ci.org/rubyworks/facets.png)](http://travis-ci.org/rubyworks/facets)    
5
- [![Flattr Me](http://api.flattr.com/button/flattr-badge-large.png)](http://flattr.com/thing/324911/Rubyworks-Ruby-Development-Fund)
3
+ [![Gem Version](https://badge.fury.io/rb/facets.svg)](https://rubygems.org/gems/facets)
4
+ [![CI](https://github.com/rubyworks/facets/actions/workflows/ci.yml/badge.svg)](https://github.com/rubyworks/facets/actions/workflows/ci.yml)
6
5
 
7
6
 
8
7
  *"ALL YOUR BASE ARE BELONG TO RUBY"*
@@ -10,7 +9,7 @@
10
9
 
11
10
  ## Introduction
12
11
 
13
- Ruby Facets is the premiere collection of general purpose method
12
+ Ruby Facets is the premier collection of general purpose method
14
13
  extensions and standard additions for the Ruby programming language.
15
14
 
16
15
  Facets houses the largest single collection of methods available for
@@ -28,11 +27,10 @@ to a wide variety of usecases.
28
27
 
29
28
  ## Resources
30
29
 
31
- * Homepage: http://rubyworks.github.com/facets
32
- * Report Bugs: http://github.com/rubyworks/facets/issues
33
- * Mailing List: http://groups.google.com/group/facets-universal/topics
34
- * Wiki Pages: http://wiki.github.com/rubyworks/facets
35
- * Source Code: http://github.com/rubyworks/facets
30
+ * Homepage: https://rubyworks.github.io/facets
31
+ * Report Bugs: https://github.com/rubyworks/facets/issues
32
+ * Wiki Pages: https://github.com/rubyworks/facets/wiki
33
+ * Source Code: https://github.com/rubyworks/facets
36
34
 
37
35
 
38
36
  ## Documentation
@@ -45,7 +43,7 @@ it is important to remain aware of the source location of particular
45
43
  methods.
46
44
 
47
45
  For better organized online documentation, generated to separate core
48
- extensions from standard libraries, see the [Learn Facets](http://rubyworks.github.com/facets/learn.html) page on the website for links to available documentation.
46
+ extensions from standard libraries, see the [Learn Facets](https://rubyworks.github.io/facets/learn.html) page on the website for links to available documentation.
49
47
 
50
48
 
51
49
  ## Installation
@@ -64,16 +62,9 @@ The easiest way to install is via RubyGems.
64
62
 
65
63
  $ gem install facets
66
64
 
67
- ### Setup.rb
65
+ ### Requirements
68
66
 
69
- Facets can be installed the old-fashioned way using [Setup.rb](http://rubyworks.github.com/setup).
70
- Download and unpack the .tar.gz package and run setup.rb, like so:
71
-
72
- $ tar -xvzf facets-2.x.x.tar.gz
73
- $ cd facets-2.x.x
74
- $ sudo setup.rb
75
-
76
- Facets 2.8+ requires Ruby 1.8.7 or higher. Facets 3.0+ requires Ruby 2.0.0 or higher.
67
+ Facets 3.2+ requires Ruby 3.1 or higher.
77
68
 
78
69
 
79
70
  ## Mission
@@ -197,21 +188,20 @@ This project thrives on contribution!
197
188
 
198
189
  If you have any extension methods, classes or modules that you think have
199
190
  very general applicability and would like to see them included in
200
- this project, don't hesitiate to submit. Also, if you have better versions
191
+ this project, don't hesitate to submit. Also, if you have better versions
201
192
  of any thing already included or simply have a patch, they are more than
202
193
  welcome. We want Ruby Facets to be of the highest quality.
203
194
 
204
195
 
205
196
  ## Development
206
197
 
207
- Facets uses the [Lemon](http://rubyworks.github.com/lemon) testing framework
208
- to handle unit testing, while [QED](http://rubyworks.github.com/qed) specifications
209
- provide tested documentation.
198
+ Facets uses the [Lemon](https://rubyworks.github.io/lemon) testing framework
199
+ to handle unit testing, while [QED](https://rubyworks.github.io/qed) specifications
200
+ provide tested documentation. Run the test suite with [Rake](https://ruby.github.io/rake/):
201
+
202
+ $ rake test
210
203
 
211
- Facets uses [Detroit](http://detroit.github.com) and [Rulebow](http://rubyworks.github.com/rulebow)
212
- build tools. Detroit is a life-cycle tool and Rulebow is continuous integrations tool. The build
213
- scripts (`Assembly` and `Rulebook` respectively), sometimes use other tools such as
214
- [Mast](http://rubyworks.github.com/mast) and [Indexer](http://rubyworks.github.com/indexer).
204
+ Continuous integration runs on GitHub Actions (see `.github/workflows/ci.yml`).
215
205
 
216
206
 
217
207
  ## Authors
@@ -220,15 +210,18 @@ Much of this collection was written and/or inspired by a variety of great Ruby
220
210
  developers. Fortunately nearly all utilized works were copyrighted under the same
221
211
  open licenses, the Ruby License or the more liberal BSD and MIT licenses. In the
222
212
  one or two exceptions the copyright notice has been included with the source code.
223
- Any code file not specifically labeled othewise shall fall under the current Ruby
224
- License (which is BSD 2-clause).
213
+ We have since received permission from the various authors to normalize the licensing
214
+ to a single license. For this purpose we have chosen the BSD 2 Clause License.
215
+ This is the license Ruby itself now uses, so it seemed the most appropriate choice.
216
+ It is also almost identical to the MIT license. Any code file not specifically labeled
217
+ otherwise shall fall under the this license (which is BSD 2-clause).
225
218
 
226
219
  In all cases, every effort has been made to give credit where credit is due.
227
220
  You will find these acknowledgments embedded in the source code. You can see
228
221
  them in "CREDIT:" and/or "@author" lines.
229
- Also see the [Contibutors page](https://github.com/rubyworks/facets/wiki/Contributors)
222
+ Also see the [Contributors page](https://github.com/rubyworks/facets/wiki/Contributors)
230
223
  on the Wiki for a list of all contributing Rubyists. If anyone is missing from
231
- the list, please let us know so we can correct right away. Thanks.
224
+ the list, please let us know so we can correct. Thanks.
232
225
 
233
226
  This collection was put together by, and much of it written by [trans](https://github.com/trans).
234
227
  If need be, he can be reached via email at transfire at gmail.com.
@@ -239,22 +232,22 @@ If need be, he can be reached via email at transfire at gmail.com.
239
232
  The collection PER COLLECTION is licensed as follows:
240
233
 
241
234
  Ruby Facets
242
- Copyright (c) 2004,2010 Rubyworks
235
+ Copyright (c) 2005 Rubyworks
243
236
 
244
- Distributed under the terms of the Ruby license.
237
+ Distributed under the terms of the BSD-2 License (same as Ruby license).
245
238
 
246
- The Ruby license is a dual license that also provides for use of the GPL.
247
- Complete texts of both licenses accompany this document (see LICENSE).
239
+ The BSD 2 Clause License is a simple open source license. The complete text of the
240
+ license accompany this document (see the enclosed LICENSE file).
248
241
 
249
242
  Acknowledgments and Copyrights for particular snippets of borrowed code
250
- are given in their respective source. All licenses are either compatible
251
- with the Ruby license or the original author has given permission for
252
- inclusion of their code under such license.
243
+ are given in their respective source. At this point, all licensing has been normalized
244
+ for all included code. Original authors have given permission for inclusion of their
245
+ code under such license, with appropriate credit citations.
253
246
 
254
247
 
255
- "ALL YOUR BASE ARE BELONG TO RUBY!"
248
+ ## "ALL YOUR BASE ARE BELONG TO RUBY!"
256
249
 
257
- Ruby Facets, Copyright (c)2005,2011 Rubyworks
250
+ Ruby Facets, Copyright (c) 2005 Rubyworks
258
251
 
259
- Do you Ruby? (http://ruby-lang.org)
252
+ Do you Ruby? (https://ruby-lang.org)
260
253
 
@@ -1,42 +1 @@
1
- class Array
2
-
3
- # The `arrange` method produces appropriate ranges from the objects in the array.
4
- #
5
- # Examples
6
- #
7
- # [1,2,3,6,7,8].arrange #=> [1..3, 6..8]
8
- #
9
- # [10..15, 16..20, 21, 22].arrange #=> [10..22]
10
- #
11
- # Assumes inclusive ranges (ie. 1..4) and range.first <= range.last.
12
- #
13
- # Works with integers, dates and strings. However, all the objects in the array must
14
- # be of the same class.
15
- #
16
- # CREDIT: monocle
17
-
18
- def arrange
19
- array = uniq.sort_by { |e| Range === e ? e.first : e }
20
- array.inject([]) do |c, value|
21
- unless c.empty?
22
- last = c.last
23
- last_value = (Range === last ? last.last : last)
24
- current_value = (Range === value ? value.first : value)
25
- if (last_value.succ <=> current_value) == -1
26
- c << value
27
- else
28
- first = (Range === last ? last.first : last)
29
- second = [Range === last ? last.last : last, Range === value ? value.last : value].max
30
- c[-1] = [first..second]
31
- c.flatten!
32
- end
33
- else
34
- c << value
35
- end
36
- end
37
- end
38
-
39
- alias rangify arrange
40
-
41
- end
42
-
1
+ require 'facets/array/to_ranges'
@@ -7,7 +7,6 @@ class Array
7
7
  # [].average #=> nil
8
8
  # [1, 2, 3].average #=> 2
9
9
  # [3, 12, 57, 85, 15, 89, 33, 7, 22, 54].average #=> 37.7
10
- # [1,[2,nil,[3]],nil,4].collapse #=> [1,2,3,4]
11
10
  #
12
11
  def average
13
12
  return nil if empty?
@@ -19,7 +19,7 @@ class Array
19
19
  self[(index(value).to_i - 1) % length]
20
20
  end
21
21
 
22
- # Returns the value after the given value. The value before the last
22
+ # Returns the value next to the given value. The value next to the last
23
23
  # is the first. Returns nil if the given value is not in the array.
24
24
  #
25
25
  # Examples
@@ -0,0 +1,21 @@
1
+ class Array
2
+ # Deletes first item from +self+ that is equal to +obj+.
3
+ #
4
+ # Returns the deleted item, or +nil+ if no matching item is found.
5
+ #
6
+ # If the optional code block is given, the result of the block is returned if
7
+ # the item is not found.
8
+ #
9
+ # a = [ "a", "b", "b", "b", "c" ]
10
+ # a.delete_first("b") #=> "b"
11
+ # a #=> ["a", "c"]
12
+ # a.delete("z") #=> nil
13
+ # a.delete("z") {"not found"} #=> "not found"
14
+ def delete_first(el)
15
+ i = index(el)
16
+ if i
17
+ delete_at(i)
18
+ end
19
+ end
20
+ end
21
+
@@ -21,4 +21,17 @@ class Array
21
21
  h.delete_if{|_,v| v < min}.keys
22
22
  end
23
23
 
24
+ # In-place version of #duplicates. Replaces the array with
25
+ # only its duplicate elements.
26
+ #
27
+ # Examples:
28
+ #
29
+ # a = [1,1,2,3,2]
30
+ # a.duplicates! #=> [1,2]
31
+ # a #=> [1,2]
32
+ #
33
+ def duplicates!(min=2)
34
+ replace(duplicates(min))
35
+ end
36
+
24
37
  end
@@ -0,0 +1,113 @@
1
+ class Array
2
+ # Returns an array of _indexes_ of all objects in receiver such that the object is == to obj.
3
+ #
4
+ # If a block is given instead of an argument, returns the _indexes_ of all objects for which the
5
+ # block returns true.
6
+ #
7
+ # If neither a block nor argument is given, an Enumerator for _all_ indexes (each_index) is returned.
8
+ #
9
+ # Returns [] if no match is found.
10
+ #
11
+ # a = [ "a", "b", "c" ]
12
+ # a.indexes("b").to_a #=> [1]
13
+ # a.indexes("z").to_a #=> []
14
+ # a.indexes { |x| x == "b" }.to_a #=> [1]
15
+ #
16
+ # Like Array#index/rindex and Enumerable#find_index but returns _all_ indexes instead of just the
17
+ # first/last.
18
+ #
19
+ # See also: proposal to add Array#indexes to Ruby language: https://bugs.ruby-lang.org/issues/6596
20
+ #
21
+ # @author Tyler Rick
22
+ def indexes(*args)
23
+ case args.length
24
+ when 0
25
+ if block_given?
26
+ each_index.select {|i| yield(self[i]) }
27
+ else
28
+ each_index
29
+ end
30
+ when 1
31
+ other = args.first
32
+ each_index.select {|i| self[i] == other }
33
+ else
34
+ raise ArgumentError, "wrong number of arguments (given #{args.length}, expected 0..1)"
35
+ end
36
+ end
37
+ alias_method :index_all, :indexes
38
+ end
39
+
40
+ module Enumerable
41
+ # Returns an enumerator of _indexes_ of all objects in receiver such that the object is == to obj.
42
+ #
43
+ # If a block is given instead of an argument, returns the _indexes_ of all objects for which the
44
+ # block returns true.
45
+ #
46
+ # If neither a block nor argument is given, an Enumerator for _all_ indexes is returned.
47
+ #
48
+ # Returns [] if no match is found.
49
+ #
50
+ # a = ("a".."c")
51
+ # a.indexes("b").to_a #=> [1]
52
+ # a.indexes("z").to_a #=> []
53
+ # a.indexes { |x| x == "b" }.to_a #=> [1]
54
+ #
55
+ # Like Array#index/rindex and Enumerable#find_index but returns _all_ indexes instead of just the
56
+ # first/last.
57
+ #
58
+ # See also: proposal to add Array#indexes to Ruby language: https://bugs.ruby-lang.org/issues/6596
59
+ #
60
+ # @author Tyler Rick
61
+ #
62
+ def indexes(*args)
63
+ # Enumerable doesn't have each_index like Array has, so this uses each_with_index instead.
64
+ case args.length
65
+ when 0
66
+ if block_given?
67
+ each_with_index.select {|el, i| yield(el) }.map {|el, i| i }
68
+ else
69
+ each_with_index. map {|el, i| i }.to_enum
70
+ end
71
+ when 1
72
+ other = args.first
73
+ each_with_index. select {|el, i| el == other }.map {|el, i| i }
74
+ else
75
+ raise ArgumentError, "wrong number of arguments (given #{args.length}, expected 0..1)"
76
+ end
77
+ end
78
+ alias_method :index_all, :indexes
79
+ end
80
+
81
+ class Enumerator::Lazy
82
+ # Returns an enumerator of _indexes_ of all object in receiver such that the object is == to obj.
83
+ #
84
+ # If a block is given instead of an argument, returns the _indexes_ of all objects for which the
85
+ # block returns true.
86
+ #
87
+ # If neither a block nor argument is given, an Enumerator for _all_ indexes is returned.
88
+ #
89
+ # enum = (42 .. Float::INFINITY).lazy.indexes
90
+ # #=> #<Enumerator::Lazy: ...>
91
+ # enum.next #=> 0
92
+ # enum.next #=> 1
93
+ # enum.first(5) #=> [0, 1, 2, 3, 4]
94
+ #
95
+ # @author Tyler Rick
96
+ #
97
+ def indexes(*args)
98
+ case args.length
99
+ when 0
100
+ if block_given?
101
+ each_with_index.lazy.select {|el, i| yield(el) }.map {|el, i| i }
102
+ else
103
+ each_with_index.lazy. map {|el, i| i }.to_enum
104
+ end
105
+ when 1
106
+ other = args.first
107
+ each_with_index.lazy. select {|el, i| el == other }.map {|el, i| i }
108
+ else
109
+ raise ArgumentError, "wrong number of arguments (given #{args.length}, expected 0..1)"
110
+ end
111
+ end
112
+ alias_method :index_all, :indexes
113
+ end
@@ -1,3 +1,5 @@
1
+ require 'facets/array/duplicates'
2
+
1
3
  class Array
2
4
 
3
5
  # Returns a list of non-unique elements.
@@ -9,19 +11,15 @@ class Array
9
11
  # CREDIT: Martin DeMello
10
12
 
11
13
  def nonuniq
12
- h1 = {}
13
- h2 = {}
14
- each {|i|
15
- h2[i] = true if h1[i]
16
- h1[i] = true
17
- }
18
- h2.keys
14
+ warn "Array#nonuniq is deprecated. Use Array#duplicates instead.", uplevel: 1
15
+ duplicates
19
16
  end
20
17
 
21
18
  # Same as `#nonuniq` but acts in place.
22
19
 
23
20
  def nonuniq!
24
- self.replace(self.nonuniq)
21
+ warn "Array#nonuniq! is deprecated. Use Array#duplicates instead.", uplevel: 1
22
+ self.replace(duplicates)
25
23
  end
26
24
 
27
25
  end
@@ -11,6 +11,10 @@ class Array
11
11
  # [2,2,3,4,4,4].occurrence{|i| i % 2}
12
12
  # #=> { 0 => 5, 1 => 1 }
13
13
  #
14
+ # Without a block, this is equivalent to Ruby's #tally.
15
+ # With a block, the block transforms the key before counting,
16
+ # which #tally does not support.
17
+ #
14
18
  def occurrence
15
19
  h = Hash.new(0)
16
20
  if block_given?
@@ -26,4 +30,3 @@ class Array
26
30
  end
27
31
 
28
32
  end
29
-
@@ -0,0 +1,39 @@
1
+ class Array
2
+ # Returns a new array that is a copy of the original array, removing the first occurrence of any
3
+ # item that also appears in +other_ary+. The order is preserved from the original array.
4
+ #
5
+ # If there are multiple occurrences of an item in +other_ary+, this removes that many occurrences
6
+ # from self.
7
+ #
8
+ # This is similar to `Array#-` and `Array#difference`, except that instead of removing _all_
9
+ # matches, it only removes as many occurrences as there are in the +other_ary+:
10
+ #
11
+ # > [1, 1, 2].remove [1]
12
+ # => [1, 2]
13
+ #
14
+ # > [1, 1, 2].remove [1, 1, 1]
15
+ # => [2]
16
+ #
17
+ # > [1, 1, 2] - [1]
18
+ # => [2]
19
+ #
20
+ # > [1, 1, 2].difference [1]
21
+ # => [2]
22
+ #
23
+ def remove(other_ary)
24
+ dup.remove!(other_ary)
25
+ end
26
+
27
+ # For each element of `other_ary`, deletes the _first_ element from self that is equal to that element
28
+ # (using `delete_at`, not `delete`).
29
+ #
30
+ # This is the in-place version of remove.
31
+ #
32
+ def remove!(other_ary)
33
+ other_ary.each do |el|
34
+ i = index(el)
35
+ delete_at(i) if i
36
+ end
37
+ self
38
+ end
39
+ end
@@ -0,0 +1,29 @@
1
+ class Array
2
+ # Public: Split an array in two using a predicate
3
+ #
4
+ # Yields each element of the array.
5
+ #
6
+ # Examples
7
+ #
8
+ # %w(The quick brown fox).span { |word| word.length < 4 }
9
+ # #=> [['The'], ['quick', 'brown', 'fox']]
10
+ #
11
+ # [1, 1, 2, 3, 5, 8, 13, 21, 34].span(&:odd?)
12
+ # #=> [[1, 1], [2, 3, 5, 8, 13, 21, 34]]
13
+ #
14
+ # Returns a 2-tuple of arrays, the first element being the longest prefix for
15
+ # which the block evaluates to true, the second element being the rest of the
16
+ # array.
17
+ #
18
+ # TODO: This is based on Haskell's `span`, but the name is not intuitive
19
+ # for Ruby. Consider a more descriptive name (e.g. `split_while`).
20
+ # Also consider adding the inverse (Haskell's `break`), which splits
21
+ # where the predicate first becomes true.
22
+ def span
23
+ # This implementation is another way of saying
24
+ # `[take_while(&:block), drop_while(&:block)]`
25
+ index = find_index { |e| !yield e }
26
+ return [dup, []] if index.nil?
27
+ [take(index), drop(index)]
28
+ end
29
+ end
@@ -0,0 +1,25 @@
1
+ class Array
2
+
3
+ # Split on matching pattern. Breaks the array into [before, middle, after]
4
+ # segments. Uses Array#index to find the middle element.
5
+ #
6
+ # Examples
7
+ #
8
+ # ['a1','a2','b1','a3','b2','a4'].split('b1')
9
+ # #=> [['a1','a2'],b1,['a3','b2','a4']]
10
+ #
11
+ # ['a1','a2','b1','a3','b2','a4'].split('foo')
12
+ # #=> [[],nil,[]]
13
+ #
14
+ # Returns list of split-up arrays. [Tuple<Array,Object,Array>]
15
+
16
+ def split_at(*args, &block)
17
+ if middle = index(*args, &block)
18
+ [self[0...middle], self[middle], self[middle+1..-1]]
19
+ else
20
+ [[], nil, []]
21
+ end
22
+ end
23
+
24
+ end
25
+
@@ -12,12 +12,17 @@ class Array
12
12
  # [36, -67, -17, 85, -46, -64, -23, -13, 89, -47].standard_deviation #=> 54.67183918618432
13
13
  # [60.7829, 31.2622, 20.626, 78.8907, 61.5328].standard_deviation #=> 21.428815505053002
14
14
  #
15
- def standard_deviation
15
+ def stddev
16
16
  return nil if empty?
17
17
  Math.sqrt(variance)
18
18
  end
19
19
 
20
- alias sd standard_deviation
20
+ alias sd stddev
21
+
22
+ def standard_deviation
23
+ warn "Array#standard_deviation is deprecated. Use Array#stddev or Array#sd instead.", uplevel: 1
24
+ stddev
25
+ end
21
26
  end
22
27
 
23
28
 
@@ -2,30 +2,28 @@ class Array
2
2
 
3
3
  # Iterate over every nth element of an array.
4
4
  #
5
+ # An optional offset can be given to start from a
6
+ # specific index (default is 0).
7
+ #
8
+ # [:a, :b, :c, :d, :e, :f].step(2).to_a #=> [:a, :c, :e]
9
+ # [:a, :b, :c, :d, :e, :f].step(2, 1).to_a #=> [:b, :d, :f]
10
+ # [:a, :b, :c, :d, :e, :f].step(3).to_a #=> [:a, :d]
11
+ #
5
12
  # r = []
6
13
  # [:a, :b, :c, :d].step(2) { |x| r << x }
7
- # r #=> [:b, :d]
8
- #
9
- # Without a block it returns an Enumerator.
10
- #
11
- # [:a, :b, :c, :d].step(1).to_a #=> [:a, :b, :c, :d]
12
- # [:a, :b, :c, :d].step(2).to_a #=> [:b, :d]
13
- # [:a, :b, :c, :d].step(3).to_a #=> [:c]
14
- # [:a, :b, :c, :d].step(5).to_a #=> []
14
+ # r #=> [:a, :c]
15
15
  #
16
16
  # CREDIT: Ryan Duryea
17
17
 
18
- def step(n) #:yield:
18
+ def step(n, offset=0) #:yield:
19
19
  if block_given?
20
- ((n - 1)...size).step(n).each do |i|
20
+ (offset...size).step(n).each do |i|
21
21
  yield(fetch(i))
22
22
  end
23
23
  else
24
- Enumerator.new(size / n) do |y|
25
- ((n - 1)...self.size).step(n).each { |i| y << fetch(i) }
24
+ Enumerator.new do |y|
25
+ (offset...size).step(n).each { |i| y << fetch(i) }
26
26
  end
27
27
  end
28
28
  end
29
29
  end
30
-
31
-
@@ -0,0 +1,48 @@
1
+ class Array
2
+
3
+ # Produces an array of ranges from the values in the array.
4
+ # Contiguous values and overlapping ranges are merged.
5
+ # Single values are returned as single-element ranges (e.g. 1..1).
6
+ #
7
+ # Examples
8
+ #
9
+ # [1,2,3,6,7,8].to_ranges #=> [1..3, 6..8]
10
+ #
11
+ # [3,4,5,1,6,9,8].to_ranges #=> [1..1, 3..6, 8..9]
12
+ #
13
+ # [10..15, 16..20, 21, 22].to_ranges #=> [10..22]
14
+ #
15
+ # Assumes inclusive ranges (i.e. 1..4) and range.first <= range.last.
16
+ #
17
+ # Works with integers, dates and strings. However, all the objects
18
+ # in the array must be of the same class.
19
+ #
20
+ # CREDIT: monocle, Ryan Duryea
21
+
22
+ def to_ranges
23
+ array = compact.uniq.sort_by { |e| Range === e ? e.first : e }
24
+ result = array.inject([]) do |c, value|
25
+ unless c.empty?
26
+ last = c.last
27
+ last_value = (Range === last ? last.last : last)
28
+ current_value = (Range === value ? value.first : value)
29
+ if (last_value.succ <=> current_value) == -1
30
+ c << value
31
+ else
32
+ first = (Range === last ? last.first : last)
33
+ second = [Range === last ? last.last : last, Range === value ? value.last : value].max
34
+ c[-1] = [first..second]
35
+ c.flatten!
36
+ end
37
+ else
38
+ c << value
39
+ end
40
+ end
41
+ # Ensure all elements are ranges
42
+ result.map { |e| Range === e ? e : e..e }
43
+ end
44
+
45
+ alias arrange to_ranges
46
+ alias rangify to_ranges
47
+
48
+ end
@@ -15,9 +15,9 @@ class Array
15
15
  #
16
16
  # Returns [Array] of unique elements.
17
17
  #
18
- def uniq_by! #:yield:
19
- h = {}
20
- replace( inject([]){|a,x| h[yield(x)] ||= a << x} )
18
+ def uniq_by!(&block) #:yield:
19
+ warn "Array#uniq_by! is deprecated. Use Array#uniq!(&block) instead.", uplevel: 1
20
+ uniq!(&block)
21
21
  end
22
22
 
23
23
  end
@@ -43,7 +43,7 @@ require_relative 'array/split.rb'
43
43
  require_relative 'array/squeeze.rb'
44
44
  require_relative 'array/store.rb'
45
45
  require_relative 'array/thru.rb'
46
- require_relative 'array/to_h.rb'
46
+ #require_relative 'array/to_h.rb' # removed: now provided by Ruby
47
47
  require_relative 'array/traverse.rb'
48
48
  require_relative 'array/uniq_by.rb'
49
49
 
@@ -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.