facets 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (748) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.md +112 -0
  3. data/HISTORY.md +179 -0
  4. data/LICENSE.txt +21 -343
  5. data/{README.rdoc → README.md} +74 -67
  6. data/lib/core/facets/array/arrange.rb +1 -42
  7. data/lib/core/facets/array/average.rb +15 -0
  8. data/lib/core/facets/array/before.rb +1 -1
  9. data/lib/core/facets/array/collapse.rb +4 -0
  10. data/lib/core/facets/array/delete_first.rb +21 -0
  11. data/lib/core/facets/array/delete_values_at.rb +1 -0
  12. data/lib/core/facets/array/divide.rb +7 -0
  13. data/lib/core/facets/array/duplicates.rb +15 -0
  14. data/lib/core/facets/array/each_pair.rb +1 -4
  15. data/lib/core/facets/array/first.rb +1 -0
  16. data/lib/core/facets/array/from.rb +11 -16
  17. data/lib/core/facets/array/indexes.rb +113 -0
  18. data/lib/core/facets/array/last.rb +1 -0
  19. data/lib/core/facets/array/mode.rb +2 -2
  20. data/lib/core/facets/array/nonuniq.rb +6 -8
  21. data/lib/core/facets/array/occurrence.rb +8 -4
  22. data/lib/core/facets/array/probability.rb +1 -1
  23. data/lib/core/facets/array/recursively.rb +2 -2
  24. data/lib/core/facets/array/remove.rb +39 -0
  25. data/lib/core/facets/array/span.rb +29 -0
  26. data/lib/core/facets/array/splice.rb +1 -1
  27. data/lib/core/facets/array/split_at.rb +25 -0
  28. data/lib/core/facets/array/standard_deviation.rb +28 -0
  29. data/lib/core/facets/array/step.rb +12 -14
  30. data/lib/core/facets/array/to_ranges.rb +48 -0
  31. data/lib/core/facets/array/uniq_by.rb +7 -3
  32. data/lib/core/facets/array/variance.rb +20 -0
  33. data/lib/core/facets/array.rb +1 -0
  34. data/lib/core/facets/binding/caller.rb +8 -2
  35. data/lib/core/facets/binding/op_get.rb +7 -11
  36. data/lib/core/facets/binding/self.rb +4 -10
  37. data/lib/core/facets/binding.rb +0 -1
  38. data/lib/core/facets/boolean.rb +1 -1
  39. data/lib/core/facets/class/descendants.rb +0 -2
  40. data/lib/core/facets/class.rb +2 -2
  41. data/lib/core/facets/comparable/bound.rb +13 -1
  42. data/lib/core/facets/comparable/clip.rb +3 -32
  43. data/lib/core/facets/denumerable.rb +0 -3
  44. data/lib/core/facets/dir/find.rb +20 -0
  45. data/lib/core/facets/dir/recurse.rb +8 -26
  46. data/lib/core/facets/enumerable/cluster.rb +6 -4
  47. data/lib/core/facets/enumerable/compact_map.rb +2 -12
  48. data/lib/core/facets/enumerable/defer.rb +2 -13
  49. data/lib/core/facets/enumerable/each_by.rb +0 -2
  50. data/lib/core/facets/enumerable/frequency.rb +2 -2
  51. data/lib/core/facets/enumerable/hashify.rb +27 -31
  52. data/lib/core/facets/enumerable/hinge.rb +3 -4
  53. data/lib/core/facets/enumerable/map_with_index.rb +3 -6
  54. data/lib/core/facets/enumerable/mash.rb +5 -28
  55. data/lib/core/facets/enumerable/uniq_by.rb +4 -8
  56. data/lib/core/facets/enumerable/with_position.rb +58 -0
  57. data/lib/core/facets/enumerator.rb +2 -75
  58. data/lib/core/facets/exception/error_print.rb +6 -71
  59. data/lib/core/facets/file/atomic_open.rb +1 -1
  60. data/lib/core/facets/file/null.rb +3 -15
  61. data/lib/core/facets/file/read_binary.rb +3 -12
  62. data/lib/core/facets/hash/except.rb +11 -6
  63. data/lib/core/facets/hash/fetch_nested.rb +8 -9
  64. data/lib/core/facets/hash/graph.rb +1 -1
  65. data/lib/core/facets/hash/rekey.rb +3 -3
  66. data/lib/core/facets/hash/revalue.rb +3 -3
  67. data/lib/core/facets/hash/{to_proc.rb → setter.rb} +8 -9
  68. data/lib/core/facets/hash/slice.rb +0 -26
  69. data/lib/core/facets/hash/update_keys.rb +4 -11
  70. data/lib/core/facets/hash/update_values.rb +4 -10
  71. data/lib/core/facets/indexable.rb +7 -5
  72. data/lib/core/facets/kernel/callstack.rb +5 -24
  73. data/lib/core/facets/kernel/eigenclass.rb +6 -6
  74. data/lib/core/facets/kernel/ergo.rb +3 -3
  75. data/lib/core/facets/kernel/extension.rb +3 -6
  76. data/lib/core/facets/kernel/functor.rb +16 -0
  77. data/lib/core/facets/kernel/instance_class.rb +4 -20
  78. data/lib/core/facets/kernel/instance_send.rb +5 -3
  79. data/lib/core/facets/kernel/like.rb +1 -1
  80. data/lib/core/facets/kernel/load_relative.rb +8 -20
  81. data/lib/core/facets/kernel/memo.rb +4 -26
  82. data/lib/core/facets/kernel/meta_class.rb +10 -6
  83. data/lib/core/facets/kernel/object_class.rb +5 -6
  84. data/lib/core/facets/kernel/object_send.rb +5 -26
  85. data/lib/core/facets/kernel/qua_class.rb +4 -20
  86. data/lib/core/facets/kernel/require_all.rb +8 -20
  87. data/lib/core/facets/kernel/returning.rb +3 -19
  88. data/lib/core/facets/kernel/tap.rb +3 -36
  89. data/lib/core/facets/kernel/tee.rb +2 -0
  90. data/lib/core/facets/kernel/try.rb +38 -28
  91. data/lib/core/facets/kernel.rb +2 -4
  92. data/lib/core/facets/lazy.rb +1 -1
  93. data/lib/core/facets/matchdata/matchtree.rb +2 -0
  94. data/lib/core/facets/module/alias_method_chain.rb +4 -43
  95. data/lib/core/facets/module/attr_setter.rb +3 -2
  96. data/lib/core/facets/module/can.rb +5 -16
  97. data/lib/core/facets/module/class_extend.rb +2 -2
  98. data/lib/core/facets/numeric/delimit.rb +20 -0
  99. data/lib/core/facets/object/dup.rb +0 -46
  100. data/lib/core/facets/proc/bind.rb +0 -2
  101. data/lib/core/facets/proc/compose.rb +7 -28
  102. data/lib/core/facets/proc/to_method.rb +0 -1
  103. data/lib/core/facets/proc/update.rb +8 -1
  104. data/lib/core/facets/range/intersection.rb +42 -0
  105. data/lib/core/facets/range/nudge.rb +27 -0
  106. data/lib/core/facets/string/ascii_only.rb +2 -2
  107. data/lib/core/facets/string/cleanlines.rb +0 -2
  108. data/lib/core/facets/string/dashcase.rb +21 -0
  109. data/lib/core/facets/string/indent.rb +0 -8
  110. data/lib/core/facets/string/lchomp.rb +7 -14
  111. data/lib/core/facets/string/margin.rb +0 -4
  112. data/lib/core/facets/string/newlines.rb +0 -2
  113. data/lib/core/facets/string/random.rb +13 -3
  114. data/lib/core/facets/string/similarity.rb +7 -6
  115. data/lib/core/facets/string/snakecase.rb +12 -5
  116. data/lib/core/facets/string/words.rb +13 -1
  117. data/lib/core/facets/string.rb +0 -3
  118. data/lib/core/facets/struct/attributes.rb +2 -3
  119. data/lib/core/facets/time/trunc.rb +12 -5
  120. data/lib/core/facets/unboundmethod/arguments.rb +1 -0
  121. data/lib/core/facets/version.rb +1 -17
  122. data/lib/core/facets.rb +0 -1
  123. data/lib/standard/facets/argvector.rb +1 -1
  124. data/lib/standard/facets/cgi/escape_html.rb +14 -25
  125. data/lib/standard/facets/cloneable.rb +4 -51
  126. data/lib/standard/facets/continuation.rb +2 -56
  127. data/lib/standard/facets/crypt3.rb +126 -0
  128. data/lib/standard/facets/date/cmp.rb +32 -0
  129. data/lib/standard/facets/date.rb +1 -0
  130. data/lib/standard/facets/digest.rb +0 -1
  131. data/lib/standard/facets/enumargs.rb +5 -0
  132. data/lib/standard/facets/fileutils/cp_rx.rb +0 -2
  133. data/lib/standard/facets/fileutils/ln_r.rb +0 -1
  134. data/lib/standard/facets/find/select.rb +0 -2
  135. data/lib/standard/facets/getoptlong.rb +3 -59
  136. data/lib/standard/facets/load_monitor.rb +2 -26
  137. data/lib/standard/facets/math/gini_coefficient.rb +5 -4
  138. data/lib/standard/facets/math/kldivergence.rb +8 -7
  139. data/lib/standard/facets/math/percentile.rb +2 -2
  140. data/lib/standard/facets/multiton.rb +1 -1
  141. data/lib/standard/facets/net/http.rb +33 -14
  142. data/lib/standard/facets/ostruct/initialize.rb +4 -19
  143. data/lib/standard/facets/ostruct/to_ostruct.rb +2 -1
  144. data/lib/standard/facets/ostruct.rb +0 -88
  145. data/lib/standard/facets/pathname/empty.rb +2 -10
  146. data/lib/standard/facets/pathname/glob.rb +19 -12
  147. data/lib/standard/facets/pathname/null.rb +3 -14
  148. data/lib/standard/facets/random.rb +47 -133
  149. data/lib/standard/facets/timer.rb +3 -3
  150. data/lib/standard/facets/tuple.rb +2 -4
  151. data/lib/standard/facets/uri.rb +3 -2
  152. metadata +84 -1181
  153. data/.index +0 -76
  154. data/.yardopts +0 -10
  155. data/CONTRIBUTE.md +0 -78
  156. data/NOTICE.rdoc +0 -167
  157. data/demo/applique/assertion_framework.rb +0 -1
  158. data/demo/applique/file_helpers.rb +0 -34
  159. data/demo/core/array/combination.rdoc +0 -19
  160. data/demo/core/array/delete.rdoc +0 -23
  161. data/demo/core/array/index.rdoc +0 -14
  162. data/demo/core/array/merge.rdoc +0 -15
  163. data/demo/core/array/only.rdoc +0 -9
  164. data/demo/core/array/pad.rdoc +0 -28
  165. data/demo/core/array/permutation.rdoc +0 -10
  166. data/demo/core/array/product.rdoc +0 -26
  167. data/demo/core/array/recursively.rdoc +0 -16
  168. data/demo/core/array/rotate.rdoc +0 -30
  169. data/demo/core/array/select.rdoc +0 -8
  170. data/demo/core/array/uniq_by.rdoc +0 -9
  171. data/demo/core/binding/caller.rdoc +0 -57
  172. data/demo/core/binding/defined.rdoc +0 -10
  173. data/demo/core/binding/eval.rdoc +0 -8
  174. data/demo/core/binding/local_variables.rdoc +0 -26
  175. data/demo/core/binding/opvars.rdoc +0 -16
  176. data/demo/core/binding/self.rdoc +0 -6
  177. data/demo/core/class/descendants.rdoc +0 -10
  178. data/demo/core/class/to_proc.rdoc +0 -8
  179. data/demo/core/comparable/cap.rdoc +0 -20
  180. data/demo/core/comparable/clip.rdoc +0 -37
  181. data/demo/core/comparable/cmp.rdoc +0 -18
  182. data/demo/core/comparable/op_get.rdoc +0 -29
  183. data/demo/core/dir/ascend.rdoc +0 -24
  184. data/demo/core/dir/descend.rdoc +0 -14
  185. data/demo/core/dir/multiglob.rdoc +0 -41
  186. data/demo/core/dir/parent.rdoc +0 -6
  187. data/demo/core/dir/recurse.rdoc +0 -41
  188. data/demo/core/exception/detail.rdoc +0 -12
  189. data/demo/core/facets.rdoc +0 -6
  190. data/demo/core/filetest/root.rdoc +0 -6
  191. data/demo/core/hash/recursively.rdoc +0 -21
  192. data/demo/core/indexable.rdoc +0 -95
  193. data/demo/core/integer/bitmask.rdoc +0 -46
  194. data/demo/core/integer/even.rdoc +0 -12
  195. data/demo/core/integer/factorial.rdoc +0 -10
  196. data/demo/core/integer/length.rdoc +0 -7
  197. data/demo/core/integer/multiple.rdoc +0 -10
  198. data/demo/core/integer/odd.rdoc +0 -12
  199. data/demo/core/integer/of.rdoc +0 -14
  200. data/demo/core/integer/ordinal.rdoc +0 -9
  201. data/demo/core/matchdata/match.rdoc +0 -7
  202. data/demo/core/matchdata/matchset.rdoc +0 -15
  203. data/demo/core/module/cattr.rdoc +0 -43
  204. data/demo/core/module/class_extend.rdoc +0 -64
  205. data/demo/core/module/class_inheritor.rdoc +0 -126
  206. data/demo/core/module/copy_inheritor.rdoc +0 -30
  207. data/demo/core/module/method_space.rdoc +0 -55
  208. data/demo/core/string/align.rdoc +0 -34
  209. data/demo/core/string/bracket.rdoc +0 -35
  210. data/demo/core/string/bytes.rdoc +0 -8
  211. data/demo/core/string/camelcase.rdoc +0 -47
  212. data/demo/core/string/capitalized.rdoc +0 -27
  213. data/demo/core/string/characters.rdoc +0 -11
  214. data/demo/core/string/cleanlines.rdoc +0 -10
  215. data/demo/core/string/cleave.rdoc +0 -49
  216. data/demo/core/string/divide.rdoc +0 -9
  217. data/demo/core/string/each_char.rdoc +0 -9
  218. data/demo/core/string/each_word.rdoc +0 -9
  219. data/demo/core/string/end_with.rdoc +0 -6
  220. data/demo/core/string/expand_tabs.rdoc +0 -69
  221. data/demo/core/string/fold.rdoc +0 -14
  222. data/demo/core/string/indent.rdoc +0 -65
  223. data/demo/core/string/interpolate.rdoc +0 -7
  224. data/demo/core/string/lchomp.rdoc +0 -14
  225. data/demo/core/string/line_wrap.rdoc +0 -7
  226. data/demo/core/string/lines.rdoc +0 -8
  227. data/demo/core/string/margin.rdoc +0 -92
  228. data/demo/core/string/methodize.rdoc +0 -22
  229. data/demo/core/string/modulize.rdoc +0 -22
  230. data/demo/core/string/mscan.rdoc +0 -10
  231. data/demo/core/string/natcmp.rdoc +0 -10
  232. data/demo/core/string/nchar.rdoc +0 -9
  233. data/demo/core/string/newlines.rdoc +0 -9
  234. data/demo/core/string/op_sub.rdoc +0 -7
  235. data/demo/core/string/pathize.rdoc +0 -22
  236. data/demo/core/string/quote.rdoc +0 -20
  237. data/demo/core/string/range.rdoc +0 -19
  238. data/demo/core/string/rewrite.rdoc +0 -9
  239. data/demo/core/string/shatter.rdoc +0 -9
  240. data/demo/core/string/snakecase.rdoc +0 -10
  241. data/demo/core/string/splice.rdoc +0 -28
  242. data/demo/core/string/start_with.rdoc +0 -7
  243. data/demo/core/string/subtract.rdoc +0 -8
  244. data/demo/core/string/tab.rdoc +0 -16
  245. data/demo/core/string/tabto.rdoc +0 -29
  246. data/demo/core/string/titlecase.rdoc +0 -8
  247. data/demo/core/string/to_re.rdoc +0 -22
  248. data/demo/core/string/unfold.rdoc +0 -9
  249. data/demo/core/string/unindent.rdoc +0 -65
  250. data/demo/core/string/unquote.rdoc +0 -6
  251. data/demo/core/string/variablize.rdoc +0 -7
  252. data/demo/core/string/word_wrap.rdoc +0 -54
  253. data/demo/core/string/words.rdoc +0 -13
  254. data/demo/core/string/xor.rdoc +0 -8
  255. data/demo/standard/02_cloneable.rdoc +0 -46
  256. data/demo/standard/03_enumargs.rdoc +0 -75
  257. data/demo/standard/04_equitable.rdoc +0 -35
  258. data/demo/standard/05_instantiable.rdoc +0 -42
  259. data/demo/standard/basic_object.rdoc +0 -22
  260. data/demo/standard/memoizable.rdoc +0 -134
  261. data/demo/standard/mulititon.rdoc +0 -156
  262. data/lib/core/facets/applique/file_helpers.rb +0 -33
  263. data/lib/core/facets/array/intersection.rb +0 -25
  264. data/lib/core/facets/array/op_pow.rb +0 -14
  265. data/lib/core/facets/array/to_h.rb +0 -22
  266. data/lib/core/facets/binding/local_variables.rb +0 -16
  267. data/lib/core/facets/class/singleton.rb +0 -1
  268. data/lib/core/facets/class/singleton_class.rb +0 -16
  269. data/lib/core/facets/class/subclasses.rb +0 -28
  270. data/lib/core/facets/dir/each_child.rb +0 -16
  271. data/lib/core/facets/enumerable/filter.rb +0 -33
  272. data/lib/core/facets/enumerable/sum.rb +0 -30
  273. data/lib/core/facets/exception/set_message.rb +0 -10
  274. data/lib/core/facets/file/write.rb +0 -24
  275. data/lib/core/facets/fixnum.rb +0 -7
  276. data/lib/core/facets/kernel/__dir__.rb +0 -28
  277. data/lib/core/facets/kernel/constant.rb +0 -22
  278. data/lib/core/facets/kernel/instance_exec.rb +0 -47
  279. data/lib/core/facets/kernel/p.rb +0 -24
  280. data/lib/core/facets/kernel/singleton_class.rb +0 -10
  281. data/lib/core/facets/matchdata/match.rb +0 -15
  282. data/lib/core/facets/method/curry.rb +0 -13
  283. data/lib/core/facets/numeric/negative.rb +0 -1
  284. data/lib/core/facets/numeric/positive.rb +0 -15
  285. data/lib/core/facets/object/itself.rb +0 -16
  286. data/lib/core/facets/object/try_dup.rb +0 -1
  287. data/lib/core/facets/process/daemon.rb +0 -32
  288. data/lib/core/facets/range/overlap.rb +0 -12
  289. data/lib/core/facets/string/characters.rb +0 -13
  290. data/lib/core/facets/string/crypt.rb +0 -22
  291. data/lib/core/facets/string/tab.rb +0 -2
  292. data/lib/core/facets/string/tabto.rb +0 -2
  293. data/lib/core/facets/symbol/succ.rb +0 -23
  294. data/lib/core/facets.yml +0 -76
  295. data/lib/standard/facets/basicobject.rb +0 -75
  296. data/lib/standard/facets/digest/base64digest.rb +0 -45
  297. data/lib/standard/facets/ostruct/each.rb +0 -11
  298. data/lib/standard/facets/ostruct/merge.rb +0 -21
  299. data/lib/standard/facets/ostruct/op_fetch.rb +0 -29
  300. data/lib/standard/facets/ostruct/op_store.rb +0 -1
  301. data/lib/standard/facets/ostruct/to_h.rb +0 -10
  302. data/test/core/array/test_after.rb +0 -27
  303. data/test/core/array/test_arrange.rb +0 -37
  304. data/test/core/array/test_before.rb +0 -27
  305. data/test/core/array/test_collapse.rb +0 -14
  306. data/test/core/array/test_combination.rb +0 -25
  307. data/test/core/array/test_commonality.rb +0 -35
  308. data/test/core/array/test_conjoin.rb +0 -50
  309. data/test/core/array/test_contains.rb +0 -14
  310. data/test/core/array/test_delete.rb +0 -42
  311. data/test/core/array/test_divide.rb +0 -14
  312. data/test/core/array/test_duplicates.rb +0 -29
  313. data/test/core/array/test_each_overlap.rb +0 -31
  314. data/test/core/array/test_entropy.rb +0 -23
  315. data/test/core/array/test_extract_options.rb +0 -28
  316. data/test/core/array/test_first.rb +0 -17
  317. data/test/core/array/test_index.rb +0 -20
  318. data/test/core/array/test_intersection.rb +0 -19
  319. data/test/core/array/test_last.rb +0 -17
  320. data/test/core/array/test_median.rb +0 -27
  321. data/test/core/array/test_merge.rb +0 -27
  322. data/test/core/array/test_missing.rb +0 -12
  323. data/test/core/array/test_mode.rb +0 -17
  324. data/test/core/array/test_nonuniq.rb +0 -25
  325. data/test/core/array/test_not_empty.rb +0 -17
  326. data/test/core/array/test_occur.rb +0 -52
  327. data/test/core/array/test_occurrence.rb +0 -20
  328. data/test/core/array/test_only.rb +0 -17
  329. data/test/core/array/test_pad.rb +0 -40
  330. data/test/core/array/test_peek.rb +0 -28
  331. data/test/core/array/test_permutation.rb +0 -20
  332. data/test/core/array/test_poke.rb +0 -21
  333. data/test/core/array/test_probability.rb +0 -18
  334. data/test/core/array/test_product.rb +0 -64
  335. data/test/core/array/test_pull.rb +0 -15
  336. data/test/core/array/test_recurse.rb +0 -40
  337. data/test/core/array/test_recursively.rb +0 -33
  338. data/test/core/array/test_reject_values.rb +0 -17
  339. data/test/core/array/test_rotate.rb +0 -38
  340. data/test/core/array/test_select.rb +0 -16
  341. data/test/core/array/test_splice.rb +0 -21
  342. data/test/core/array/test_split.rb +0 -22
  343. data/test/core/array/test_squeeze.rb +0 -22
  344. data/test/core/array/test_step.rb +0 -28
  345. data/test/core/array/test_store.rb +0 -22
  346. data/test/core/array/test_traverse.rb +0 -26
  347. data/test/core/array/test_uniq_by.rb +0 -17
  348. data/test/core/array/test_unique_permutation.rb +0 -23
  349. data/test/core/binding/test_caller.rb +0 -69
  350. data/test/core/binding/test_defined.rb +0 -18
  351. data/test/core/binding/test_eval.rb +0 -15
  352. data/test/core/binding/test_local_variables.rb +0 -36
  353. data/test/core/binding/test_op.rb +0 -24
  354. data/test/core/binding/test_self.rb +0 -16
  355. data/test/core/class/test_descendents.rb +0 -19
  356. data/test/core/class/test_preallocate.rb +0 -32
  357. data/test/core/class/test_subclasses.rb +0 -20
  358. data/test/core/class/test_to_proc.rb +0 -16
  359. data/test/core/comparable/test_bound.rb +0 -32
  360. data/test/core/comparable/test_cap.rb +0 -36
  361. data/test/core/comparable/test_clip.rb +0 -31
  362. data/test/core/comparable/test_cmp.rb +0 -16
  363. data/test/core/comparable/test_op_get.rb +0 -61
  364. data/test/core/denumerable_tc.rb +0 -194
  365. data/test/core/dir/test_ascend.rb +0 -40
  366. data/test/core/dir/test_descend.rb +0 -24
  367. data/test/core/dir/test_each_child.rb +0 -22
  368. data/test/core/dir/test_multiglob.rb +0 -25
  369. data/test/core/dir/test_parent.rb +0 -14
  370. data/test/core/dir/test_recurse.rb +0 -26
  371. data/test/core/enumerable/test_accumulate.rb +0 -44
  372. data/test/core/enumerable/test_cluster_by.rb +0 -30
  373. data/test/core/enumerable/test_compact_map.rb +0 -32
  374. data/test/core/enumerable/test_count.rb +0 -32
  375. data/test/core/enumerable/test_defer.rb +0 -27
  376. data/test/core/enumerable/test_each_by.rb +0 -49
  377. data/test/core/enumerable/test_each_with_object.rb +0 -18
  378. data/test/core/enumerable/test_every.rb +0 -33
  379. data/test/core/enumerable/test_ewise.rb +0 -30
  380. data/test/core/enumerable/test_exclude.rb +0 -15
  381. data/test/core/enumerable/test_expand.rb +0 -15
  382. data/test/core/enumerable/test_filter.rb +0 -19
  383. data/test/core/enumerable/test_find_yield.rb +0 -96
  384. data/test/core/enumerable/test_frequency.rb +0 -15
  385. data/test/core/enumerable/test_graph.rb +0 -42
  386. data/test/core/enumerable/test_group_by.rb +0 -36
  387. data/test/core/enumerable/test_key_by.rb +0 -22
  388. data/test/core/enumerable/test_map_by.rb +0 -27
  389. data/test/core/enumerable/test_map_send.rb +0 -26
  390. data/test/core/enumerable/test_map_with_index.rb +0 -23
  391. data/test/core/enumerable/test_mash.rb +0 -17
  392. data/test/core/enumerable/test_modulate.rb +0 -17
  393. data/test/core/enumerable/test_none.rb +0 -29
  394. data/test/core/enumerable/test_occur.rb +0 -40
  395. data/test/core/enumerable/test_one.rb +0 -34
  396. data/test/core/enumerable/test_only.rb +0 -40
  397. data/test/core/enumerable/test_per.rb +0 -19
  398. data/test/core/enumerable/test_purge.rb +0 -22
  399. data/test/core/enumerable/test_recursively.rb +0 -33
  400. data/test/core/enumerable/test_squeeze.rb +0 -35
  401. data/test/core/enumerable/test_sum.rb +0 -40
  402. data/test/core/enumerable/test_take.rb +0 -15
  403. data/test/core/enumerable/test_uniq_by.rb +0 -25
  404. data/test/core/enumerable/test_visit.rb +0 -14
  405. data/test/core/enumerator/lazy/test_squeeze.rb +0 -33
  406. data/test/core/enumerator/test_fx.rb +0 -16
  407. data/test/core/enumerator/test_new.rb +0 -21
  408. data/test/core/enumerator_tc.rb +0 -40
  409. data/test/core/exception/test_detail.rb +0 -15
  410. data/test/core/exception/test_raised.rb +0 -15
  411. data/test/core/exception/test_suppress.rb +0 -16
  412. data/test/core/file/test_append.rb +0 -22
  413. data/test/core/file/test_create.rb +0 -17
  414. data/test/core/file/test_ext.rb +0 -31
  415. data/test/core/file/test_null.rb +0 -14
  416. data/test/core/file/test_read_binary.rb +0 -19
  417. data/test/core/file/test_read_list.rb +0 -16
  418. data/test/core/file/test_rewrite.rb +0 -35
  419. data/test/core/file/test_rootname.rb +0 -13
  420. data/test/core/file/test_sanitize.rb +0 -32
  421. data/test/core/file/test_split_all.rb +0 -14
  422. data/test/core/file/test_write.rb +0 -22
  423. data/test/core/file/test_writelines.rb +0 -21
  424. data/test/core/filetest/test_root.rb +0 -14
  425. data/test/core/functor_tc.rb +0 -41
  426. data/test/core/hash/test_alias.rb +0 -25
  427. data/test/core/hash/test_argumentize.rb +0 -23
  428. data/test/core/hash/test_at.rb +0 -16
  429. data/test/core/hash/test_autonew.rb +0 -22
  430. data/test/core/hash/test_collate.rb +0 -61
  431. data/test/core/hash/test_count.rb +0 -23
  432. data/test/core/hash/test_data.rb +0 -35
  433. data/test/core/hash/test_dearray_values.rb +0 -26
  434. data/test/core/hash/test_deep_merge.rb +0 -31
  435. data/test/core/hash/test_deep_rekey.rb +0 -131
  436. data/test/core/hash/test_delete_at.rb +0 -18
  437. data/test/core/hash/test_delete_unless.rb +0 -18
  438. data/test/core/hash/test_delete_values.rb +0 -30
  439. data/test/core/hash/test_diff.rb +0 -16
  440. data/test/core/hash/test_each_with_key.rb +0 -16
  441. data/test/core/hash/test_expect.rb +0 -24
  442. data/test/core/hash/test_fetch_nested.rb +0 -24
  443. data/test/core/hash/test_graph.rb +0 -40
  444. data/test/core/hash/test_insert.rb +0 -20
  445. data/test/core/hash/test_inverse.rb +0 -20
  446. data/test/core/hash/test_join.rb +0 -32
  447. data/test/core/hash/test_keys.rb +0 -41
  448. data/test/core/hash/test_new_with.rb +0 -17
  449. data/test/core/hash/test_op_add.rb +0 -17
  450. data/test/core/hash/test_op_and.rb +0 -31
  451. data/test/core/hash/test_op_mul.rb +0 -17
  452. data/test/core/hash/test_op_or.rb +0 -17
  453. data/test/core/hash/test_op_push.rb +0 -34
  454. data/test/core/hash/test_op_sub.rb +0 -28
  455. data/test/core/hash/test_recurse.rb +0 -39
  456. data/test/core/hash/test_recursively.rb +0 -71
  457. data/test/core/hash/test_rekey.rb +0 -119
  458. data/test/core/hash/test_replace_each.rb +0 -17
  459. data/test/core/hash/test_revalue.rb +0 -98
  460. data/test/core/hash/test_reverse_merge.rb +0 -39
  461. data/test/core/hash/test_select.rb +0 -44
  462. data/test/core/hash/test_slice.rb +0 -36
  463. data/test/core/hash/test_stringify_keys.rb +0 -26
  464. data/test/core/hash/test_swap.rb +0 -15
  465. data/test/core/hash/test_symbolize_keys.rb +0 -26
  466. data/test/core/hash/test_to_mod.rb +0 -24
  467. data/test/core/hash/test_to_proc.rb +0 -23
  468. data/test/core/hash/test_to_struct.rb +0 -22
  469. data/test/core/hash/test_traverse.rb +0 -29
  470. data/test/core/hash/test_update_each.rb +0 -16
  471. data/test/core/hash/test_update_keys.rb +0 -21
  472. data/test/core/hash/test_update_values.rb +0 -15
  473. data/test/core/hash/test_url_params.rb +0 -26
  474. data/test/core/hash/test_weave.rb +0 -18
  475. data/test/core/hash/test_zip.rb +0 -16
  476. data/test/core/indexable_tc.rb +0 -226
  477. data/test/core/integer/test_bitmask.rb +0 -73
  478. data/test/core/integer/test_even.rb +0 -24
  479. data/test/core/integer/test_factorial.rb +0 -30
  480. data/test/core/integer/test_multiple.rb +0 -16
  481. data/test/core/integer/test_odd.rb +0 -24
  482. data/test/core/integer/test_of.rb +0 -36
  483. data/test/core/integer/test_ordinal.rb +0 -27
  484. data/test/core/kernel/test_as.rb +0 -74
  485. data/test/core/kernel/test_ask.rb +0 -9
  486. data/test/core/kernel/test_assign.rb +0 -61
  487. data/test/core/kernel/test_assign_from.rb +0 -48
  488. data/test/core/kernel/test_attr_singleton.rb +0 -51
  489. data/test/core/kernel/test_blank.rb +0 -103
  490. data/test/core/kernel/test_callstack.rb +0 -21
  491. data/test/core/kernel/test_class.rb +0 -14
  492. data/test/core/kernel/test_complete.rb +0 -19
  493. data/test/core/kernel/test_constant.rb +0 -18
  494. data/test/core/kernel/test_d.rb +0 -10
  495. data/test/core/kernel/test_deep_clone.rb +0 -31
  496. data/test/core/kernel/test_deep_copy.rb +0 -15
  497. data/test/core/kernel/test_dir.rb +0 -24
  498. data/test/core/kernel/test_disable_warnings.rb +0 -38
  499. data/test/core/kernel/test_ergo.rb +0 -32
  500. data/test/core/kernel/test_extension.rb +0 -18
  501. data/test/core/kernel/test_get.rb +0 -54
  502. data/test/core/kernel/test_here.rb +0 -13
  503. data/test/core/kernel/test_hierarchical_send.rb +0 -48
  504. data/test/core/kernel/test_in.rb +0 -14
  505. data/test/core/kernel/test_instance_assign.rb +0 -19
  506. data/test/core/kernel/test_instance_class.rb +0 -15
  507. data/test/core/kernel/test_instance_extract.rb +0 -28
  508. data/test/core/kernel/test_instance_send.rb +0 -26
  509. data/test/core/kernel/test_maybe.rb +0 -13
  510. data/test/core/kernel/test_meta_alias.rb +0 -18
  511. data/test/core/kernel/test_meta_class.rb +0 -33
  512. data/test/core/kernel/test_meta_def.rb +0 -15
  513. data/test/core/kernel/test_meta_eval.rb +0 -18
  514. data/test/core/kernel/test_method.rb +0 -20
  515. data/test/core/kernel/test_not.rb +0 -51
  516. data/test/core/kernel/test_not_nil.rb +0 -25
  517. data/test/core/kernel/test_object_class.rb +0 -22
  518. data/test/core/kernel/test_object_hexid.rb +0 -20
  519. data/test/core/kernel/test_object_send.rb +0 -25
  520. data/test/core/kernel/test_presence.rb +0 -37
  521. data/test/core/kernel/test_qua_class.rb +0 -25
  522. data/test/core/kernel/test_require_all.rb +0 -11
  523. data/test/core/kernel/test_require_relative.rb +0 -12
  524. data/test/core/kernel/test_respond.rb +0 -38
  525. data/test/core/kernel/test_returning.rb +0 -17
  526. data/test/core/kernel/test_silence.rb +0 -24
  527. data/test/core/kernel/test_singleton_class.rb +0 -15
  528. data/test/core/kernel/test_super_method.rb +0 -23
  529. data/test/core/kernel/test_tap.rb +0 -38
  530. data/test/core/kernel/test_temporarily.rb +0 -25
  531. data/test/core/kernel/test_true.rb +0 -31
  532. data/test/core/kernel/test_try.rb +0 -35
  533. data/test/core/kernel/test_val.rb +0 -30
  534. data/test/core/kernel/test_with.rb +0 -18
  535. data/test/core/kernel/test_writers.rb +0 -53
  536. data/test/core/matchdata/test_match.rb +0 -14
  537. data/test/core/matchdata/test_matchset.rb +0 -29
  538. data/test/core/method/test_composition.rb +0 -42
  539. data/test/core/module/test_abstract.rb +0 -24
  540. data/test/core/module/test_alias_accessor.rb +0 -27
  541. data/test/core/module/test_alias_method_chain.rb +0 -34
  542. data/test/core/module/test_alias_module_function.rb +0 -24
  543. data/test/core/module/test_all_instance_methods.rb +0 -27
  544. data/test/core/module/test_ancestor.rb +0 -16
  545. data/test/core/module/test_anonymous.rb +0 -18
  546. data/test/core/module/test_attr_setter.rb +0 -28
  547. data/test/core/module/test_basename.rb +0 -14
  548. data/test/core/module/test_can.rb +0 -22
  549. data/test/core/module/test_class.rb +0 -22
  550. data/test/core/module/test_class_def.rb +0 -22
  551. data/test/core/module/test_class_extend.rb +0 -73
  552. data/test/core/module/test_class_inheritor.rb +0 -135
  553. data/test/core/module/test_copy_inheritor.rb +0 -35
  554. data/test/core/module/test_enclosure.rb +0 -24
  555. data/test/core/module/test_instance_function.rb +0 -30
  556. data/test/core/module/test_instance_method.rb +0 -20
  557. data/test/core/module/test_instance_method_defined.rb +0 -38
  558. data/test/core/module/test_integrate.rb +0 -28
  559. data/test/core/module/test_is.rb +0 -50
  560. data/test/core/module/test_memoize.rb +0 -33
  561. data/test/core/module/test_method_clash.rb +0 -59
  562. data/test/core/module/test_method_space.rb +0 -72
  563. data/test/core/module/test_methodize.rb +0 -26
  564. data/test/core/module/test_modname.rb +0 -13
  565. data/test/core/module/test_module_def.rb +0 -22
  566. data/test/core/module/test_module_load.rb +0 -23
  567. data/test/core/module/test_nodef.rb +0 -19
  568. data/test/core/module/test_op.rb +0 -56
  569. data/test/core/module/test_pathize.rb +0 -25
  570. data/test/core/module/test_preextend.rb +0 -26
  571. data/test/core/module/test_redefine_method.rb +0 -30
  572. data/test/core/module/test_redirect_method.rb +0 -32
  573. data/test/core/module/test_remove.rb +0 -18
  574. data/test/core/module/test_rename_method.rb +0 -34
  575. data/test/core/module/test_revise.rb +0 -61
  576. data/test/core/module/test_set.rb +0 -30
  577. data/test/core/module/test_spacename.rb +0 -15
  578. data/test/core/module/test_to_obj.rb +0 -20
  579. data/test/core/module/test_wrap_method.rb +0 -32
  580. data/test/core/nilclass/test_to_f.rb +0 -13
  581. data/test/core/numeric/test_approx.rb +0 -26
  582. data/test/core/numeric/test_distance.rb +0 -16
  583. data/test/core/numeric/test_length.rb +0 -16
  584. data/test/core/numeric/test_round.rb +0 -76
  585. data/test/core/numeric/test_spacing.rb +0 -17
  586. data/test/core/object/test_dup.rb +0 -115
  587. data/test/core/object/test_object_state.rb +0 -75
  588. data/test/core/object/test_replace.rb +0 -69
  589. data/test/core/object/test_try_dup.rb +0 -59
  590. data/test/core/proc/test_bind.rb +0 -29
  591. data/test/core/proc/test_bind_to.rb +0 -17
  592. data/test/core/proc/test_compose.rb +0 -27
  593. data/test/core/proc/test_curry.rb +0 -38
  594. data/test/core/proc/test_partial.rb +0 -27
  595. data/test/core/proc/test_to_method.rb +0 -43
  596. data/test/core/proc/test_update.rb +0 -15
  597. data/test/core/range/test_combine.rb +0 -32
  598. data/test/core/range/test_op_add.rb +0 -24
  599. data/test/core/range/test_op_sub.rb +0 -34
  600. data/test/core/range/test_overlap.rb +0 -15
  601. data/test/core/range/test_to_r.rb +0 -20
  602. data/test/core/range/test_umbrella.rb +0 -32
  603. data/test/core/range/test_within.rb +0 -25
  604. data/test/core/regexp/test_arity.rb +0 -30
  605. data/test/core/regexp/test_multiline.rb +0 -19
  606. data/test/core/regexp/test_op_add.rb +0 -15
  607. data/test/core/regexp/test_op_or.rb +0 -16
  608. data/test/core/regexp/test_to_re.rb +0 -24
  609. data/test/core/string/test_align.rb +0 -32
  610. data/test/core/string/test_ascii_only.rb +0 -30
  611. data/test/core/string/test_bracket.rb +0 -37
  612. data/test/core/string/test_bytes.rb +0 -13
  613. data/test/core/string/test_camelcase.rb +0 -59
  614. data/test/core/string/test_capitalized.rb +0 -36
  615. data/test/core/string/test_characters.rb +0 -13
  616. data/test/core/string/test_cleanlines.rb +0 -12
  617. data/test/core/string/test_cleave.rb +0 -27
  618. data/test/core/string/test_cmp.rb +0 -18
  619. data/test/core/string/test_compress_lines.rb +0 -18
  620. data/test/core/string/test_divide.rb +0 -17
  621. data/test/core/string/test_each_char.rb +0 -17
  622. data/test/core/string/test_each_word.rb +0 -17
  623. data/test/core/string/test_edit_distance.rb +0 -20
  624. data/test/core/string/test_end_with.rb +0 -24
  625. data/test/core/string/test_exclude.rb +0 -23
  626. data/test/core/string/test_expand_tabs.rb +0 -83
  627. data/test/core/string/test_file.rb +0 -15
  628. data/test/core/string/test_fold.rb +0 -21
  629. data/test/core/string/test_indent.rb +0 -90
  630. data/test/core/string/test_index_all.rb +0 -18
  631. data/test/core/string/test_interpolate.rb +0 -16
  632. data/test/core/string/test_lchomp.rb +0 -25
  633. data/test/core/string/test_line_wrap.rb +0 -15
  634. data/test/core/string/test_lines.rb +0 -15
  635. data/test/core/string/test_lowercase.rb +0 -18
  636. data/test/core/string/test_margin.rb +0 -16
  637. data/test/core/string/test_methodize.rb +0 -28
  638. data/test/core/string/test_modulize.rb +0 -28
  639. data/test/core/string/test_mscan.rb +0 -18
  640. data/test/core/string/test_natcmp.rb +0 -17
  641. data/test/core/string/test_nchar.rb +0 -17
  642. data/test/core/string/test_newlines.rb +0 -14
  643. data/test/core/string/test_number.rb +0 -44
  644. data/test/core/string/test_op_div.rb +0 -15
  645. data/test/core/string/test_op_sub.rb +0 -15
  646. data/test/core/string/test_pathize.rb +0 -31
  647. data/test/core/string/test_quote.rb +0 -41
  648. data/test/core/string/test_range.rb +0 -35
  649. data/test/core/string/test_remove.rb +0 -36
  650. data/test/core/string/test_rewrite.rb +0 -17
  651. data/test/core/string/test_rotate.rb +0 -31
  652. data/test/core/string/test_shatter.rb +0 -17
  653. data/test/core/string/test_similarity.rb +0 -14
  654. data/test/core/string/test_snakecase.rb +0 -22
  655. data/test/core/string/test_splice.rb +0 -37
  656. data/test/core/string/test_squish.rb +0 -31
  657. data/test/core/string/test_start_with.rb +0 -24
  658. data/test/core/string/test_store.rb +0 -16
  659. data/test/core/string/test_subtract.rb +0 -16
  660. data/test/core/string/test_tab.rb +0 -16
  661. data/test/core/string/test_titlecase.rb +0 -16
  662. data/test/core/string/test_to_re.rb +0 -35
  663. data/test/core/string/test_trim.rb +0 -116
  664. data/test/core/string/test_unbracket.rb +0 -38
  665. data/test/core/string/test_underscore.rb +0 -21
  666. data/test/core/string/test_unfold.rb +0 -17
  667. data/test/core/string/test_unindent.rb +0 -105
  668. data/test/core/string/test_unquote.rb +0 -13
  669. data/test/core/string/test_uppercase.rb +0 -22
  670. data/test/core/string/test_variablize.rb +0 -15
  671. data/test/core/string/test_word_wrap.rb +0 -80
  672. data/test/core/string/test_words.rb +0 -24
  673. data/test/core/string/test_xor.rb +0 -16
  674. data/test/core/symbol/test_as_s.rb +0 -15
  675. data/test/core/symbol/test_bang.rb +0 -15
  676. data/test/core/symbol/test_chomp.rb +0 -22
  677. data/test/core/symbol/test_generate.rb +0 -20
  678. data/test/core/symbol/test_not.rb +0 -19
  679. data/test/core/symbol/test_op_div.rb +0 -15
  680. data/test/core/symbol/test_plain.rb +0 -19
  681. data/test/core/symbol/test_query.rb +0 -19
  682. data/test/core/symbol/test_setter.rb +0 -17
  683. data/test/core/symbol/test_succ.rb +0 -16
  684. data/test/core/symbol/test_thrown.rb +0 -22
  685. data/test/core/symbol/test_to_proc.rb +0 -35
  686. data/test/core/symbol/test_variablize.rb +0 -14
  687. data/test/core/time/test_ago.rb +0 -18
  688. data/test/core/time/test_change.rb +0 -17
  689. data/test/core/time/test_dst_adjustment.rb +0 -19
  690. data/test/core/time/test_elapse.rb +0 -15
  691. data/test/core/time/test_future.rb +0 -32
  692. data/test/core/time/test_hence.rb +0 -18
  693. data/test/core/time/test_in.rb +0 -18
  694. data/test/core/time/test_less.rb +0 -139
  695. data/test/core/time/test_past.rb +0 -32
  696. data/test/core/time/test_round_to.rb +0 -34
  697. data/test/core/time/test_set.rb +0 -43
  698. data/test/core/time/test_shift.rb +0 -135
  699. data/test/core/time/test_stamp.rb +0 -42
  700. data/test/core/time/test_to_time.rb +0 -15
  701. data/test/core/time/test_trunc.rb +0 -34
  702. data/test/core/to_hash_tc.rb +0 -210
  703. data/test/core/unboundmethod/test_arguments.rb +0 -25
  704. data/test/core/unboundmethod/test_name.rb +0 -19
  705. data/test/standard/binding/test_block_exec.rb +0 -21
  706. data/test/standard/math/test_abs.rb +0 -13
  707. data/test/standard/math/test_acot.rb +0 -23
  708. data/test/standard/math/test_acoth.rb +0 -22
  709. data/test/standard/math/test_beta.rb +0 -19
  710. data/test/standard/math/test_ceil.rb +0 -22
  711. data/test/standard/math/test_cosec.rb +0 -19
  712. data/test/standard/math/test_cosech.rb +0 -19
  713. data/test/standard/math/test_cot.rb +0 -13
  714. data/test/standard/math/test_coth.rb +0 -13
  715. data/test/standard/math/test_distance.rb +0 -16
  716. data/test/standard/math/test_exp10.rb +0 -14
  717. data/test/standard/math/test_exp2.rb +0 -14
  718. data/test/standard/math/test_factorial.rb +0 -13
  719. data/test/standard/math/test_floor.rb +0 -23
  720. data/test/standard/math/test_gcd.rb +0 -18
  721. data/test/standard/math/test_lcm.rb +0 -13
  722. data/test/standard/math/test_median.rb +0 -17
  723. data/test/standard/math/test_percentile.rb +0 -13
  724. data/test/standard/math/test_pow.rb +0 -30
  725. data/test/standard/math/test_root.rb +0 -15
  726. data/test/standard/math/test_sec.rb +0 -19
  727. data/test/standard/math/test_sech.rb +0 -19
  728. data/test/standard/math/test_sign.rb +0 -20
  729. data/test/standard/math/test_sinc.rb +0 -15
  730. data/test/standard/math/test_srq.rb +0 -20
  731. data/test/standard/pathname/test_chdir.rb +0 -16
  732. data/test/standard/pathname/test_readline.rb +0 -23
  733. data/test/standard/test_argvector.rb +0 -64
  734. data/test/standard/test_cloneable.rb +0 -60
  735. data/test/standard/test_date.rb +0 -82
  736. data/test/standard/test_enumargs.rb +0 -89
  737. data/test/standard/test_equitable.rb +0 -46
  738. data/test/standard/test_instantiable.rb +0 -40
  739. data/test/standard/test_math.rb +0 -3
  740. data/test/standard/test_memoizable.rb +0 -42
  741. data/test/standard/test_multipliers.rb +0 -141
  742. data/test/standard/test_ostruct.rb +0 -191
  743. data/test/standard/test_random.rb +0 -241
  744. data/test/standard/test_shellwords.rb +0 -74
  745. data/test/standard/test_thread.rb +0 -24
  746. data/test/standard/test_timer.rb +0 -62
  747. data/test/standard/test_tuple.rb +0 -68
  748. data/test/standard/test_uri.rb +0 -50
@@ -1,75 +0,0 @@
1
- = Enumerable::Arguments
2
-
3
- Require the library.
4
-
5
- require 'facets/enumargs'
6
-
7
- This will serve as our example class.
8
-
9
- class PlusArray
10
- include Enumerable::Arguments
11
-
12
- def initialize(arr)
13
- @arr = arr
14
- end
15
-
16
- def each(n=0)
17
- @arr.each{ |e| yield(e+n) }
18
- end
19
- end
20
-
21
- Now Enumerable methods such as #map and #collect
22
- take an argument as well.
23
-
24
- t = PlusArray.new([1,2,3])
25
- t.collect(4){ |e| e }.assert == [5,6,7]
26
-
27
- Filtering methods such as #select and reject work
28
- as well.
29
-
30
- t = PlusArray.new([1,2,3])
31
- t.select(4){ |x| x == 6 }.assert == [6]
32
-
33
- t = PlusArray.new([1,2,3])
34
- t.reject(4){ |x| x == 6 }.assert == [5,7]
35
-
36
- We can covert to an array using #to_a with an argument.
37
-
38
- t = PlusArray.new([1,2,3])
39
- t.to_a(4).assert == [5,6,7]
40
-
41
- We can get the minimum value using #min.
42
-
43
- t = PlusArray.new([1,2,3])
44
- t.min(4).assert == 5
45
-
46
- And get the maximum value using #min.
47
-
48
- t = PlusArray.new([1,2,3])
49
- t.max(4).assert == 7
50
-
51
- Methods that already take and argument, now take two
52
- such as #include?
53
-
54
- t = PlusArray.new([1,2,3])
55
- t.assert.include?(7,4)
56
-
57
- And #each_slice.
58
-
59
- t = PlusArray.new([1,2,3,4])
60
- a = []
61
- t.each_slice(2,4){ |e,f| a << [e,f] }
62
- a.assert == [[5,6],[7,8]]
63
-
64
- The #find method has a slightly different interface
65
- than the original Enumerable.
66
-
67
- t = PlusArray.new([1,2,3,4])
68
- f = t.find(2, :ifnone=>lambda{:NOPE}) { |a| a == 10 }
69
- f.assert == :NOPE
70
-
71
- The #grep method should also work.
72
-
73
- t = PlusArray.new(['a1','b2','a3','b4'])
74
- t.grep(/^b/, 'x').assert == ['b2x','b4x']
75
-
@@ -1,35 +0,0 @@
1
- = Equitqable
2
-
3
- Require the library.
4
-
5
- require 'facets/equitable'
6
-
7
- We will use this simple class as an example.
8
-
9
- class C
10
- include Equitable(:a,:b)
11
-
12
- attr_accessor :a, :b
13
-
14
- def initialize(a,b)
15
- @a = a
16
- @b = b
17
- end
18
- end
19
-
20
- Now, if two instance of our sample class +C+ have
21
- equal attributes +@a+ and +@b+ then they will
22
- be equal.
23
-
24
- c1 = C.new(10,20)
25
- c2 = C.new(10,20)
26
- c2.assert == c1
27
-
28
- Otherwise they will not be equal.
29
-
30
- c1 = C.new(10, 10)
31
- c2 = C.new(10, 20)
32
- c2.refute == c1
33
-
34
-
35
-
@@ -1,42 +0,0 @@
1
- = Instantiable
2
-
3
- Require the library.
4
-
5
- require 'facets/instantiable'
6
-
7
- We will use this module as an example.
8
-
9
- module M
10
- include Instantiable
11
-
12
- attr :a
13
-
14
- def initialize(a)
15
- @a = a
16
- end
17
- end
18
-
19
- As we can see M is now fully instantiable, as any
20
- class would be.
21
-
22
- m = M.new(1)
23
- m.a.assert == 1
24
-
25
- We can also use #extend rather than #include and
26
- get the same result.
27
-
28
- module N
29
- extend Instantiable
30
-
31
- attr :a
32
-
33
- def initialize( a )
34
- @a = a
35
- end
36
- end
37
-
38
- As we saw with +M+ so too with +N+.
39
-
40
- n = N.new( 1 )
41
- n.a.assert == 1
42
-
@@ -1,22 +0,0 @@
1
- == BasicObject
2
-
3
- require 'facets/basicobject'
4
-
5
- o = Class.new(BasicObject).new
6
-
7
- Should ignore new kernel methods.
8
-
9
- Kernel.module_eval { def xxx ; end }
10
-
11
- expect NoMethodError do
12
- o.xxx
13
- end
14
-
15
- Should ignore new object methods.
16
-
17
- Object.class_eval { def yyy ; end }
18
-
19
- expect NoMethodError do
20
- o.yyy
21
- end
22
-
@@ -1,134 +0,0 @@
1
- = Memoizable
2
-
3
- Memoizable allows
4
-
5
- require 'facets/memoizable'
6
-
7
- The classic example is calculating the Fibonacci sequence.
8
-
9
- class Fibonacci
10
- include Memoizable
11
-
12
- def fib( num )
13
- return num if num < 2
14
- fib(num - 1) + fib(num - 2)
15
- end
16
-
17
- memoize :fib
18
- end
19
-
20
- The first time will take a moment to calculate.
21
-
22
- f = Fibonacci.new
23
- f.fib(100)
24
-
25
- The second time will be returned almost instantly.
26
-
27
- f = Fibonacci.new
28
- f.fib(100)
29
-
30
- The following example makes if very clear what memoize is doing.
31
-
32
- class MemoExample
33
- include Memoizable
34
- attr_accessor :a
35
- memoize :a
36
- end
37
-
38
- m = MemoExample.new
39
- m.a = 10
40
- m.a #=> 10
41
- m.a = 20
42
- m.a #=> 10
43
-
44
- Even though @a is assigned to 20, the method #a continues to return 10.
45
-
46
- Memoizable is designed to handle a number of typically problematic aspects
47
- of memoization implementations. First a memoizable object can be frozen.
48
-
49
- f = Fibonacci.new
50
- f.freeze
51
- f.fib(100)
52
-
53
- Memoizable objects are freezable because it does not use an instance variable
54
- to store the memoized return values. Instead it uses a global class instance
55
- variable in +Memoizable.cache+.
56
-
57
- However, this also means the memoization cache is not preserved when an object
58
- is duplicated. If this behavior is desired an aditional module is provided
59
- called `Memoizable::Copy`. When the `Memoiazble::Copy` module is included into
60
- a class it not only adds the #memoize class methods but also includes
61
- an #initialize_copy method, which copies the appropriate cache entries when
62
- #dup or #clone is used. Keep this in mind. It is important to call #super if you
63
- override the #initialize_copy method in a class that uses `Memoizable::Copy`.
64
-
65
- class MemoExample2
66
- include Memoizable::Copy
67
- attr_accessor :a
68
- memoize :a
69
- end
70
-
71
- m = MemoExample2.new
72
- m.a = 10
73
- m.a #=> 10
74
-
75
- n = m.dup
76
- n.a = 20
77
- n.a #=> 10
78
-
79
- The `#memoize` method also accepts a few options that can be used to modify
80
- the behvior of the memoizaiton. To memoize a method across all objects
81
- of the same class and not just per-object, set the `:class` option to true.
82
-
83
- class MemoExample3
84
- include Memoizable
85
- attr_accessor :a
86
- memoize :a, :class=>true
87
- end
88
-
89
- m = MemoExample3.new
90
- m.a = 10
91
- m.a #=> 10
92
-
93
- n = MemoExample3.new
94
- n.a #=> 10
95
-
96
- Memoization is indexed based on arguments passed to the method, as can be seen
97
- in the Fibonacci example. Methods can also be memoized by name only, forgoing
98
- any indexing based on arguments passed. To do this, set the `:arguments`
99
- option to +false+.
100
-
101
- class MemoExample4
102
- include Memoizable
103
- def f(n)
104
- n + n
105
- end
106
- memoize :f, :arguments=>false
107
- end
108
-
109
- m = MemoExample4.new
110
- m.f(1)
111
- m.f(2) #=> 2
112
- m.f(3) #=> 2
113
-
114
- Blocks passed to a method normally have only a present vs. non-present effect
115
- on the memoization index. In other words the return value of a method will be
116
- cached under one key if a block is passed to it and under a different index
117
- if not. It doesn't matter if blocks passed in actually differ, since
118
- the only way to compare blocks is by their +object_id+ and it is very rare
119
- for the exact same block object to be reused.
120
-
121
- Finally, the `:freeze` option can be used to freeze the memoized results.
122
-
123
- class MemoExample5
124
- include Memoizable
125
- def f(n)
126
- (n + n).to_s
127
- end
128
- memoize :f, :freeze=>true
129
- end
130
-
131
- m = MemoExample5.new
132
- m.f(1).frozen? #=> true
133
- m.f(2).frozen? #=> true
134
-
@@ -1,156 +0,0 @@
1
- = Multiton
2
-
3
- The Multion pattern is essentially the same as the Singleton pattern, but
4
- unlike it's fully unique brethren Multiton's are identical if their
5
- initialization parameters are identical.
6
-
7
- To demontrate we first need to load the Facets multiton.rb script.
8
-
9
- require 'facets/multiton'
10
-
11
- Now for the various exmples.
12
-
13
-
14
- == EXAMPLE A - STANDARD USAGE
15
-
16
- class SomeMultitonClass
17
- include Multiton
18
-
19
- attr :arg
20
- def initialize(arg)
21
- @arg = arg
22
- end
23
- end
24
-
25
- a = SomeMultitonClass.instance(4)
26
- b = SomeMultitonClass.instance(4) # a and b are same object
27
- c = SomeMultitonClass.instance(2) # c is a different object
28
-
29
- a.assert == b
30
-
31
- x = [a.arg, b.arg].max * 10 + c.arg
32
- x.assert == 42
33
-
34
-
35
- == EXAMPLE B - MODIFY AN EXISTING CLASS
36
-
37
- We can modify an existing class (if we are so bold), for example we can
38
- add shared filehandles to the File class.
39
-
40
- class ::File
41
- include Multiton
42
- end
43
-
44
- lineno = __LINE__
45
- # HERE1
46
- # HERE2
47
-
48
- a = File.instance(__FILE__)
49
- b = File.instance(__FILE__)
50
-
51
- b.assert == a
52
-
53
- lineno.times{ a.gets }
54
-
55
- a.gets.strip.assert == "# HERE1"
56
- b.gets.strip.assert == "# HERE2"
57
-
58
-
59
- == EXAMPLE C - INHERITENCE
60
-
61
- class A < String
62
- include Multiton
63
- end
64
-
65
- # B is also a multiton - with it's OWN object cache
66
- class B < A; end
67
-
68
- # w is the same object as x, y is the same object as z
69
- w,x,y,z = A.instance('A'), A.instance('A'), B.instance('B'), B.instance('B')
70
-
71
- x.object_id.assert == w.object_id
72
- z.object_id.assert == y.object_id
73
-
74
- a = B.instance('A')
75
- b = B.instance('A')
76
-
77
- w.object_id.refute == a.object_id # (each class has it's own pool)
78
- b.object_id.assert == a.object_id
79
-
80
-
81
- == EXAMPLE D - MULTIPLE MODULE INCLUSION (does nothing)
82
-
83
- class A < String
84
- include Multiton
85
- end
86
-
87
- # B is also a multiton - with it's OWN object cache
88
- class B < A; end
89
-
90
-
91
- # w is the same object as x, y is the same object as z
92
- w,x,y,z = A.instance('A'), A.instance('A'), B.instance('B'), B.instance('B')
93
-
94
- yz_id = y.object_id || z.object_id
95
-
96
- If we include Multiton again, it will have to effect.
97
-
98
- B.class_eval {
99
- include Multiton
100
- }
101
-
102
- # y is not only the same object as z, but they are both the same object(s)
103
- # as from EXAMPLE C
104
-
105
- y,z = B.instance('B'), B.instance('B')
106
-
107
- yz_id.assert == y.object_id
108
- yz_id.assert == z.object_id
109
-
110
-
111
- == EXAMPLE E - SO YOU WANNA USE NEW INSTEAD OF INSTANCE
112
-
113
- module K
114
- # use an inner class which is itself a multiton
115
- class K < String; include Multiton; end
116
-
117
- # define a new which returns a mutltion using #instance...
118
- class << self
119
- def new(*args, &block)
120
- K.instance(*args, &block)
121
- end
122
- end
123
- end
124
-
125
- the = K.new '4'
126
- answer = K.new '2'
127
-
128
- x = sprintf( "%s%s", the, answer )
129
- x.assert == "42"
130
- the.class.assert == K::K
131
-
132
-
133
- == EXAMPLE F - using Klass.multiton_id
134
-
135
- class Klass
136
- include Multiton
137
-
138
- def initialize( important, not_important )
139
- @important, @not_important = important, not_important
140
- end
141
-
142
- def Klass.multiton_id(*args, &block)
143
- # we consider only the first arg
144
- important, not_important = *args
145
- important
146
- end
147
- end
148
-
149
- a = Klass.instance( :a, :b )
150
- b = Klass.instance( :a, :c )
151
- c = Klass.instance( :b, :b )
152
-
153
- a.assert == b
154
- c.refute == a
155
- c.refute == b
156
-
@@ -1,33 +0,0 @@
1
- #
2
- def temporary_directory
3
- @temporary_directory ||= 'tmp'
4
- end
5
-
6
- When /Given a directory '(.*?)' containing/ do |dir, text|
7
- @temporary_directory = File.join(@temporary_directory, dir)
8
- text.lines.each do |file|
9
- next if file =~ /^\s*$/
10
- file = File.join(@temporary_directory, file.strip)
11
- dir = File.dirname(file)
12
- FileUtils.mkdir_p(dir)
13
- File.open(file, 'w'){ |f| f << "SPINICH" }
14
- end
15
- end
16
-
17
- Before :all do
18
- if File.exist?(temporary_directory)
19
- FileUtils.rm_r(temporary_directory)
20
- end
21
- FileUtils.mkdir_p(temporary_directory)
22
- end
23
-
24
- # Used for File extensions
25
- When "had a file '(((.*?)))'" do |name|
26
- name = name.sub(/^tmp\//, '') # b/c QED now runs from tmp/qed
27
- File.open(name, 'w'){|f| f << "Hello World"}
28
- end
29
-
30
- When "had a binary file '(((.*?)))'" do |name|
31
- name = name.sub(/^tmp\//, '') # b/c QED now runs from tmp/qed
32
- File.open(name, 'wb'){|f| f << "Hello\nWorld\n"}
33
- end
@@ -1,25 +0,0 @@
1
- class Array
2
-
3
- # Returns the values in common for an array set (nil, singe value/object, or range).
4
- #
5
- # CREDIT: monocle
6
-
7
- def intersection
8
- array = uniq.sort_by { |e| Range === e ? e.first : e }
9
- array.inject() do |c, e|
10
- f = (Range === c ? c.last : c)
11
- v = (Range === e ? e.first : e)
12
- case f <=> v
13
- when -1 then return nil
14
- when 0 then f
15
- else
16
- if Range === e
17
- v..([f, e.last].min)
18
- else
19
- v
20
- end
21
- end
22
- end
23
- end
24
-
25
- end
@@ -1,14 +0,0 @@
1
- require 'facets/array/product'
2
-
3
- class Array
4
- # Array#** is an alias for Array#product.
5
- #
6
- # NOTE: This method is not a common core extension and is not
7
- # loaded automatically when using <code>require 'facets'</code>.
8
- #
9
- # @uncommon
10
- # require 'facets/array/op_pow'
11
- #
12
- alias_method :**, :product
13
- end
14
-
@@ -1,22 +0,0 @@
1
- class Array
2
-
3
- # Convert an associative array to a Hash.
4
- #
5
- # Examples
6
- #
7
- # [[:a, 1], [:b, 2]].to_h
8
- # #=> {:a=>1, :b=>2}
9
- #
10
- # [[:a, 1], :b].to_h
11
- # #=> {:a=>1, :b=>nil}
12
- #
13
- # Returns [Hash].
14
- #
15
- def to_h
16
- h = {}
17
- each{ |(k,v)| h[k] = v }
18
- h
19
- end unless method_defined?(:to_h)
20
-
21
- end
22
-
@@ -1,16 +0,0 @@
1
- class Binding
2
-
3
- # Returns the local variables defined in the binding context:
4
- #
5
- # a = 1
6
- # b = 2
7
- #
8
- # binding.local_variables #=> [:a, :b]
9
- #
10
- # TODO: Rename this to prevent name clash?
11
- def local_variables()
12
- eval("local_variables")
13
- end
14
-
15
- end
16
-
@@ -1 +0,0 @@
1
- require 'facets/class/singleton_class'
@@ -1,16 +0,0 @@
1
- class Class
2
-
3
- # Return true if a class is the singleton class of
4
- # an object.
5
- #
6
- # @uncommon
7
- # require 'facets/class/singleton_class'
8
- #
9
- def singleton_class?
10
- ! ancestors.include?( self ) rescue false
11
- end
12
-
13
- # @deprecated
14
- alias :singleton? :singleton_class?
15
-
16
- end
@@ -1,28 +0,0 @@
1
- class Class
2
-
3
- if defined?(Class.__subclasses__) # Rubinius
4
-
5
- # Returns an array with the direct children of +self+.
6
- #
7
- # Integer.subclasses # => [Fixnum, Bignum]
8
- #
9
- alias_method :subclasses, :__subclasses__
10
-
11
- else
12
-
13
- # Returns an array with the direct children of +self+.
14
- #
15
- # Integer.subclasses # => [Fixnum, Bignum]
16
- #
17
- def subclasses
18
- list = []
19
- ObjectSpace.each_object(Class) do |c|
20
- list.unshift c if c.superclass == self
21
- end
22
- list.uniq
23
- end
24
-
25
- end
26
-
27
- end
28
-
@@ -1,16 +0,0 @@
1
- class Dir
2
-
3
- # Like #each, except the "." and ".." special files are ignored.
4
- # You can use +ignore+ to override '.' and '..' and ignore
5
- # other entries via a exact match or regular expression.
6
- #
7
- # CREDIT: Tyler Rick
8
- def each_child(*ignore)
9
- ignore = ['.', '..'] if ignore.empty?
10
- each do |file|
11
- yield file unless ignore.any?{ |i| i === file }
12
- end
13
- end
14
-
15
- end
16
-
@@ -1,33 +0,0 @@
1
- module Enumerable
2
-
3
- # The block acts as an arbitrary filter on the data. Unlike map,
4
- # it can choose to drop elements from the result and/or add
5
- # additional elements. The first object passed to the block is
6
- # the receiver of the output.
7
- #
8
- # x = (1..10000)
9
- # x = x.filter{ |out,i| out << i if i % 2 == 0 } # like select
10
- # x = x.filter{ |out,i| out << i + 100 } # like map
11
- # x = x.take(3)
12
- #
13
- # x #=> [102, 104, 106]
14
- #
15
- # This is very similar to #each_with_object, but #filter handles
16
- # argument better by reversing their order and using the splat
17
- # operator. (This was also once known as #injecting.)
18
- #
19
- # CREDIT: David Black, Louis J Scoras
20
-
21
- def filter(output=[]) #:yeild:
22
- if block_given?
23
- each do |*input|
24
- yield(output, *input)
25
- end
26
- output
27
- else
28
- to_enum(:filter)
29
- end
30
- end
31
-
32
- end
33
-