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
@@ -1,23 +1,15 @@
1
1
  module Kernel
2
2
 
3
- # Require a pattern of files relatvie to the current file.
4
- # This makes is easy to require an entire directory, for instance:
3
+ # Require a pattern of files relative to the current file.
4
+ # This makes it easy to require an entire directory, for instance:
5
5
  #
6
6
  # require_all 'core_ext/*'
7
7
  #
8
- # NOTE: This method used to allow glob-based requires from the $LOAD_PATH,
9
- # but this was deprecated in favor of relative requiring only, as it is
10
- # consider the typical usecase, and globbing from the $LOAD_PATH is a
11
- # bit dangerous. Better options exist for globbing the $LOAD_PATH such as
12
- # the +plugins+ gem.
13
8
 
14
9
  def require_all(pattern)
15
- c = caller.first
16
- fail "Can't parse #{c}" unless c.rindex(/:\d+(:in `.*')?$/)
17
- file = $` # File.dirname(c)
18
- if /\A\((.*)\)/ =~ file # eval, etc.
19
- raise LoadError, "require_relative is called in #{$1}"
20
- end
10
+ loc = caller_locations(1, 1).first
11
+ file = loc.absolute_path || loc.path
12
+ raise LoadError, "require_all is called in #{loc.label}" unless file
21
13
  glob = File.expand_path(pattern, File.dirname(file))
22
14
  Dir.glob(glob).each do |absolute|
23
15
  require absolute
@@ -26,12 +18,9 @@ module Kernel
26
18
 
27
19
  # Same as #require_all, but for #load.
28
20
  def load_all(pattern, safe=nil)
29
- c = caller.first
30
- fail "Can't parse #{c}" unless c.rindex(/:\d+(:in `.*')?$/)
31
- file = $` # File.dirname(c)
32
- if /\A\((.*)\)/ =~ file # eval, etc.
33
- raise LoadError, "require_relative is called in #{$1}"
34
- end
21
+ loc = caller_locations(1, 1).first
22
+ file = loc.absolute_path || loc.path
23
+ raise LoadError, "load_all is called in #{loc.label}" unless file
35
24
  glob = File.expand_path(pattern, File.dirname(file))
36
25
  Dir.glob(glob).each do |absolute|
37
26
  load absolute, safe
@@ -39,4 +28,3 @@ module Kernel
39
28
  end
40
29
 
41
30
  end
42
-
@@ -1,25 +1,9 @@
1
1
  module Kernel
2
2
 
3
- # A Ruby-ized realization of the K combinator.
3
+ # @deprecated Use Kernel#tap instead (built-in since Ruby 1.9).
4
4
  #
5
- # book_class = Struct.new(:title, :author)
6
- #
7
- # book = returning book_class.new do |book|
8
- # book.title = "Imperium"
9
- # book.author = "Ulick Varange"
10
- # end
11
- #
12
- # book.class #=> book_class
13
- #
14
- # Technically, #returning probably should force the return of
15
- # the stated object irregardless of any return statements that
16
- # might appear within it's block. This might differentiate
17
- # #returning from #with, however it also would require
18
- # implementation in Ruby itself.
19
- #
20
- # CREDIT: Mikael Brockman
21
-
22
- def returning(obj=self) #:yield:
5
+ def returning(obj=self)
6
+ warn "Kernel#returning is deprecated. Use Kernel#tap instead.", uplevel: 1
23
7
  yield obj
24
8
  obj
25
9
  end
@@ -1,36 +1,3 @@
1
- require 'facets/functor'
2
-
3
- module Kernel
4
-
5
- # The tap K-Combinator. This yields self -and- returns self.
6
- #
7
- # 'foo.yml'.tap{ |f| YAML.load(f) } #=> 'foo.yml'
8
- #
9
- # Unlike Ruby's definition, this rendition can be used as a higher
10
- # order message. This form allows a single call before returning
11
- # the receiver.
12
- #
13
- # YAML.tap.load_file('foo.yml').load_file('bar.yml')
14
- #
15
- # IMPORTANT: This is one of few core overrides in Facets.
16
-
17
- def tap #:yield:
18
- if block_given?
19
- yield(self)
20
- self
21
- else
22
- Functor.new{ |op,*a,&b| self.send(op, *a, &b); self }
23
- end
24
- end
25
-
26
- # Old Definition:
27
- #
28
- # def tap #:yield:
29
- # if block_given?
30
- # b.arity == 1 ? yield(self) : instance_eval(&b)
31
- # end
32
- # return self
33
- # end
34
- #
35
-
36
- end
1
+ # Facets no longer overrides Kernel#tap. Use Kernel#functor instead
2
+ # for the block-less Functor form.
3
+ require 'facets/kernel/functor'
@@ -0,0 +1,2 @@
1
+ # @deprecated Use Kernel#functor instead.
2
+ require 'facets/kernel/functor'
@@ -3,38 +3,36 @@ require 'facets/functor'
3
3
  module Kernel
4
4
 
5
5
  # Invokes the method identified by the symbol +method+, passing it any
6
- # arguments and/or the block specified, just like the regular Ruby
7
- # <tt>Object#send</tt> does.
6
+ # arguments and/or the block specified.
8
7
  #
9
- # *Unlike* that method however, a +NoMethodError+ exception will *not*
10
- # be raised and +nil+ will be returned instead, if the receiving object
11
- # is a +nil+ object or NilClass.
8
+ # Unlike regular send, a +NoMethodError+ exception will *not* be raised
9
+ # if the receiving object is +nil+ (see NilClass#try below).
12
10
  #
13
- # For example, without try
11
+ # Compatible with ActiveSupport's #try, plus an additional Functor
12
+ # form when called with no arguments and no block.
14
13
  #
15
- # @example = Struct.new(:name).new("bob")
16
- #
17
- # @example && @example.name
18
- #
19
- # or:
20
- #
21
- # @example ? @example.name : nil
22
- #
23
- # But with try
24
- #
25
- # @example.try(:name) #=> "bob"
26
- #
27
- # or
28
- #
29
- # @example.try.name #=> "bob"
30
- #
31
- # It also accepts arguments and a block, for the method it is trying:
32
- #
33
- # @people.try(:collect){ |p| p.name }
14
+ # @example.try(:name) #=> "bob"
15
+ # @example.try { |o| o.name } #=> "bob" (ActiveSupport block form)
16
+ # @example.try.name #=> "bob" (Facets Functor form)
34
17
  #
35
18
  def try(method=nil, *args, &block)
36
19
  if method
37
20
  __send__(method, *args, &block)
21
+ elsif block_given?
22
+ yield self
23
+ else
24
+ self
25
+ end
26
+ end
27
+
28
+ # Like #try, but raises NoMethodError if the method doesn't exist
29
+ # (unless receiver is nil). Compatible with ActiveSupport's #try!.
30
+ #
31
+ def try!(method=nil, *args, &block)
32
+ if method
33
+ public_send(method, *args, &block)
34
+ elsif block_given?
35
+ yield self
38
36
  else
39
37
  self
40
38
  end
@@ -46,13 +44,25 @@ end
46
44
  class NilClass
47
45
 
48
46
  # See Kernel#try.
49
- def try(method=nil, *args)
47
+ def try(method=nil, *args, &block)
50
48
  if method
51
49
  nil
50
+ elsif block_given?
51
+ nil
52
52
  else
53
- Functor.new{ nil }
53
+ Functor.new { nil }
54
54
  end
55
55
  end
56
56
 
57
- end
57
+ # See Kernel#try!.
58
+ def try!(method=nil, *args, &block)
59
+ if method
60
+ nil
61
+ elsif block_given?
62
+ nil
63
+ else
64
+ Functor.new { nil }
65
+ end
66
+ end
58
67
 
68
+ end
@@ -8,7 +8,6 @@ require_relative 'kernel/callstack.rb'
8
8
  require_relative 'kernel/call_stack.rb'
9
9
  require_relative 'kernel/case.rb'
10
10
  require_relative 'kernel/complete.rb'
11
- require_relative 'kernel/constant.rb'
12
11
  require_relative 'kernel/d.rb'
13
12
  require_relative 'kernel/deep_clone.rb'
14
13
  require_relative 'kernel/deep_copy.rb'
@@ -48,7 +47,6 @@ require_relative 'kernel/not_nil.rb'
48
47
  require_relative 'kernel/object_class.rb'
49
48
  require_relative 'kernel/object_hexid.rb'
50
49
  require_relative 'kernel/object_send.rb'
51
- require_relative 'kernel/p.rb'
52
50
  require_relative 'kernel/presence.rb'
53
51
  require_relative 'kernel/present.rb'
54
52
  require_relative 'kernel/qua_class.rb'
@@ -57,8 +55,8 @@ require_relative 'kernel/respond.rb'
57
55
  require_relative 'kernel/returning.rb'
58
56
  require_relative 'kernel/silence.rb'
59
57
  require_relative 'kernel/silence_warnings.rb'
60
- require_relative 'kernel/singleton_class.rb'
61
58
  require_relative 'kernel/super_method.rb'
59
+ require_relative 'kernel/functor.rb'
62
60
  require_relative 'kernel/tap.rb'
63
61
  require_relative 'kernel/temporarily.rb'
64
62
  #require_relative 'kernel/trap_chain.rb' # uncommon
@@ -70,7 +68,7 @@ require_relative 'kernel/writers.rb'
70
68
  #require_relative 'kernel/y.rb' # uncommon
71
69
  require_relative 'kernel/yes.rb'
72
70
  require_relative 'kernel/__class__.rb'
73
- require_relative 'kernel/__dir__.rb'
71
+ #require_relative 'kernel/__dir__.rb' # removed, use Ruby's built-in __dir__
74
72
  require_relative 'kernel/__get__.rb'
75
73
  require_relative 'kernel/__set__.rb'
76
74
 
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # Copyright (c) 2005 MenTaLguY <mental@rydia.net>
12
12
  #
13
- # Ruby License
13
+ # Ruby License / BSD-2 License
14
14
  #
15
15
  # This module is free software. You may use, modify, and/or redistribute this
16
16
  # software under the same terms as Ruby.
@@ -1,3 +1,3 @@
1
- require_relative 'matchdata/match.rb'
1
+ #require_relative 'matchdata/match.rb' # removed: now provided by Ruby
2
2
  require_relative 'matchdata/matchset.rb'
3
3
 
@@ -1,50 +1,12 @@
1
1
  class Module
2
2
 
3
- # Encapsulates the common pattern of ...
3
+ # @deprecated Use Module#prepend instead (built-in since Ruby 2.0).
4
4
  #
5
- # alias_method :foo_without_feature, :foo
6
- # alias_method :foo, :foo_with_feature
5
+ # The alias_method_chain pattern has been superseded by Module#prepend,
6
+ # which provides a cleaner way to wrap methods.
7
7
  #
8
- # With this, you simply do ...
9
- #
10
- # alias_method_chain :foo, :feature
11
- #
12
- # For example
13
- #
14
- # class AliasMethodChainExample
15
- # def foo
16
- # "foo"
17
- # end
18
- #
19
- # def foo_with_feature
20
- # "foo!"
21
- # end
22
- #
23
- # alias_method_chain :foo, :feature
24
- # end
25
- #
26
- # And both aliases are set up for you.
27
- #
28
- # example = AliasMethodChainExample.new
29
- # example.foo #=> "foo!"
30
- # example.foo_without_feature #=> "foo"
31
- #
32
- # Query and bang methods (foo?, foo!) keep the same punctuation ...
33
- #
34
- # alias_method_chain :foo?, :feature
35
- #
36
- # is equivalent to ...
37
- #
38
- # alias_method :foo_without_feature?, :foo?
39
- # alias_method :foo?, :foo_with_feature?
40
- #
41
- # so you can safely chain foo, foo?, and foo! with the same feature.
42
- #
43
- # CREDIT: Bitsweat, Rails Team
44
-
45
8
  def alias_method_chain(target, feature)
46
- # Strip out punctuation on predicates or bang methods since
47
- # e.g. target?_without_feature is not a valid method name.
9
+ warn "Module#alias_method_chain is deprecated. Use Module#prepend instead.", uplevel: 1
48
10
  aliased_target, punctuation = target.to_s.sub(/([?!=])$/, ''), $1
49
11
  yield(aliased_target, punctuation) if block_given?
50
12
 
@@ -64,4 +26,3 @@ class Module
64
26
  end
65
27
 
66
28
  end
67
-
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class Module
2
3
 
3
4
  # Create an attribute method for both getting
@@ -19,7 +20,7 @@ class Module
19
20
  # CREDIT: Trans
20
21
 
21
22
  def attr_setter(*args)
22
- code, made = '', []
23
+ code, made = [], []
23
24
  args.each do |a|
24
25
  code << %{
25
26
  def #{a}(*args)
@@ -28,7 +29,7 @@ class Module
28
29
  }
29
30
  made << "#{a}".to_sym
30
31
  end
31
- module_eval code
32
+ module_eval code.join
32
33
  made
33
34
  end
34
35
 
@@ -1,20 +1,9 @@
1
1
  class Module
2
2
 
3
- # An alias for #extend.
4
- #
5
- # module EgCan
6
- # def foo; "foo"; end
7
- # end
8
- #
9
- # class EgCanClass
10
- # can EgCan
11
- # end
12
- #
13
- # EgCanClass.foo #=> 'foo'
14
- #
15
- # BTW, why is Forwardable an -able? It's not a mixin!
16
-
17
- alias_method :can, :extend
3
+ # @deprecated Use Module#extend instead.
4
+ def can(*mods)
5
+ warn "Module#can is deprecated. Use Module#extend instead.", uplevel: 1
6
+ extend(*mods)
7
+ end
18
8
 
19
9
  end
20
-
@@ -42,7 +42,7 @@ class Module
42
42
  def class_extend(*mods, &block)
43
43
  class_extension = Module.new
44
44
 
45
- class_extension.__send__(:include, *mods)
45
+ class_extension.__send__(:include, *mods) if mods.any?
46
46
  class_extension.module_eval(&block) if block_given?
47
47
 
48
48
  extend(class_extension) # extend this module too
@@ -83,7 +83,7 @@ class Class
83
83
  #
84
84
  def class_extend(*mods, &block)
85
85
  class_extension = Module.new
86
- class_extension.__send__(:include, *mods)
86
+ class_extension.__send__(:include, *mods) if mods.any?
87
87
  class_extension.module_eval(&block) if block
88
88
  extend(class_extension)
89
89
  class_extensions << class_extension
@@ -1,8 +1,8 @@
1
1
  require_relative 'numeric/approx.rb'
2
2
  require_relative 'numeric/distance.rb'
3
3
  require_relative 'numeric/length.rb'
4
- require_relative 'numeric/negative.rb'
5
- require_relative 'numeric/positive.rb'
4
+ #require_relative 'numeric/negative.rb' # removed: now provided by Ruby
5
+ #require_relative 'numeric/positive.rb' # removed: now provided by Ruby
6
6
  require_relative 'numeric/round_to.rb'
7
7
  require_relative 'numeric/spacing.rb'
8
8
 
@@ -1,20 +1,4 @@
1
1
  class Object
2
- # Override this in a child class if it cannot be dup'ed.
3
- #
4
- # obj1 = Object.new
5
- # obj2 = obj1.dup!
6
- # obj2.equal?(obj1) #=> false
7
- #
8
- # CREDIT: Dan Kubb (extlib)
9
- def dup!
10
- dup
11
- end
12
-
13
- # Alternative name for #dup!
14
- def try_dup
15
- dup!
16
- end
17
-
18
2
  # Can you safely call #dup on this object?
19
3
  #
20
4
  # Returns +false+ for +nil+, +false+, +true+, symbols, and numbers;
@@ -24,56 +8,26 @@ class Object
24
8
  end
25
9
 
26
10
  class NilClass
27
- # Since NilClass is immutable it cannot be duplicated.
28
- # For this reason #try_dup returns +self+.
29
- #
30
- # nil.dup! #=> nil
31
- #
32
- def dup! ; self ; end
33
11
  def dup? ; false ; end
34
12
  def clone? ; false ; end
35
13
  end
36
14
 
37
15
  class FalseClass
38
- # Since FalseClass is immutable it cannot be duplicated.
39
- # For this reason #try_dup returns +self+.
40
- #
41
- # false.dup! #=> false
42
- #
43
- def dup! ; self ; end
44
16
  def dup? ; false ; end
45
17
  def clone? ; false ; end
46
18
  end
47
19
 
48
20
  class TrueClass
49
- # Since TrueClass is immutable it cannot be duplicated.
50
- # For this reason #try_dup returns +self+.
51
- #
52
- # true.dup! #=> true
53
- #
54
- def dup! ; self ; end
55
21
  def dup? ; false ; end
56
22
  def clone? ; false ; end
57
23
  end
58
24
 
59
25
  class Symbol
60
- # Since Symbol is immutable it cannot be duplicated.
61
- # For this reason #try_dup returns +self+.
62
- #
63
- # :a.dup! #=> :a
64
- #
65
- def dup! ; self ; end
66
26
  def dup? ; false ; end
67
27
  def clone? ; false ; end
68
28
  end
69
29
 
70
30
  class Numeric
71
- # Since Numeric is immutable it cannot be duplicated.
72
- # For this reason #try_dup returns +self+.
73
- #
74
- # 1.dup! #=> 1
75
- #
76
- def dup! ; self ; end
77
31
  def dup? ; false ; end
78
32
  def clone? ; false ; end
79
33
  end
@@ -1,7 +1,7 @@
1
1
  # TODO: Is there a good reason for these to be here instead of in Kernel module?
2
2
  require_relative 'object/clone.rb'
3
3
  require_relative 'object/dup.rb'
4
- require_relative 'object/itself.rb'
4
+ #require_relative 'object/itself.rb' # removed: now provided by Ruby
5
5
  require_relative 'object/object_state.rb'
6
- require_relative 'object/try_dup.rb'
6
+ #require_relative 'object/try_dup.rb' # removed
7
7
 
@@ -1,5 +1,3 @@
1
- require 'facets/kernel/singleton_class'
2
-
3
1
  class Proc
4
2
 
5
3
  # Bind a Proc to an object returning a Method.
@@ -1,42 +1,21 @@
1
1
  class Proc
2
2
 
3
- # Returns a new proc that is the functional
4
- # composition of two procs, in order.
5
- #
6
- # a = lambda { |x| x + 4 }
7
- # b = lambda { |y| y / 2 }
8
- #
9
- # a.compose(b).call(4) #=> 6
10
- # b.compose(a).call(4) #=> 4
11
- #
12
- # CREDIT: Dave
13
-
3
+ # @deprecated Use Proc#>> or Proc#<< instead (built-in since Ruby 2.6).
14
4
  def compose(g)
15
- raise ArgumentError, "arity count mismatch" unless arity == g.arity
16
- lambda{ |*a| self[ *g[*a] ] }
5
+ warn "Proc#compose is deprecated. Use Proc#<< instead (right-to-left composition).", uplevel: 1
6
+ self << g
17
7
  end
18
8
 
19
- # Operator for Proc#compose and Integer#times_collect/of.
20
- #
21
- # a = lambda { |x| x + 4 }
22
- # b = lambda { |y| y / 2 }
23
- #
24
- # (a * b).call(4) #=> 6
25
- # (b * a).call(4) #=> 4
26
- #
27
- # CREDIT: Dave
28
-
9
+ # @deprecated Use Proc#>> or Proc#<< for composition (built-in since Ruby 2.6).
29
10
  def *(x)
30
- if Integer===x
31
- # collect times
11
+ warn "Proc#* is deprecated. Use Proc#<< for composition (right-to-left).", uplevel: 1
12
+ if Integer === x
32
13
  c = []
33
14
  x.times{|i| c << call(i)}
34
15
  c
35
16
  else
36
- # compose procs
37
- lambda{|*a| self[x[*a]]}
17
+ self << x
38
18
  end
39
19
  end
40
20
 
41
21
  end
42
-
@@ -1,5 +1,4 @@
1
1
  require 'facets/proc/bind'
2
- require 'facets/kernel/singleton_class'
3
2
 
4
3
  class Proc
5
4
 
@@ -1,6 +1,13 @@
1
1
  class Proc
2
2
 
3
- # Use a Proc as an observable.
3
+ # Alias for #call, allowing a Proc to be used as an Observer.
4
+ #
5
+ # Ruby's Observable module (now the `observer` gem, removed from
6
+ # stdlib in Ruby 3.2) calls #update on observers. This alias
7
+ # lets a Proc serve as an observer directly.
8
+ #
9
+ # TODO: Consider submitting a PR to the observer gem to include
10
+ # this extension there instead.
4
11
  #
5
12
  # CREDIT: Tim Pease
6
13
 
@@ -1,2 +1,2 @@
1
- require_relative 'process/daemon.rb'
1
+ #require_relative 'process/daemon.rb' # removed: now provided by Ruby
2
2
 
@@ -0,0 +1,42 @@
1
+ class Range
2
+
3
+ # Returns the intersection of two or more ranges — the region they
4
+ # all share. Returns nil if the ranges do not overlap.
5
+ #
6
+ # Works with any comparable type: integers, floats, dates, strings, etc.
7
+ #
8
+ # Examples
9
+ #
10
+ # Range.intersection(1..10, 5..15) #=> 5..10
11
+ # Range.intersection(1..5, 3..7, 4..9) #=> 4..5
12
+ # Range.intersection(1..3, 5..7) #=> nil
13
+ # Range.intersection(1.0..5.0, 2.5..4.5) #=> 2.5..4.5
14
+ #
15
+ # Also available as an instance method:
16
+ #
17
+ # (1..10).intersection(5..15) #=> 5..10
18
+ #
19
+ # CREDIT: Trans
20
+
21
+ def self.intersection(*ranges)
22
+ return nil if ranges.empty?
23
+ ranges.reduce do |result, r|
24
+ return nil unless result.overlap?(r)
25
+ new_first = result.first > r.first ? result.first : r.first
26
+ new_last = result.last < r.last ? result.last : r.last
27
+ new_first..new_last
28
+ end
29
+ end
30
+
31
+ # Returns the intersection of this range with one or more other ranges.
32
+ # Returns nil if the ranges do not overlap.
33
+ #
34
+ # (1..10).intersection(5..15) #=> 5..10
35
+ # (1..10).intersection(5..15, 8..20) #=> 8..10
36
+ # (1..3).intersection(5..7) #=> nil
37
+ #
38
+ def intersection(*others)
39
+ Range.intersection(self, *others)
40
+ end
41
+
42
+ end
@@ -10,16 +10,14 @@ class Range
10
10
  #
11
11
  # CREDIT: Codeindulgence
12
12
 
13
- def nudge(options_or_number = 1)
14
- if options_or_number.instance_of? Fixnum
15
- {:min => options_or_number, :max => options_or_number}
16
- min = options_or_number
17
- max = options_or_number
13
+ def nudge(value = 1, min: nil, max: nil)
14
+ if min or max
15
+ min ||= 0
16
+ max ||= 0
18
17
  else
19
- min = options_or_number[:min].to_i
20
- max = options_or_number[:max].to_i
18
+ min = max = value
21
19
  end
22
-
20
+
23
21
  if exclude_end?
24
22
  (self.min + min)...((self.max + 1) + max)
25
23
  else
@@ -1,5 +1,5 @@
1
1
  require_relative 'range/combine.rb'
2
- require_relative 'range/overlap.rb'
2
+ #require_relative 'range/intersection.rb' # too new
3
3
  #require_relative 'range/quantile.rb' # uncommon
4
4
  #require_relative 'range/op_add.rb' # too new
5
5
  #require_relative 'range/op_sub.rb' # too new
@@ -21,7 +21,7 @@ class String
21
21
  :replace => alt, # Use a blank for those replacements
22
22
  :UNIVERSAL_NEWLINE_DECORATOR => true # Always break lines with \n
23
23
  }
24
- self.encode(Encoding.find('ASCII'), encoding_options)
24
+ self.encode(Encoding.find('ASCII'), **encoding_options)
25
25
  end
26
26
 
27
27
  # Modify string keeping only ASCII characters.
@@ -46,7 +46,7 @@ class String
46
46
  :replace => alt, # Use a blank for those replacements
47
47
  :UNIVERSAL_NEWLINE_DECORATOR => true # Always break lines with \n
48
48
  }
49
- self.encode!(Encoding.find('ASCII'), encoding_options)
49
+ self.encode!(Encoding.find('ASCII'), **encoding_options)
50
50
  end
51
51
 
52
52
  end