facets 2.8.4 → 2.9.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1036) hide show
  1. data/AUTHORS +2 -0
  2. data/HISTORY.rdoc +233 -94
  3. data/NOTICE +27 -0
  4. data/README.rdoc +131 -49
  5. data/Rakefile +190 -97
  6. data/lib/core/facets/applique/file_helpers.rb +33 -0
  7. data/lib/core/facets/array/after.rb +1 -0
  8. data/lib/core/facets/array/before.rb +39 -0
  9. data/lib/core/facets/{enumerable → array}/collapse.rb +0 -0
  10. data/lib/core/facets/array/collisions.rb +1 -0
  11. data/lib/core/facets/array/combination.rb +0 -16
  12. data/lib/core/facets/{enumerable → array}/commonality.rb +8 -6
  13. data/lib/core/facets/array/conjoin.rb +48 -17
  14. data/lib/core/facets/{string → array}/contains.rb +0 -0
  15. data/lib/core/facets/array/delete_unless.rb +1 -1
  16. data/lib/core/facets/array/divide.rb +20 -0
  17. data/lib/core/facets/array/duplicates.rb +1 -0
  18. data/lib/core/facets/{enumerable → array}/entropy.rb +8 -6
  19. data/lib/core/facets/array/extract_options.rb +31 -0
  20. data/lib/core/facets/array/from.rb +33 -0
  21. data/lib/core/facets/array/index.rb +2 -4
  22. data/lib/core/facets/array/indexable.rb +4 -46
  23. data/lib/core/facets/array/merge.rb +3 -2
  24. data/lib/core/facets/array/mode.rb +22 -0
  25. data/lib/core/facets/array/nonuniq.rb +37 -0
  26. data/lib/core/facets/array/only.rb +9 -3
  27. data/lib/core/facets/array/peek.rb +1 -0
  28. data/lib/core/facets/array/permutation.rb +2 -0
  29. data/lib/core/facets/array/poke.rb +1 -0
  30. data/lib/core/facets/{enumerable → array}/probability.rb +9 -6
  31. data/lib/core/facets/array/product.rb +1 -2
  32. data/lib/core/facets/array/pull.rb +30 -0
  33. data/lib/core/facets/array/recurse.rb +29 -0
  34. data/lib/core/facets/array/recursively.rb +39 -22
  35. data/lib/core/facets/array/rotate.rb +40 -32
  36. data/lib/core/facets/array/select.rb +14 -10
  37. data/lib/core/facets/array/splice.rb +2 -5
  38. data/lib/core/facets/{enumerable → array}/split.rb +2 -2
  39. data/lib/core/facets/array/store.rb +12 -0
  40. data/lib/core/facets/array/thru.rb +1 -0
  41. data/lib/core/facets/array/traverse.rb +10 -5
  42. data/lib/core/facets/array/uniq_by.rb +6 -8
  43. data/lib/core/facets/binding/__callee__.rb +1 -0
  44. data/lib/core/facets/binding/__method__.rb +1 -0
  45. data/lib/core/facets/binding/call_stack.rb +1 -0
  46. data/lib/core/facets/binding/caller.rb +6 -5
  47. data/lib/core/facets/binding/callstack.rb +1 -1
  48. data/lib/core/facets/binding/eval.rb +2 -6
  49. data/lib/core/facets/binding/local_variables.rb +5 -3
  50. data/lib/core/facets/binding/{opvars.rb → op.rb} +0 -0
  51. data/lib/core/facets/boolean.rb +27 -59
  52. data/lib/core/facets/class/descendants.rb +21 -34
  53. data/lib/core/facets/class/methodize.rb +6 -1
  54. data/lib/core/facets/class/pathize.rb +6 -1
  55. data/lib/core/facets/class/subclasses.rb +27 -1
  56. data/lib/core/facets/class/to_proc.rb +4 -1
  57. data/lib/core/facets/comparable/bound.rb +1 -1
  58. data/lib/core/facets/comparable/cmp.rb +3 -0
  59. data/lib/core/facets/comparable/op_get.rb +45 -0
  60. data/lib/core/facets/dir/ascend.rb +8 -12
  61. data/lib/core/facets/dir/each_child.rb +16 -0
  62. data/lib/core/facets/dir/multiglob.rb +15 -27
  63. data/lib/core/facets/dir/parent.rb +4 -1
  64. data/lib/core/facets/dir/recurse.rb +6 -3
  65. data/lib/core/facets/enumerable/accumulate.rb +47 -9
  66. data/lib/core/facets/enumerable/cluster_by.rb +1 -4
  67. data/lib/core/facets/enumerable/compact_map.rb +3 -5
  68. data/lib/core/facets/enumerable/count.rb +42 -30
  69. data/lib/core/facets/enumerable/defer.rb +1 -2
  70. data/lib/core/facets/enumerable/each_with_object.rb +2 -2
  71. data/lib/core/facets/enumerable/every.rb +16 -11
  72. data/lib/core/facets/enumerable/ewise.rb +11 -19
  73. data/lib/core/facets/enumerable/exclude.rb +4 -1
  74. data/lib/core/facets/enumerable/expand.rb +15 -0
  75. data/lib/core/facets/enumerable/filter.rb +9 -11
  76. data/lib/core/facets/enumerable/find_yield.rb +14 -9
  77. data/lib/core/facets/enumerable/frequency.rb +12 -6
  78. data/lib/core/facets/enumerable/graph.rb +2 -2
  79. data/lib/core/facets/enumerable/group_by.rb +13 -7
  80. data/lib/core/facets/enumerable/map_by.rb +35 -0
  81. data/lib/core/facets/enumerable/map_send.rb +12 -10
  82. data/lib/core/facets/enumerable/modulate.rb +1 -1
  83. data/lib/core/facets/enumerable/none.rb +5 -5
  84. data/lib/core/facets/enumerable/occur.rb +9 -7
  85. data/lib/core/facets/enumerable/one.rb +6 -6
  86. data/lib/core/facets/enumerable/per.rb +35 -13
  87. data/lib/core/facets/enumerable/recursively.rb +66 -0
  88. data/lib/core/facets/enumerable/take.rb +11 -15
  89. data/lib/core/facets/enumerable/uniq_by.rb +1 -4
  90. data/lib/core/facets/enumerable/visit.rb +4 -4
  91. data/lib/core/facets/enumerator.rb +17 -12
  92. data/lib/core/facets/enumerator/fx.rb +24 -8
  93. data/lib/core/facets/exception/detail.rb +1 -1
  94. data/lib/core/facets/exception/raised.rb +1 -1
  95. data/lib/core/facets/exception/suppress.rb +3 -1
  96. data/lib/core/facets/file/append.rb +2 -2
  97. data/lib/core/facets/file/create.rb +1 -1
  98. data/lib/core/facets/file/ext.rb +7 -7
  99. data/lib/core/facets/file/read_binary.rb +18 -0
  100. data/lib/core/facets/file/read_list.rb +34 -0
  101. data/lib/core/facets/file/rewrite.rb +9 -7
  102. data/lib/core/facets/file/rootname.rb +2 -12
  103. data/lib/core/facets/file/sanitize.rb +18 -0
  104. data/lib/core/facets/file/split_all.rb +1 -1
  105. data/lib/core/facets/file/write.rb +16 -14
  106. data/lib/core/facets/file/writelines.rb +5 -1
  107. data/lib/core/facets/functor.rb +53 -52
  108. data/lib/core/facets/hash/alias.rb +3 -3
  109. data/lib/core/facets/hash/argumentize.rb +10 -4
  110. data/lib/core/facets/hash/autonew.rb +10 -12
  111. data/lib/core/facets/hash/collate.rb +35 -49
  112. data/lib/core/facets/hash/count.rb +0 -2
  113. data/lib/core/facets/hash/data.rb +31 -4
  114. data/lib/core/facets/hash/{recursive_merge.rb → deep_merge.rb} +4 -10
  115. data/lib/core/facets/hash/delete.rb +4 -47
  116. data/lib/core/facets/hash/delete_at.rb +7 -0
  117. data/lib/core/facets/hash/delete_unless.rb +17 -0
  118. data/lib/core/facets/hash/delete_values.rb +32 -0
  119. data/lib/core/facets/hash/diff.rb +7 -1
  120. data/lib/core/facets/hash/except.rb +15 -17
  121. data/lib/core/facets/hash/inverse.rb +7 -4
  122. data/lib/core/facets/hash/join.rb +6 -3
  123. data/lib/core/facets/hash/new_with.rb +1 -1
  124. data/lib/core/facets/hash/op_and.rb +2 -2
  125. data/lib/core/facets/hash/op_mul.rb +4 -4
  126. data/lib/core/facets/hash/recurse.rb +29 -0
  127. data/lib/core/facets/hash/recursively.rb +50 -18
  128. data/lib/core/facets/hash/rekey.rb +50 -34
  129. data/lib/core/facets/hash/{merge.rb → reverse_merge.rb} +0 -0
  130. data/lib/core/facets/hash/select.rb +10 -6
  131. data/lib/core/facets/hash/slice.rb +24 -25
  132. data/lib/core/facets/hash/symbolize_keys.rb +74 -76
  133. data/lib/core/facets/hash/to_mod.rb +33 -0
  134. data/lib/core/facets/hash/to_proc.rb +11 -10
  135. data/lib/core/facets/hash/traverse.rb +4 -4
  136. data/lib/core/facets/hash/update.rb +1 -1
  137. data/lib/core/facets/hash/update_values.rb +2 -2
  138. data/lib/core/facets/hash/weave.rb +2 -7
  139. data/lib/core/facets/indexable.rb +59 -40
  140. data/lib/core/facets/{kernel/instance.rb → instance.rb} +3 -2
  141. data/lib/core/facets/integer/bit.rb +1 -0
  142. data/lib/core/facets/{bitmask.rb → integer/bitmask.rb} +9 -11
  143. data/lib/core/facets/integer/factorial.rb +1 -10
  144. data/lib/core/facets/integer/odd.rb +2 -4
  145. data/lib/core/facets/integer/of.rb +1 -1
  146. data/lib/core/facets/kernel/__dir__.rb +10 -6
  147. data/lib/core/facets/kernel/__get__.rb +8 -3
  148. data/lib/core/facets/kernel/__method__.rb +12 -6
  149. data/lib/core/facets/kernel/as.rb +61 -46
  150. data/lib/core/facets/kernel/ask.rb +11 -11
  151. data/lib/core/facets/kernel/assign.rb +40 -27
  152. data/lib/core/facets/kernel/assign_from.rb +1 -45
  153. data/lib/core/facets/kernel/attr_singleton.rb +22 -25
  154. data/lib/core/facets/kernel/blank.rb +84 -0
  155. data/lib/core/facets/kernel/call_stack.rb +56 -0
  156. data/lib/core/facets/kernel/callstack.rb +1 -52
  157. data/lib/core/facets/kernel/case.rb +8 -0
  158. data/lib/core/facets/kernel/clone.rb +1 -0
  159. data/lib/core/facets/kernel/complete.rb +10 -2
  160. data/lib/core/facets/kernel/constant.rb +4 -8
  161. data/lib/core/facets/kernel/d.rb +12 -8
  162. data/lib/core/facets/kernel/deep_clone.rb +1 -0
  163. data/lib/core/facets/kernel/deep_copy.rb +27 -2
  164. data/lib/core/facets/kernel/disable_warnings.rb +26 -0
  165. data/lib/core/facets/kernel/dup.rb +33 -0
  166. data/lib/core/facets/kernel/enable_warnings.rb +1 -0
  167. data/lib/core/facets/kernel/equate.rb +8 -5
  168. data/lib/core/facets/kernel/ergo.rb +4 -3
  169. data/lib/core/facets/kernel/extend.rb +17 -1
  170. data/lib/core/facets/kernel/extension.rb +3 -0
  171. data/lib/core/facets/kernel/here.rb +1 -2
  172. data/lib/core/facets/kernel/instance_class.rb +2 -1
  173. data/lib/core/facets/kernel/load_all.rb +1 -0
  174. data/lib/core/facets/kernel/load_relative.rb +1 -0
  175. data/lib/core/facets/kernel/maybe.rb +3 -2
  176. data/lib/core/facets/kernel/meta_alias.rb +9 -4
  177. data/lib/core/facets/kernel/meta_class.rb +4 -4
  178. data/lib/core/facets/kernel/meta_def.rb +0 -2
  179. data/lib/core/facets/kernel/meta_eval.rb +7 -5
  180. data/lib/core/facets/kernel/method.rb +5 -4
  181. data/lib/core/facets/kernel/not.rb +37 -0
  182. data/lib/core/facets/kernel/not_nil.rb +3 -2
  183. data/lib/core/facets/kernel/object_hexid.rb +9 -7
  184. data/lib/core/facets/kernel/object_send.rb +11 -10
  185. data/lib/core/facets/kernel/object_state.rb +21 -4
  186. data/lib/core/facets/kernel/p.rb +3 -3
  187. data/lib/core/facets/kernel/presence.rb +1 -0
  188. data/lib/core/facets/kernel/present.rb +1 -0
  189. data/lib/core/facets/kernel/qua_class.rb +15 -3
  190. data/lib/core/facets/kernel/replace.rb +1 -0
  191. data/lib/core/facets/kernel/require_all.rb +33 -17
  192. data/lib/core/facets/kernel/require_relative.rb +10 -10
  193. data/lib/core/facets/kernel/respond.rb +26 -7
  194. data/lib/core/facets/kernel/returning.rb +5 -1
  195. data/lib/core/facets/kernel/silence.rb +39 -41
  196. data/lib/core/facets/kernel/silence_warnings.rb +1 -0
  197. data/lib/core/facets/kernel/singleton_class.rb +2 -13
  198. data/lib/core/facets/kernel/super_method.rb +11 -0
  199. data/lib/core/facets/kernel/tap.rb +16 -7
  200. data/lib/core/facets/kernel/temporarily.rb +23 -0
  201. data/lib/core/facets/kernel/try.rb +43 -10
  202. data/lib/core/facets/kernel/try_dup.rb +19 -9
  203. data/lib/core/facets/kernel/writers.rb +91 -0
  204. data/lib/core/facets/matchdata/matchset.rb +4 -4
  205. data/lib/core/facets/method.rb +6 -0
  206. data/lib/core/facets/module/abstract.rb +10 -7
  207. data/lib/core/facets/module/alias_method_chain.rb +22 -4
  208. data/lib/core/facets/module/alias_module_function.rb +4 -4
  209. data/lib/core/facets/module/all_instance_methods.rb +19 -0
  210. data/lib/core/facets/module/ancestor.rb +1 -1
  211. data/lib/core/facets/module/anonymous.rb +25 -0
  212. data/lib/core/facets/module/attr_setter.rb +8 -13
  213. data/lib/core/facets/module/basename.rb +6 -6
  214. data/lib/core/facets/module/can.rb +8 -2
  215. data/lib/core/facets/module/class_method_defined.rb +1 -0
  216. data/lib/core/facets/module/extend.rb +1 -10
  217. data/lib/core/facets/module/instance_method.rb +3 -2
  218. data/lib/core/facets/module/instance_method_defined.rb +23 -0
  219. data/lib/core/facets/module/integrate.rb +48 -1
  220. data/lib/core/facets/module/is.rb +5 -5
  221. data/lib/core/facets/module/method_clash.rb +58 -0
  222. data/lib/core/facets/module/methodize.rb +7 -1
  223. data/lib/core/facets/module/modname.rb +22 -0
  224. data/lib/core/facets/module/nodef.rb +13 -0
  225. data/lib/core/facets/module/op.rb +37 -22
  226. data/lib/core/facets/module/op_add.rb +1 -0
  227. data/lib/core/facets/module/op_mul.rb +1 -0
  228. data/lib/core/facets/module/op_sub.rb +1 -0
  229. data/lib/core/facets/module/pathize.rb +8 -10
  230. data/lib/core/facets/module/redirect_method.rb +5 -5
  231. data/lib/core/facets/module/remove.rb +1 -0
  232. data/lib/core/facets/module/rename_method.rb +12 -2
  233. data/lib/core/facets/module/revise.rb +20 -41
  234. data/lib/core/facets/module/set.rb +1 -1
  235. data/lib/core/facets/module/singleton_method_defined.rb +1 -0
  236. data/lib/core/facets/module/spacename.rb +4 -4
  237. data/lib/core/facets/module/to_obj.rb +20 -0
  238. data/lib/core/facets/module/wrap_method.rb +16 -9
  239. data/lib/core/facets/na.rb +15 -0
  240. data/lib/core/facets/numeric/round.rb +4 -4
  241. data/lib/core/facets/numeric/round_at.rb +1 -0
  242. data/lib/core/facets/numeric/round_to.rb +1 -0
  243. data/lib/core/facets/object.rb +6 -0
  244. data/lib/core/facets/objectspace/reflect.rb +26 -11
  245. data/lib/core/facets/proc/bind.rb +7 -5
  246. data/lib/core/facets/proc/bind_to.rb +8 -0
  247. data/lib/{more/facets → core/facets/proc}/partial.rb +9 -15
  248. data/lib/core/facets/proc/to_method.rb +10 -5
  249. data/lib/core/facets/process.rb +6 -0
  250. data/lib/core/facets/process/daemon.rb +32 -0
  251. data/lib/core/facets/range/combine.rb +1 -1
  252. data/lib/core/facets/range/within.rb +1 -1
  253. data/lib/core/facets/regexp/multiline.rb +13 -0
  254. data/lib/core/facets/regexp/op_add.rb +18 -0
  255. data/lib/core/facets/regexp/op_or.rb +18 -0
  256. data/lib/core/facets/string/align.rb +24 -6
  257. data/lib/core/facets/string/bracket.rb +9 -50
  258. data/lib/core/facets/string/camelcase.rb +32 -23
  259. data/lib/core/facets/string/capitalized.rb +7 -4
  260. data/lib/core/facets/string/characters.rb +13 -0
  261. data/lib/core/facets/string/cleanlines.rb +3 -13
  262. data/lib/core/facets/string/cmp.rb +1 -0
  263. data/lib/core/facets/string/compress_lines.rb +4 -4
  264. data/lib/core/facets/string/divide.rb +1 -4
  265. data/lib/core/facets/string/each_char.rb +17 -15
  266. data/lib/core/facets/string/each_word.rb +5 -1
  267. data/lib/core/facets/string/edit_distance.rb +64 -2
  268. data/lib/core/facets/string/file.rb +21 -5
  269. data/lib/core/facets/string/indent.rb +46 -4
  270. data/lib/core/facets/string/interpolate.rb +3 -4
  271. data/lib/core/facets/string/{chomp.rb → lchomp.rb} +0 -0
  272. data/lib/core/facets/string/line_wrap.rb +2 -5
  273. data/lib/core/facets/string/lines.rb +1 -1
  274. data/lib/core/facets/string/methodize.rb +3 -2
  275. data/lib/core/facets/string/modulize.rb +3 -1
  276. data/lib/core/facets/string/natcmp.rb +35 -36
  277. data/lib/core/facets/string/nchar.rb +11 -5
  278. data/lib/core/facets/string/newlines.rb +10 -13
  279. data/lib/core/facets/string/op_div.rb +2 -2
  280. data/lib/core/facets/string/op_sub.rb +1 -1
  281. data/lib/core/facets/string/pathize.rb +12 -10
  282. data/lib/core/facets/string/quote.rb +93 -0
  283. data/lib/core/facets/string/range.rb +11 -7
  284. data/lib/core/facets/string/rewrite.rb +6 -10
  285. data/lib/core/facets/string/similarity.rb +24 -27
  286. data/lib/core/facets/string/splice.rb +6 -10
  287. data/lib/core/facets/string/squish.rb +22 -0
  288. data/lib/core/facets/string/start_with.rb +31 -8
  289. data/lib/core/facets/string/store.rb +7 -0
  290. data/lib/core/facets/string/titlecase.rb +1 -1
  291. data/lib/core/facets/string/unbracket.rb +1 -0
  292. data/lib/core/facets/string/underscore.rb +1 -0
  293. data/lib/core/facets/string/unindent.rb +1 -0
  294. data/lib/core/facets/string/unquote.rb +1 -0
  295. data/lib/core/facets/string/word_wrap.rb +2 -2
  296. data/lib/core/facets/string/xor.rb +4 -6
  297. data/lib/core/facets/symbol/as_s.rb +17 -0
  298. data/lib/core/facets/symbol/bang.rb +1 -0
  299. data/lib/core/facets/symbol/generate.rb +3 -3
  300. data/lib/core/facets/symbol/not.rb +1 -1
  301. data/lib/core/facets/symbol/op_div.rb +8 -6
  302. data/lib/core/facets/symbol/plain.rb +27 -1
  303. data/lib/core/facets/symbol/succ.rb +7 -3
  304. data/lib/core/facets/symbol/thrown.rb +2 -4
  305. data/lib/core/facets/symbol/to_proc.rb +8 -13
  306. data/lib/core/facets/symbol/variablize.rb +7 -5
  307. data/lib/core/facets/time/ago.rb +1 -1
  308. data/lib/core/facets/time/change.rb +19 -14
  309. data/lib/core/facets/time/dst_adjustment.rb +24 -0
  310. data/lib/core/facets/time/elapse.rb +3 -1
  311. data/lib/core/facets/time/future.rb +4 -4
  312. data/lib/core/facets/time/hence.rb +1 -97
  313. data/lib/core/facets/time/in.rb +93 -0
  314. data/lib/core/facets/time/round_to.rb +21 -0
  315. data/lib/core/facets/time/set.rb +9 -3
  316. data/lib/core/facets/time/stamp.rb +2 -1
  317. data/lib/core/facets/time/to_time.rb +2 -2
  318. data/lib/core/facets/time/trunc.rb +3 -3
  319. data/lib/core/facets/to_hash.rb +16 -12
  320. data/lib/core/facets/unboundmethod/name.rb +3 -3
  321. data/lib/more/facets/argvector.rb +23 -33
  322. data/lib/more/facets/atomicfile.rb +51 -0
  323. data/lib/more/facets/basicobject.rb +6 -6
  324. data/lib/more/facets/cgi.rb +3 -9
  325. data/lib/more/facets/continuation.rb +2 -2
  326. data/lib/more/facets/date.rb +56 -54
  327. data/lib/more/facets/erb.rb +15 -12
  328. data/lib/more/facets/fileutils.rb +1 -20
  329. data/lib/more/facets/fileutils/cp_rx.rb +1 -1
  330. data/lib/more/facets/fileutils/safe_ln.rb +1 -2
  331. data/lib/more/facets/fileutils/slice.rb +11 -99
  332. data/lib/more/facets/fileutils/wc.rb +5 -56
  333. data/lib/more/facets/fileutils/whereis.rb +8 -6
  334. data/lib/more/facets/fileutils/which.rb +5 -48
  335. data/lib/more/facets/find.rb +16 -0
  336. data/lib/more/facets/getoptlong.rb +11 -23
  337. data/lib/more/facets/main.rb +27 -40
  338. data/lib/more/facets/memoizable.rb +141 -0
  339. data/lib/{core → more}/facets/metaid.rb +2 -2
  340. data/lib/more/facets/multipliers.rb +6 -38
  341. data/lib/more/facets/multiton.rb +14 -13
  342. data/lib/more/facets/nullclass.rb +3 -39
  343. data/lib/more/facets/opesc.rb +42 -23
  344. data/lib/more/facets/ostruct.rb +32 -59
  345. data/lib/more/facets/pathname.rb +53 -43
  346. data/lib/more/facets/platform.rb +87 -100
  347. data/lib/more/facets/random.rb +129 -172
  348. data/lib/more/facets/rbconfig.rb +130 -25
  349. data/lib/more/facets/reference.rb +7 -23
  350. data/lib/more/facets/set.rb +5 -0
  351. data/lib/more/facets/shellwords.rb +22 -4
  352. data/lib/more/facets/thread.rb +48 -25
  353. data/lib/more/facets/timer.rb +50 -117
  354. data/lib/more/facets/tuple.rb +31 -74
  355. data/lib/more/facets/uri.rb +29 -67
  356. data/lib/more/facets/yaml.rb +28 -44
  357. data/lib/more/facets/zlib.rb +3 -3
  358. data/lib/tour/facets/array/median.rb +14 -0
  359. data/lib/tour/facets/array/percentile.rb +29 -0
  360. data/lib/{core/facets/class/prepend.rb → tour/facets/class/preallocate.rb} +10 -10
  361. data/lib/{more/facets → tour/facets/integer}/roman.rb +8 -7
  362. data/lib/{core → tour}/facets/kernel/demo.rb +3 -2
  363. data/lib/{core → tour}/facets/kernel/eigenclass.rb +1 -3
  364. data/lib/{core → tour}/facets/kernel/instance_exec.rb +3 -6
  365. data/lib/tour/facets/kernel/memo.rb +38 -0
  366. data/lib/tour/facets/kernel/trap_chain.rb +20 -0
  367. data/lib/tour/facets/method/memoize.rb +10 -0
  368. data/lib/tour/facets/module/attr_class_accessor.rb +33 -0
  369. data/lib/tour/facets/module/attr_inheritor.rb +13 -0
  370. data/lib/{more → tour}/facets/module/attr_tester.rb +0 -3
  371. data/lib/{more → tour}/facets/module/attr_validator.rb +0 -0
  372. data/lib/tour/facets/module/cattr.rb +240 -0
  373. data/lib/tour/facets/module/class_accessor.rb +27 -0
  374. data/lib/tour/facets/module/class_extend.rb +82 -0
  375. data/lib/{more/facets/inheritor.rb → tour/facets/module/class_inheritor.rb} +12 -38
  376. data/lib/tour/facets/module/copy_inheritor.rb +39 -0
  377. data/lib/tour/facets/module/enclosure.rb +62 -0
  378. data/lib/tour/facets/module/enclosures.rb +1 -0
  379. data/lib/tour/facets/module/include_as.rb +1 -0
  380. data/lib/{more/facets → tour/facets/module}/instance_function.rb +26 -16
  381. data/lib/tour/facets/module/memoize.rb +12 -0
  382. data/lib/tour/facets/module/method_space.rb +94 -0
  383. data/lib/{core → tour}/facets/module/module_load.rb +0 -0
  384. data/lib/{core → tour}/facets/module/prepend.rb +4 -4
  385. data/lib/tour/facets/regexp/op_or.rb +11 -0
  386. data/lib/tour/facets/string/crypt.rb +16 -0
  387. data/lib/tour/facets/string/roman.rb +1 -0
  388. data/meta/data.rb +29 -0
  389. data/meta/gemfile +10 -0
  390. data/meta/profile +24 -0
  391. data/qed/applique/file_helpers.rb +24 -0
  392. data/qed/core/array/combination.rdoc +19 -0
  393. data/qed/core/array/delete.rdoc +23 -0
  394. data/qed/core/array/index.rdoc +14 -0
  395. data/qed/core/array/merge.rdoc +15 -0
  396. data/qed/core/array/only.rdoc +9 -0
  397. data/qed/core/array/pad.rdoc +28 -0
  398. data/qed/core/array/permutation.rdoc +10 -0
  399. data/qed/core/array/product.rdoc +26 -0
  400. data/qed/core/array/recursively.rdoc +16 -0
  401. data/qed/core/array/rotate.rdoc +30 -0
  402. data/qed/core/array/select.rdoc +8 -0
  403. data/qed/core/array/uniq_by.rdoc +9 -0
  404. data/qed/core/binding/caller.rdoc +59 -0
  405. data/qed/core/binding/defined.rdoc +10 -0
  406. data/qed/core/binding/eval.rdoc +8 -0
  407. data/qed/core/binding/local_variables.rdoc +26 -0
  408. data/qed/core/binding/opvars.rdoc +16 -0
  409. data/qed/core/binding/self.rdoc +6 -0
  410. data/qed/core/class/descendants.rdoc +10 -0
  411. data/qed/core/class/to_proc.rdoc +8 -0
  412. data/qed/core/comparable/cap.rdoc +20 -0
  413. data/qed/core/comparable/clip.rdoc +37 -0
  414. data/qed/core/comparable/cmp.rdoc +18 -0
  415. data/qed/core/comparable/op_get.rdoc +29 -0
  416. data/qed/core/dir/ascend.rdoc +24 -0
  417. data/qed/core/dir/descend.rdoc +14 -0
  418. data/qed/core/dir/multiglob.rdoc +41 -0
  419. data/qed/core/dir/parent.rdoc +6 -0
  420. data/qed/core/dir/recurse.rdoc +41 -0
  421. data/qed/core/exception/detail.rdoc +12 -0
  422. data/qed/core/facets.rdoc +6 -0
  423. data/qed/core/filetest/root.rdoc +6 -0
  424. data/qed/core/hash/recursively.rdoc +21 -0
  425. data/qed/core/indexable.rdoc +95 -0
  426. data/qed/core/integer/bitmask.rdoc +46 -0
  427. data/qed/core/integer/even.rdoc +12 -0
  428. data/qed/core/integer/factorial.rdoc +10 -0
  429. data/qed/core/integer/length.rdoc +7 -0
  430. data/qed/core/integer/multiple.rdoc +10 -0
  431. data/qed/core/integer/odd.rdoc +12 -0
  432. data/qed/core/integer/of.rdoc +14 -0
  433. data/qed/core/integer/ordinal.rdoc +9 -0
  434. data/qed/core/matchdata/match.rdoc +7 -0
  435. data/qed/core/matchdata/matchset.rdoc +15 -0
  436. data/qed/core/string/align.rdoc +34 -0
  437. data/qed/core/string/bracket.rdoc +35 -0
  438. data/qed/core/string/bytes.rdoc +8 -0
  439. data/qed/core/string/camelcase.rdoc +67 -0
  440. data/qed/core/string/capitalized.rdoc +27 -0
  441. data/qed/core/string/characters.rdoc +11 -0
  442. data/qed/core/string/cleanlines.rdoc +10 -0
  443. data/qed/core/string/cleave.rdoc +49 -0
  444. data/qed/core/string/divide.rdoc +9 -0
  445. data/qed/core/string/each_char.rdoc +9 -0
  446. data/qed/core/string/each_word.rdoc +9 -0
  447. data/qed/core/string/end_with.rdoc +6 -0
  448. data/qed/core/string/expand_tabs.rdoc +69 -0
  449. data/qed/core/string/fold.rdoc +14 -0
  450. data/qed/core/string/indent.rdoc +65 -0
  451. data/qed/core/string/interpolate.rdoc +7 -0
  452. data/qed/core/string/lchomp.rdoc +14 -0
  453. data/qed/core/string/line_wrap.rdoc +7 -0
  454. data/qed/core/string/lines.rdoc +8 -0
  455. data/qed/core/string/margin.rdoc +92 -0
  456. data/qed/core/string/methodize.rdoc +22 -0
  457. data/qed/core/string/modulize.rdoc +22 -0
  458. data/qed/core/string/mscan.rdoc +10 -0
  459. data/qed/core/string/natcmp.rdoc +10 -0
  460. data/qed/core/string/nchar.rdoc +9 -0
  461. data/qed/core/string/newlines.rdoc +9 -0
  462. data/qed/core/string/op_sub.rdoc +7 -0
  463. data/qed/core/string/pathize.rdoc +22 -0
  464. data/qed/core/string/quote.rdoc +20 -0
  465. data/qed/core/string/range.rdoc +19 -0
  466. data/qed/core/string/rewrite.rdoc +9 -0
  467. data/qed/core/string/shatter.rdoc +9 -0
  468. data/qed/core/string/snakecase.rdoc +9 -0
  469. data/qed/core/string/splice.rdoc +28 -0
  470. data/qed/core/string/start_with.rdoc +7 -0
  471. data/qed/core/string/subtract.rdoc +8 -0
  472. data/qed/core/string/tab.rdoc +16 -0
  473. data/qed/core/string/tabto.rdoc +29 -0
  474. data/qed/core/string/titlecase.rdoc +8 -0
  475. data/qed/core/string/to_re.rdoc +22 -0
  476. data/qed/core/string/unfold.rdoc +9 -0
  477. data/qed/core/string/unindent.rdoc +65 -0
  478. data/qed/core/string/unquote.rdoc +6 -0
  479. data/qed/core/string/variablize.rdoc +7 -0
  480. data/qed/core/string/word_wrap.rdoc +54 -0
  481. data/qed/core/string/words.rdoc +13 -0
  482. data/qed/core/string/xor.rdoc +8 -0
  483. data/qed/more/basic_object.rdoc +22 -0
  484. data/qed/more/memoizable.rdoc +134 -0
  485. data/qed/more/mulititon.rdoc +156 -0
  486. data/qed/tour/module/cattr.rdoc +43 -0
  487. data/qed/tour/module/class_extend.rdoc +64 -0
  488. data/qed/tour/module/class_inheritor.rdoc +126 -0
  489. data/qed/tour/module/copy_inheritor.rdoc +30 -0
  490. data/qed/tour/module/method_space.rdoc +55 -0
  491. data/test/core/array/test_after.rb +17 -0
  492. data/test/core/array/test_before.rb +17 -0
  493. data/test/core/array/test_collapse.rb +10 -0
  494. data/test/core/array/test_combination.rb +9 -17
  495. data/test/core/array/test_commonality.rb +27 -0
  496. data/test/core/array/test_conjoin.rb +46 -0
  497. data/test/core/array/test_contains.rb +10 -0
  498. data/test/core/array/test_delete.rb +12 -15
  499. data/test/core/array/test_divide.rb +10 -0
  500. data/test/core/array/test_duplicates.rb +11 -0
  501. data/test/core/array/test_entropy.rb +15 -0
  502. data/test/core/array/test_extract_options.rb +20 -0
  503. data/test/core/array/test_first.rb +13 -0
  504. data/test/core/array/test_index.rb +6 -7
  505. data/test/core/array/test_last.rb +13 -0
  506. data/test/core/array/test_merge.rb +6 -9
  507. data/test/core/array/test_mode.rb +13 -0
  508. data/test/core/array/test_nonuniq.rb +17 -0
  509. data/test/core/array/test_not_empty.rb +13 -0
  510. data/test/core/array/test_only.rb +7 -15
  511. data/test/core/array/test_pad.rb +10 -11
  512. data/test/core/array/test_peek.rb +24 -0
  513. data/test/core/array/test_permutation.rb +11 -9
  514. data/test/core/array/test_poke.rb +17 -0
  515. data/test/core/array/test_probability.rb +11 -0
  516. data/test/core/array/test_product.rb +25 -12
  517. data/test/core/array/test_pull.rb +11 -0
  518. data/test/core/array/test_recurse.rb +17 -0
  519. data/test/core/array/test_recursively.rb +29 -0
  520. data/test/core/array/test_rotate.rb +17 -10
  521. data/test/core/array/test_select.rb +4 -9
  522. data/test/core/array/test_splice.rb +17 -0
  523. data/test/core/array/test_split.rb +18 -0
  524. data/test/core/array/test_store.rb +20 -0
  525. data/test/core/array/test_traverse.rb +18 -0
  526. data/test/core/array/test_uniq_by.rb +13 -0
  527. data/test/core/binding/test_caller.rb +31 -30
  528. data/test/core/binding/test_defined.rb +9 -11
  529. data/test/core/binding/test_eval.rb +6 -9
  530. data/test/core/binding/test_local_variables.rb +24 -16
  531. data/test/core/binding/test_op.rb +20 -0
  532. data/test/core/binding/test_self.rb +6 -11
  533. data/test/core/class/test_descendents.rb +9 -8
  534. data/test/core/class/test_subclasses.rb +17 -0
  535. data/test/core/class/test_to_proc.rb +7 -8
  536. data/test/core/comparable/test_bound.rb +28 -0
  537. data/test/core/comparable/test_cap.rb +14 -15
  538. data/test/core/comparable/test_clip.rb +22 -17
  539. data/test/core/comparable/test_cmp.rb +6 -29
  540. data/test/core/comparable/{test_comparable.rb → test_op_get.rb} +19 -15
  541. data/test/core/denumerable_tc.rb +154 -0
  542. data/test/core/dir/test_ascend.rb +11 -19
  543. data/test/core/dir/test_descend.rb +7 -12
  544. data/test/core/dir/test_each_child.rb +18 -0
  545. data/test/core/dir/test_multiglob.rb +11 -36
  546. data/test/core/dir/test_parent.rb +4 -5
  547. data/test/core/dir/test_recurse.rb +10 -34
  548. data/test/core/enumerable/test_accumulate.rb +36 -0
  549. data/test/core/enumerable/test_cluster_by.rb +14 -10
  550. data/test/core/enumerable/test_compact_map.rb +19 -15
  551. data/test/core/enumerable/test_count.rb +9 -12
  552. data/test/core/enumerable/test_defer.rb +13 -78
  553. data/test/core/enumerable/test_each_by.rb +29 -39
  554. data/test/core/enumerable/test_each_with_object.rb +14 -0
  555. data/test/core/enumerable/test_every.rb +11 -12
  556. data/test/core/enumerable/test_ewise.rb +15 -16
  557. data/test/core/enumerable/test_exclude.rb +11 -0
  558. data/test/core/enumerable/test_expand.rb +11 -0
  559. data/test/core/enumerable/test_filter.rb +15 -0
  560. data/test/core/enumerable/test_find_yield.rb +43 -29
  561. data/test/core/enumerable/test_frequency.rb +6 -6
  562. data/test/core/enumerable/test_graph.rb +38 -0
  563. data/test/core/enumerable/test_group_by.rb +18 -17
  564. data/test/core/enumerable/test_map_by.rb +23 -0
  565. data/test/core/enumerable/test_map_send.rb +10 -0
  566. data/test/core/enumerable/test_map_with_index.rb +9 -5
  567. data/test/core/enumerable/test_mash.rb +5 -30
  568. data/test/core/enumerable/test_modulate.rb +4 -5
  569. data/test/core/enumerable/test_none.rb +6 -4
  570. data/test/core/enumerable/test_occur.rb +7 -8
  571. data/test/core/enumerable/test_one.rb +7 -4
  572. data/test/core/enumerable/test_per.rb +7 -10
  573. data/test/core/enumerable/test_purge.rb +18 -0
  574. data/test/core/enumerable/test_recursively.rb +29 -0
  575. data/test/core/enumerable/test_sum.rb +9 -0
  576. data/test/core/enumerable/test_take.rb +5 -7
  577. data/test/core/enumerable/test_uniq_by.rb +13 -7
  578. data/test/core/enumerable/test_visit.rb +10 -0
  579. data/test/core/enumerator/test_fx.rb +12 -0
  580. data/test/core/enumerator/test_new.rb +17 -0
  581. data/test/core/enumerator_tc.rb +28 -0
  582. data/test/core/exception/test_detail.rb +16 -0
  583. data/test/core/exception/test_raised.rb +13 -0
  584. data/test/core/exception/test_suppress.rb +14 -0
  585. data/test/core/file/test_append.rb +19 -0
  586. data/test/core/file/test_create.rb +8 -26
  587. data/test/core/file/test_ext.rb +15 -19
  588. data/test/core/file/test_null.rb +4 -6
  589. data/test/core/file/test_read_binary.rb +15 -0
  590. data/test/core/file/test_read_list.rb +12 -0
  591. data/test/core/file/test_rewrite.rb +18 -27
  592. data/test/core/file/test_rootname.rb +9 -0
  593. data/test/core/file/test_sanitize.rb +28 -0
  594. data/test/core/file/test_split_all.rb +5 -27
  595. data/test/core/file/test_write.rb +10 -23
  596. data/test/core/file/test_writelines.rb +10 -15
  597. data/test/core/filetest/test_root.rb +10 -0
  598. data/test/core/functor_tc.rb +29 -0
  599. data/test/core/hash/test_alias.rb +8 -7
  600. data/test/core/hash/test_argumentize.rb +19 -0
  601. data/test/core/hash/test_at.rb +5 -6
  602. data/test/core/hash/test_autonew.rb +12 -5
  603. data/test/core/hash/test_collate.rb +41 -23
  604. data/test/core/hash/test_count.rb +10 -0
  605. data/test/core/hash/test_data.rb +31 -0
  606. data/test/core/hash/test_dearray_values.rb +7 -8
  607. data/test/core/hash/test_deep_merge.rb +23 -0
  608. data/test/core/hash/test_delete_at.rb +14 -0
  609. data/test/core/hash/test_delete_unless.rb +14 -0
  610. data/test/core/hash/test_delete_values.rb +22 -0
  611. data/test/core/hash/test_diff.rb +12 -0
  612. data/test/core/hash/test_expect.rb +16 -0
  613. data/test/core/hash/test_graph.rb +32 -0
  614. data/test/core/hash/test_insert.rb +10 -7
  615. data/test/core/hash/test_inverse.rb +8 -7
  616. data/test/core/hash/test_join.rb +28 -0
  617. data/test/core/hash/test_keys.rb +21 -12
  618. data/test/core/hash/test_new_with.rb +13 -0
  619. data/test/core/hash/test_op_add.rb +5 -6
  620. data/test/core/hash/test_op_and.rb +11 -12
  621. data/test/core/hash/test_op_mul.rb +5 -6
  622. data/test/core/hash/test_op_or.rb +5 -6
  623. data/test/core/hash/test_op_push.rb +18 -18
  624. data/test/core/hash/test_op_sub.rb +8 -9
  625. data/test/core/hash/test_recurse.rb +18 -0
  626. data/test/core/hash/test_recursively.rb +67 -0
  627. data/test/core/hash/test_rekey.rb +46 -48
  628. data/test/core/hash/test_replace_each.rb +5 -6
  629. data/test/core/hash/test_reverse_merge.rb +27 -0
  630. data/test/core/hash/test_select.rb +23 -18
  631. data/test/core/hash/test_slice.rb +7 -10
  632. data/test/core/hash/test_stringify_keys.rb +8 -11
  633. data/test/core/hash/test_swap.rb +5 -5
  634. data/test/core/hash/test_symbolize_keys.rb +9 -11
  635. data/test/core/hash/test_to_mod.rb +20 -0
  636. data/test/core/hash/test_to_proc.rb +19 -0
  637. data/test/core/hash/test_to_struct.rb +18 -0
  638. data/test/core/hash/test_traverse.rb +11 -12
  639. data/test/core/hash/test_update_each.rb +5 -6
  640. data/test/core/hash/test_update_keys.rb +6 -7
  641. data/test/core/hash/test_update_values.rb +6 -6
  642. data/test/core/hash/test_weave.rb +5 -9
  643. data/test/core/hash/test_zipnew.rb +4 -5
  644. data/test/core/indexable_tc.rb +177 -0
  645. data/test/core/integer/test_bitmask.rb +34 -27
  646. data/test/core/integer/test_even.rb +7 -6
  647. data/test/core/integer/test_factorial.rb +16 -9
  648. data/test/core/integer/test_multiple.rb +3 -4
  649. data/test/core/integer/test_odd.rb +7 -6
  650. data/test/core/integer/test_of.rb +12 -7
  651. data/test/core/integer/test_ordinal.rb +14 -8
  652. data/test/core/kernel/test_as.rb +48 -39
  653. data/test/core/kernel/test_ask.rb +8 -0
  654. data/test/core/kernel/test_assign.rb +29 -30
  655. data/test/core/kernel/test_assign_from.rb +31 -11
  656. data/test/core/kernel/test_attr_singleton.rb +16 -18
  657. data/test/core/kernel/test_blank.rb +83 -0
  658. data/test/core/kernel/test_callstack.rb +8 -5
  659. data/test/core/kernel/test_class.rb +10 -0
  660. data/test/core/kernel/test_complete.rb +15 -0
  661. data/test/core/kernel/test_constant.rb +7 -11
  662. data/test/core/kernel/test_d.rb +10 -0
  663. data/test/core/kernel/test_deep_copy.rb +33 -0
  664. data/test/core/kernel/test_dir.rb +16 -0
  665. data/test/core/kernel/test_disable_warnings.rb +26 -0
  666. data/test/core/kernel/test_dup.rb +66 -0
  667. data/test/core/kernel/test_ergo.rb +23 -0
  668. data/test/core/kernel/test_extension.rb +14 -0
  669. data/test/core/kernel/test_get.rb +34 -0
  670. data/test/core/kernel/test_here.rb +4 -10
  671. data/test/core/kernel/test_in.rb +5 -6
  672. data/test/core/kernel/test_instance_assign.rb +7 -8
  673. data/test/core/kernel/test_instance_class.rb +4 -5
  674. data/test/core/kernel/test_instance_send.rb +22 -0
  675. data/test/core/kernel/test_maybe.rb +9 -0
  676. data/test/core/kernel/test_meta_alias.rb +14 -0
  677. data/test/core/kernel/test_meta_class.rb +25 -0
  678. data/test/core/kernel/test_meta_def.rb +11 -0
  679. data/test/core/kernel/test_meta_eval.rb +14 -0
  680. data/test/core/kernel/test_method.rb +10 -10
  681. data/test/core/kernel/test_not.rb +44 -0
  682. data/test/core/kernel/test_not_nil.rb +16 -8
  683. data/test/core/kernel/test_object_class.rb +7 -8
  684. data/test/core/kernel/test_object_hexid.rb +4 -5
  685. data/test/core/kernel/test_object_send.rb +21 -0
  686. data/test/core/kernel/test_object_state.rb +72 -0
  687. data/test/core/kernel/test_presence.rb +29 -0
  688. data/test/core/kernel/test_qua_class.rb +19 -0
  689. data/test/core/kernel/test_replace.rb +64 -0
  690. data/test/core/kernel/test_require_all.rb +11 -0
  691. data/test/core/kernel/test_require_relative.rb +12 -0
  692. data/test/core/kernel/test_respond.rb +32 -0
  693. data/test/core/kernel/test_returning.rb +4 -7
  694. data/test/core/kernel/test_silence.rb +17 -8
  695. data/test/core/kernel/test_singleton_class.rb +11 -0
  696. data/test/core/kernel/test_source_location.rb +18 -0
  697. data/test/core/kernel/test_super_method.rb +20 -0
  698. data/test/core/kernel/test_tap.rb +24 -9
  699. data/test/core/kernel/test_temporarily.rb +21 -0
  700. data/test/core/kernel/test_true.rb +23 -0
  701. data/test/core/kernel/test_try.rb +27 -0
  702. data/test/core/kernel/test_try_dup.rb +46 -0
  703. data/test/core/kernel/test_val.rb +11 -12
  704. data/test/core/kernel/test_with.rb +14 -0
  705. data/test/core/kernel/test_writers.rb +49 -0
  706. data/test/core/matchdata/test_match.rb +4 -8
  707. data/test/core/matchdata/test_matchset.rb +8 -10
  708. data/test/core/module/test_abstract.rb +13 -16
  709. data/test/core/module/test_alias_accessor.rb +14 -13
  710. data/test/core/module/test_alias_method_chain.rb +21 -20
  711. data/test/core/module/test_alias_module_function.rb +14 -12
  712. data/test/core/module/test_all_instance_methods.rb +23 -0
  713. data/test/core/module/test_ancestor.rb +6 -5
  714. data/test/core/module/test_anonymous.rb +14 -0
  715. data/test/core/module/test_attr_setter.rb +24 -0
  716. data/test/core/module/test_basename.rb +4 -5
  717. data/test/core/module/test_can.rb +10 -11
  718. data/test/core/module/test_class.rb +10 -13
  719. data/test/core/module/test_class_def.rb +18 -0
  720. data/test/core/module/test_instance_method.rb +16 -0
  721. data/test/core/module/test_instance_method_defined.rb +26 -0
  722. data/test/core/module/test_integrate.rb +15 -14
  723. data/test/core/module/test_is.rb +34 -10
  724. data/test/core/module/test_method_clash.rb +50 -0
  725. data/test/core/module/test_methodize.rb +12 -5
  726. data/test/core/module/test_modname.rb +9 -0
  727. data/test/core/module/test_module_def.rb +18 -0
  728. data/test/core/module/test_nodef.rb +15 -0
  729. data/test/core/module/test_op.rb +23 -25
  730. data/test/core/module/test_pathize.rb +11 -9
  731. data/test/core/module/test_redefine_method.rb +14 -19
  732. data/test/core/module/test_redirect_method.rb +14 -15
  733. data/test/core/module/test_remove.rb +15 -0
  734. data/test/core/module/test_rename_method.rb +16 -17
  735. data/test/core/module/test_revise.rb +33 -34
  736. data/test/core/module/test_set.rb +26 -0
  737. data/test/core/module/test_spacename.rb +5 -8
  738. data/test/core/module/test_to_obj.rb +16 -0
  739. data/test/core/module/test_wrap_method.rb +15 -15
  740. data/test/core/nilclass/test_to_f.rb +4 -5
  741. data/test/core/numeric/test_approx.rb +4 -4
  742. data/test/core/numeric/test_distance.rb +6 -7
  743. data/test/core/numeric/test_length.rb +12 -0
  744. data/test/core/numeric/test_round.rb +42 -33
  745. data/test/core/numeric/test_spacing.rb +8 -7
  746. data/test/core/proc/test_bind.rb +7 -7
  747. data/test/core/proc/test_bind_to.rb +13 -0
  748. data/test/core/proc/test_compose.rb +8 -9
  749. data/test/core/proc/test_curry.rb +11 -13
  750. data/test/core/proc/test_partial.rb +23 -0
  751. data/test/core/proc/test_to_method.rb +28 -15
  752. data/test/core/proc/test_update.rb +11 -0
  753. data/test/core/range/test_combine.rb +13 -7
  754. data/test/core/range/test_overlap.rb +3 -7
  755. data/test/core/range/test_to_r.rb +6 -7
  756. data/test/core/range/test_umbrella.rb +28 -0
  757. data/test/core/range/test_within.rb +3 -27
  758. data/test/core/regexp/test_arity.rb +11 -8
  759. data/test/core/regexp/test_multiline.rb +15 -0
  760. data/test/core/regexp/test_op_add.rb +11 -0
  761. data/test/core/regexp/test_op_or.rb +12 -0
  762. data/test/core/regexp/test_to_re.rb +6 -7
  763. data/test/core/string/test_align.rb +13 -11
  764. data/test/core/string/test_bracket.rb +21 -52
  765. data/test/core/string/test_bytes.rb +4 -5
  766. data/test/core/string/test_camelcase.rb +43 -35
  767. data/test/core/string/test_capitalized.rb +14 -15
  768. data/test/core/string/test_characters.rb +11 -0
  769. data/test/core/string/test_cleanlines.rb +4 -5
  770. data/test/core/string/test_cleave.rb +17 -26
  771. data/test/core/string/test_cmp.rb +14 -0
  772. data/test/core/string/test_compress_lines.rb +14 -0
  773. data/test/core/string/test_divide.rb +4 -5
  774. data/test/core/string/test_each_char.rb +4 -5
  775. data/test/core/string/test_each_word.rb +4 -5
  776. data/test/core/string/test_edit_distance.rb +16 -0
  777. data/test/core/string/test_end_with.rb +9 -5
  778. data/test/core/string/test_exclude.rb +19 -0
  779. data/test/core/string/test_expand_tabs.rb +39 -26
  780. data/test/core/string/test_file.rb +11 -0
  781. data/test/core/string/test_fold.rb +6 -7
  782. data/test/core/string/test_indent.rb +51 -45
  783. data/test/core/string/test_index_all.rb +10 -0
  784. data/test/core/string/test_interpolate.rb +4 -8
  785. data/test/core/string/test_lchomp.rb +6 -7
  786. data/test/core/string/test_line_wrap.rb +5 -6
  787. data/test/core/string/test_lines.rb +4 -5
  788. data/test/core/string/test_lowercase.rb +14 -0
  789. data/test/core/string/test_margin.rb +17 -18
  790. data/test/core/string/test_methodize.rb +8 -9
  791. data/test/core/string/test_modulize.rb +8 -9
  792. data/test/core/string/test_mscan.rb +6 -7
  793. data/test/core/string/test_natcmp.rb +8 -12
  794. data/test/core/string/test_nchar.rb +7 -8
  795. data/test/core/string/test_newlines.rb +4 -5
  796. data/test/core/string/test_op_div.rb +11 -0
  797. data/test/core/string/test_op_sub.rb +4 -5
  798. data/test/core/string/test_pathize.rb +11 -12
  799. data/test/core/string/test_quote.rb +38 -0
  800. data/test/core/string/test_range.rb +12 -12
  801. data/test/core/string/test_rewrite.rb +5 -6
  802. data/test/core/string/test_shatter.rb +6 -7
  803. data/test/core/string/test_similarity.rb +10 -0
  804. data/test/core/string/test_snakecase.rb +7 -8
  805. data/test/core/string/test_splice.rb +13 -14
  806. data/test/core/string/test_squish.rb +23 -0
  807. data/test/core/string/test_start_with.rb +9 -5
  808. data/test/core/string/test_store.rb +12 -0
  809. data/test/core/string/test_subtract.rb +6 -7
  810. data/test/core/string/test_tab.rb +5 -6
  811. data/test/core/string/test_tabto.rb +5 -6
  812. data/test/core/string/test_titlecase.rb +4 -5
  813. data/test/core/string/test_to_re.rb +15 -15
  814. data/test/core/string/test_unbracket.rb +26 -0
  815. data/test/core/string/test_underscore.rb +17 -0
  816. data/test/core/string/test_unfold.rb +4 -5
  817. data/test/core/string/test_unindent.rb +100 -0
  818. data/test/core/string/test_unquote.rb +9 -0
  819. data/test/core/string/test_uppercase.rb +18 -0
  820. data/test/core/string/test_variablize.rb +4 -5
  821. data/test/core/string/test_word_wrap.rb +50 -27
  822. data/test/core/string/test_words.rb +7 -22
  823. data/test/core/string/test_xor.rb +4 -5
  824. data/test/core/symbol/test_as_s.rb +11 -0
  825. data/test/core/symbol/test_bang.rb +11 -0
  826. data/test/core/symbol/test_chomp.rb +6 -7
  827. data/test/core/symbol/test_generate.rb +8 -12
  828. data/test/core/symbol/test_not.rb +7 -5
  829. data/test/core/symbol/test_op_div.rb +11 -0
  830. data/test/core/symbol/test_plain.rb +4 -5
  831. data/test/core/symbol/test_query.rb +3 -4
  832. data/test/core/symbol/test_setter.rb +3 -4
  833. data/test/core/symbol/test_succ.rb +6 -7
  834. data/test/core/symbol/test_to_proc.rb +13 -13
  835. data/test/core/symbol/test_variablize.rb +10 -0
  836. data/test/core/time/test_ago.rb +127 -0
  837. data/test/core/time/test_change.rb +6 -8
  838. data/test/core/time/test_dst_adjustment.rb +10 -0
  839. data/test/core/time/test_elapse.rb +3 -5
  840. data/test/core/time/test_future.rb +21 -0
  841. data/test/core/time/test_hence.rb +9 -121
  842. data/test/core/time/test_in.rb +126 -0
  843. data/test/core/time/test_past.rb +21 -0
  844. data/test/core/time/test_round_to.rb +28 -0
  845. data/test/core/time/test_set.rb +39 -0
  846. data/test/core/time/test_stamp.rb +19 -14
  847. data/test/core/time/test_to_time.rb +5 -6
  848. data/test/core/time/test_trunc.rb +13 -16
  849. data/test/core/to_hash_tc.rb +163 -0
  850. data/test/core/unboundmethod/test_arguments.rb +8 -8
  851. data/test/core/unboundmethod/test_name.rb +6 -6
  852. data/test/more/test_argvector.rb +27 -27
  853. data/test/more/test_date.rb +28 -32
  854. data/test/more/test_memoizable.rb +38 -0
  855. data/test/more/test_multipliers.rb +45 -48
  856. data/test/more/test_ostruct.rb +91 -93
  857. data/test/more/test_random.rb +97 -90
  858. data/test/more/test_shellwords.rb +46 -11
  859. data/test/more/test_thread.rb +8 -9
  860. data/test/more/test_timer.rb +17 -32
  861. data/test/more/test_tuple.rb +29 -23
  862. data/test/more/test_uri.rb +10 -13
  863. data/test/tour/array/test_median.rb +10 -0
  864. data/test/tour/array/test_percentile.rb +10 -0
  865. data/test/tour/class/test_preallocate.rb +27 -0
  866. data/test/tour/module/test_cattr.rb +45 -0
  867. data/test/tour/module/test_class_extend.rb +66 -0
  868. data/test/tour/module/test_class_inheritor.rb +148 -0
  869. data/test/tour/module/test_copy_inheritor.rb +32 -0
  870. data/test/tour/module/test_enclosure.rb +20 -0
  871. data/test/tour/module/test_instance_function.rb +26 -0
  872. data/test/tour/module/test_memoize.rb +30 -0
  873. data/test/tour/module/test_method_space.rb +64 -0
  874. data/test/tour/module/test_module_load.rb +19 -0
  875. data/test/tour/module/test_prepend.rb +24 -0
  876. metadata +658 -278
  877. data/NOTES +0 -143
  878. data/demo/hook.rdoc +0 -49
  879. data/demo/scenario_require.rdoc +0 -7
  880. data/lib/core/facets-live.rb +0 -19
  881. data/lib/core/facets-load.rb +0 -12
  882. data/lib/core/facets/array/recursive.rb +0 -91
  883. data/lib/core/facets/array/stackable.rb +0 -33
  884. data/lib/core/facets/blank.rb +0 -60
  885. data/lib/core/facets/cattr.rb +0 -2
  886. data/lib/core/facets/class/cattr.rb +0 -112
  887. data/lib/core/facets/class/cattr_accessor.rb +0 -1
  888. data/lib/core/facets/class/cattr_reader.rb +0 -1
  889. data/lib/core/facets/class/cattr_writer.rb +0 -1
  890. data/lib/core/facets/class/descendents.rb +0 -1
  891. data/lib/core/facets/comparable/comparable.rb +0 -42
  892. data/lib/core/facets/duplicable.rb +0 -32
  893. data/lib/core/facets/enumerable/collisions.rb +0 -1
  894. data/lib/core/facets/enumerable/divide.rb +0 -33
  895. data/lib/core/facets/enumerable/duplicates.rb +0 -38
  896. data/lib/core/facets/enumerable/mode.rb +0 -16
  897. data/lib/core/facets/enumerable/recursive.rb +0 -75
  898. data/lib/core/facets/file/read.rb +0 -41
  899. data/lib/core/facets/hash/group_by_value.rb +0 -65
  900. data/lib/core/facets/hash/recursive.rb +0 -180
  901. data/lib/core/facets/hash/to_module.rb +0 -26
  902. data/lib/core/facets/kernel/__here__.rb +0 -14
  903. data/lib/core/facets/kernel/populate.rb +0 -2
  904. data/lib/core/facets/kernel/require_local.rb +0 -31
  905. data/lib/core/facets/kernel/resc.rb +0 -16
  906. data/lib/core/facets/kernel/set_from.rb +0 -2
  907. data/lib/core/facets/module/conflict.rb +0 -62
  908. data/lib/core/facets/module/instance_methods.rb +0 -38
  909. data/lib/core/facets/module/modspace.rb +0 -22
  910. data/lib/core/facets/module/module_require.rb +0 -1
  911. data/lib/core/facets/module/nesting.rb +0 -18
  912. data/lib/core/facets/stackable.rb +0 -86
  913. data/lib/core/facets/string/chars.rb +0 -20
  914. data/lib/core/facets/symbol/re_s.rb +0 -18
  915. data/lib/core/facets/time/advance.rb +0 -18
  916. data/lib/core/facets/time/round.rb +0 -17
  917. data/lib/more/facets/ansicode.rb +0 -306
  918. data/lib/more/facets/autoarray.rb +0 -34
  919. data/lib/more/facets/autoreload.rb +0 -150
  920. data/lib/more/facets/blankslate.rb +0 -10
  921. data/lib/more/facets/casting_hash.rb +0 -172
  922. data/lib/more/facets/class_extend.rb +0 -126
  923. data/lib/more/facets/cloneable.rb +0 -76
  924. data/lib/more/facets/daemonize.rb +0 -44
  925. data/lib/more/facets/dictionary.rb +0 -430
  926. data/lib/more/facets/duration.rb +0 -286
  927. data/lib/more/facets/enumargs.rb +0 -192
  928. data/lib/more/facets/equitable.rb +0 -120
  929. data/lib/more/facets/expirable.rb +0 -54
  930. data/lib/more/facets/filelist.rb +0 -497
  931. data/lib/more/facets/hashbuilder.rb +0 -101
  932. data/lib/more/facets/hook.rb +0 -38
  933. data/lib/more/facets/ini.rb +0 -267
  934. data/lib/more/facets/instantiable.rb +0 -47
  935. data/lib/more/facets/linkedlist.rb +0 -195
  936. data/lib/more/facets/matcher.rb +0 -140
  937. data/lib/more/facets/memoize.rb +0 -1
  938. data/lib/more/facets/memoizer.rb +0 -64
  939. data/lib/more/facets/methodspace.rb +0 -146
  940. data/lib/more/facets/module/attr.rb +0 -83
  941. data/lib/more/facets/module/attr_toggler.rb +0 -59
  942. data/lib/more/facets/module/class_extend.rb +0 -3
  943. data/lib/more/facets/once.rb +0 -59
  944. data/lib/more/facets/opencascade.rb +0 -94
  945. data/lib/more/facets/opencollection.rb +0 -43
  946. data/lib/more/facets/openhash.rb +0 -39
  947. data/lib/more/facets/openmodule.rb +0 -16
  948. data/lib/more/facets/openobject.rb +0 -267
  949. data/lib/more/facets/orderedhash.rb +0 -5
  950. data/lib/more/facets/ostructable.rb +0 -209
  951. data/lib/more/facets/pathlist.rb +0 -105
  952. data/lib/more/facets/preinitialize.rb +0 -157
  953. data/lib/more/facets/prepend.rb +0 -57
  954. data/lib/more/facets/rbsystem.rb +0 -222
  955. data/lib/more/facets/registerable.rb +0 -35
  956. data/lib/more/facets/semaphore.rb +0 -92
  957. data/lib/more/facets/stash.rb +0 -181
  958. data/lib/more/facets/succ.rb +0 -44
  959. data/lib/more/facets/version.rb +0 -136
  960. data/meta/authors +0 -1
  961. data/meta/collection +0 -1
  962. data/meta/contact +0 -1
  963. data/meta/contributors +0 -48
  964. data/meta/created +0 -1
  965. data/meta/description +0 -13
  966. data/meta/homepage +0 -1
  967. data/meta/license +0 -1
  968. data/meta/loadpath +0 -2
  969. data/meta/name +0 -1
  970. data/meta/released +0 -1
  971. data/meta/repository +0 -1
  972. data/meta/sitemap +0 -4
  973. data/meta/slogan +0 -1
  974. data/meta/summary +0 -1
  975. data/meta/version +0 -1
  976. data/script/conflicts +0 -63
  977. data/script/methods +0 -49
  978. data/test/core/array/test_indexable.rb +0 -118
  979. data/test/core/array/test_recursive.rb +0 -18
  980. data/test/core/array/test_stackable.rb +0 -22
  981. data/test/core/binding/test_opvars.rb +0 -24
  982. data/test/core/class/test_cattr.rb +0 -47
  983. data/test/core/class/test_cattr_accessor.rb +0 -2
  984. data/test/core/class/test_cattr_reader.rb +0 -1
  985. data/test/core/class/test_cattr_writer.rb +0 -1
  986. data/test/core/enumerable/test_commonality.rb +0 -15
  987. data/test/core/enumerable/test_entropy.rb +0 -15
  988. data/test/core/enumerable/test_inject.rb +0 -18
  989. data/test/core/enumerable/test_probability.rb +0 -11
  990. data/test/core/enumerable/test_recursive.rb +0 -18
  991. data/test/core/enumerable/test_split.rb +0 -19
  992. data/test/core/exception/test_exception.rb +0 -17
  993. data/test/core/file/test_file.rb +0 -85
  994. data/test/core/filetest/test_filetest.rb +0 -10
  995. data/test/core/hash/test_delete.rb +0 -28
  996. data/test/core/hash/test_mash.rb +0 -20
  997. data/test/core/hash/test_merge.rb +0 -14
  998. data/test/core/hash/test_op.rb +0 -1
  999. data/test/core/hash/test_recursive.rb +0 -23
  1000. data/test/core/hash/test_to_module.rb +0 -21
  1001. data/test/core/integer/test_length.rb +0 -12
  1002. data/test/core/kernel/test_deepcopy.rb +0 -27
  1003. data/test/core/kernel/test_resc.rb +0 -12
  1004. data/test/core/module/test_conflict.rb +0 -24
  1005. data/test/core/module/test_modspace.rb +0 -13
  1006. data/test/core/module/test_nesting.rb +0 -21
  1007. data/test/core/module/test_prepend.rb +0 -29
  1008. data/test/core/string/test_chars.rb +0 -12
  1009. data/test/core/string/test_outdent.rb +0 -65
  1010. data/test/core/test_blank.rb +0 -12
  1011. data/test/core/test_boolean.rb +0 -89
  1012. data/test/core/test_functor.rb +0 -26
  1013. data/test/core/test_metaid.rb +0 -39
  1014. data/test/core/test_to_hash.rb +0 -244
  1015. data/test/core/time/test_round.rb +0 -31
  1016. data/test/more/test_ansicode.rb +0 -20
  1017. data/test/more/test_autoarray.rb +0 -18
  1018. data/test/more/test_basicobject.rb +0 -34
  1019. data/test/more/test_class_extend.rb +0 -64
  1020. data/test/more/test_cloneable.rb +0 -41
  1021. data/test/more/test_continuation.rb +0 -15
  1022. data/test/more/test_dictionary.rb +0 -145
  1023. data/test/more/test_enumargs.rb +0 -70
  1024. data/test/more/test_equitable.rb +0 -42
  1025. data/test/more/test_getoptlong.rb +0 -26
  1026. data/test/more/test_inheritor.rb +0 -148
  1027. data/test/more/test_instance_function.rb +0 -31
  1028. data/test/more/test_instantiable.rb +0 -37
  1029. data/test/more/test_memoize.rb +0 -38
  1030. data/test/more/test_methodspace.rb +0 -78
  1031. data/test/more/test_multiton.rb +0 -184
  1032. data/test/more/test_opencascade.rb +0 -61
  1033. data/test/more/test_openobject.rb +0 -112
  1034. data/test/more/test_partial.rb +0 -27
  1035. data/test/more/test_prepend.rb +0 -28
  1036. data/test/more/test_succ.rb +0 -35
data/NOTES DELETED
@@ -1,143 +0,0 @@
1
- = Facets Development Notes
2
-
3
- This is a record of some musings along the way in the creatiojn of
4
- Facets. It is not in any way all that important. Its' simply here
5
- to give some historical context to development and to provide and
6
- cues for recollection.
7
-
8
- == Testing Rails with Facets Loaded
9
-
10
- Add this to Rails' Rakefile:
11
-
12
- task 'test:facets' do
13
- require 'activesupport'
14
- require 'facets'
15
- Rake::Task['test'].invoke
16
- end
17
-
18
- Run 'rake test:facets'.
19
-
20
- == On the Name "Ruby Facets"
21
-
22
- A lot of mental anguish went into finding this good project name Ruby Facets. Of course, in the end only one name can take the honor. Other good names which were considered: Calibre, Florida and California, Warchest w/ Atomix, Downs & Ace, Trix & Atomx and even Pillbox & Pills (a _why suggestion). Then the names that almost won out and were used for a good while: Nano Methods and Mega Modules --great names but a little too "fad". Finally let's not forget even older "working" titles that were used along the way: Raspberry, ABC, Succ and the very original Tomslib.
23
-
24
- == Features that May Return
25
-
26
- [EXTACTED FROM README]
27
-
28
- It is possible to eliminate the need for the 'facets/' prefix on requires if the Facets libpaths are added to the LOAD_PATH. But this isn't as straight-forward as it is for most libraries b/c of the layout of Facets library.
29
-
30
- require 'facets-topload'
31
- require 'basicobject'
32
-
33
- Understand that on the off chance that another library has the same name as one of Facets' everything will still work fine. You will just not be able to use the prefixless shortcut to require it.
34
-
35
- == Some convesion extemnsions that turned out to be bad.
36
-
37
- class Symbol
38
-
39
- # Same functionality as before, just a touch more efficient.
40
- #
41
- #--
42
- # CHANGE transami@gmail.com - removed #freeze from #id2name
43
- # BAD BAD. Somehow it breaks things. Very weired breaks too,
44
- # like making Time#parse alwsy output Time.now _after_ first use.
45
- #++
46
-
47
- def to_s
48
- @to_s || (@to_s = id2name)
49
- end
50
-
51
- # Symbol's really are just simplified strings.
52
- # Thus #to_str seems quite reasonable.
53
- # This uses the Kernal#String method.
54
- #--
55
- # Maybe just change to #to_s?
56
- # BTW: This would be lots faster, I bet, if implemented in core.
57
- #
58
- # NOTE This causes Struct.new to bomb!
59
- #++
60
-
61
- def to_str
62
- String( self )
63
- end
64
-
65
- end
66
-
67
- == String#to_a extension is too dangerous
68
-
69
- class String
70
-
71
- # Essentially makes #to_a an alias for split,
72
- # with the exception that if no divider is given
73
- # then the array is split on charaters, and
74
- # NOT on the global input record divider ($/).
75
- #
76
- # WARNING There is a slight chance of
77
- # incompatability with other libraries which
78
- # depend on spliting with $/ (although doing
79
- # so is a very bad idea!).
80
-
81
- #def to_a(div=//,limit=0)
82
- # split(div,limit)
83
- #end
84
-
85
- end
86
-
87
- == Lazy Enumerator
88
-
89
- Brian Candler provided his Filter class.
90
-
91
- Originally he had suggested to the Ruby community the idea l-methods for Enumerable.
92
- Eg. lmap, lselect, etc.
93
-
94
- == On <i>instance_</i> Methods
95
-
96
- Kernel extension prefixed by instance_ which provide
97
- internal (eg private) access to the object.
98
- Kernel extension using instance_ prefix which is beneficial
99
- to separation of metaprogramming from general programming.
100
- object_ methods, in contrast to the instance_ methods,
101
- do not access internal state.
102
-
103
-
104
- == On <i>object_</i> Methods
105
-
106
- I was considering this core addition to Facets:
107
-
108
- module Kernel
109
- alias_method :object_dup, :dup
110
- alias_method :object_clone, :clone
111
- end
112
-
113
- Already Facets has #object_class. The method goes along with #object_id
114
- and serves to stay out of the programmers way. Of course, since 'class'
115
- is a keyword in Ruby, it doesn't help as much. However, mwhen using
116
- method_missing one can exclude all object_* methods from removal so
117
- as to still have access to these important introspective methods. That's
118
- what I have traditionally done. Essentially,
119
-
120
- private *instance_methods.select{ |m| m !~ /^(__|instance_|object__)/ }
121
-
122
- With the advent of 1.9 and BasicObject, this is no longer as important,
123
- but BasicObject leaves us in a bit of a lurch, b/c it removes nearly
124
- everything leaving us no recourse to these methods. I can think of two
125
- good solutions: 1) Have some global "methods" that can handle objects
126
- at a higher level of abstraction. These can be defined as lambdas and
127
- called using#[], eg.
128
-
129
- $class[x]
130
- $id[x]
131
- $dup[x]
132
-
133
- The other is to define a special method, perhaps #object, using fluent
134
- notaiton, we could handle this in a more object-oritented fashion:
135
-
136
- x.object.class
137
- x.object.id
138
- x.object.dup
139
-
140
- In anycase, whatever might come along to provide this functionality, it
141
- is clear that "object_" methods will not be the solution, and for
142
- that reason #object_dup and #object_clone will never be facets.
143
-
@@ -1,49 +0,0 @@
1
- = Hook Library
2
-
3
- Require the hook.rb library.
4
-
5
- require 'facets/hook'
6
-
7
- Build a class with signals.
8
-
9
- class X
10
- include Hook
11
-
12
- def course
13
- @course ||= []
14
- end
15
-
16
- hook :signal
17
-
18
- def boom(event, message)
19
- course << "Kaboom!"
20
- end
21
-
22
- signal do |event, message|
23
- course << ["1", event, message]
24
- end
25
-
26
- signal do |event, message|
27
- course << ["2", event, message]
28
- end
29
-
30
- signal :boom
31
-
32
- end
33
-
34
- Triger the signal.
35
-
36
- x = X.new
37
- x.signal("hi")
38
-
39
- The hooks should have been fired.
40
-
41
- x.course[0].should == ["1", :signal, "hi"]
42
- x.course[1].should == ["2", :signal, "hi"]
43
- x.course[2].should == "Kaboom!"
44
- x.course[3].should == nil
45
-
46
- QED.
47
-
48
- ---
49
- require 'ae/should'
@@ -1,7 +0,0 @@
1
- = Requiring Facets
2
-
3
- We should be able to require all the core libraries
4
- by simply:
5
-
6
- require 'facets'
7
-
@@ -1,19 +0,0 @@
1
- require 'facets/opesc'
2
-
3
- class Object
4
-
5
- # This will automatically load (most) core methods
6
- # if they are not present when called.
7
-
8
- def method_missing(methodname, *a, &b)
9
- methodname = OpEsc.escape(methodname)
10
- begin
11
- require "facets/#{class}/#{methodname}"
12
- __send__(methodname, *a, &b)
13
- rescue LoadError
14
- super
15
- end
16
- end
17
-
18
- end
19
-
@@ -1,12 +0,0 @@
1
- # This simply adds core/facets to the load path so
2
- # that you can more easily cherry pick methods,
3
- # if that's how you prefer to use facets.
4
- #
5
- # Ex.
6
- #
7
- # require 'facets-load'
8
- # require 'kernel/with'
9
- # require 'symbol/to_proc'
10
- #
11
- $LOAD_PATH << FILE.dirname(__FILE__) + '/core/facets'
12
-
@@ -1,91 +0,0 @@
1
- require 'facets/enumerable/recursive'
2
-
3
- class Array
4
-
5
- # Apply a block to array, and recursively apply that block
6
- # to each subarray.
7
- #
8
- # arr = ["a", ["b", "c", nil], nil]
9
- # arr.recursively{|a| a.compact! }
10
- # => ["a", ["b", "c"]]
11
- #
12
- def recursive(opts={}, &block)
13
- if block
14
- a = inject([]) do |array, value|
15
- if value.is_a?(Array)
16
- array << value.recursive(&block)
17
- else
18
- array << value
19
- end
20
- array
21
- end
22
- yield a
23
- else
24
- Recursor.new(self, opts)
25
- end
26
- end
27
-
28
- # In place form of #recursive.
29
-
30
- def recursive!(&block)
31
- r = recursive(&block)
32
- raise TypeError unless Array === r
33
- replace(r)
34
- end
35
-
36
-
37
- #
38
- class Recursor < ::Enumerable::Recursor
39
-
40
- # Recursively iterate over the Array's elements.
41
- # If an element is an Array or responds to #to_ary
42
- # then it will be itereated over as well.
43
- #
44
- def each(&block)
45
- if block_given?
46
- @enum.each do |e|
47
- if Array === e || e.respond_to?(:to_ary)
48
- e.to_ary.recursive.each(&block)
49
- else
50
- block.call(e)
51
- end
52
- end
53
- else
54
- to_enum(:each)
55
- end
56
- end
57
-
58
- # Returns a new array created by traversing the array and its
59
- # sub-arrays, executing the given block on the elements.
60
- #
61
- # h = ["A", "B", ["X", "Y"]]
62
- #
63
- # g = h.recursive.map{ |e| e.downcase }
64
- #
65
- # g = ["a", "b", ["x", "y"]]
66
- #
67
- # CREDIT: Trans
68
-
69
- def map(&block)
70
- if block_given?
71
- @enum.map do |e|
72
- if Array === e || e.respond_to?(:to_ary)
73
- e.to_ary.recursive.map(&block)
74
- else
75
- block.call(e)
76
- end
77
- end
78
- else
79
- to_enum(:map)
80
- end
81
- end
82
-
83
- # Like #map, but will change the array in place.
84
-
85
- def map!(&block)
86
- replace(map(&block))
87
- end
88
-
89
- end
90
-
91
- end
@@ -1,33 +0,0 @@
1
- require 'facets/array/splice'
2
- require 'facets/stackable'
3
-
4
- class Array
5
-
6
- include Stackable
7
-
8
- # "Put On Top". This is an alias for unshift
9
- # which puts an object# on top of the stack.
10
- # It is the converse of push.
11
- #
12
- # a=[1,2,3]
13
- # a.poke(9) #=> [9,1,2,3]
14
- # a #=> [9,1,2,3]
15
- #
16
- # CREDIT: Trans
17
-
18
- alias_method :poke, :unshift
19
-
20
- # Alias for shift which removes an object
21
- # off first slot of an array. This is
22
- # the contrary of pop.
23
- #
24
- # a=[1,2,3]
25
- # a.pull #=> 1
26
- # a #=> [2,3]
27
- #
28
- # CREDIT: Trans
29
-
30
- alias_method :pull, :shift
31
-
32
- end
33
-
@@ -1,60 +0,0 @@
1
- # = Blank
2
- #
3
- # Core extension method #blank? added to core clesses.
4
-
5
- #
6
- module Kernel
7
- # An object is blank if it's nil, empty, or a whitespace string.
8
- # For example, "", " ", nil, [], and {} are blank.
9
- #
10
- # This simplifies
11
- # if !address.nil? && !address.empty?
12
- # to
13
- # if !address.blank?
14
- def blank?
15
- respond_to?(:empty?) ? empty? : !self
16
- end
17
- end
18
-
19
- class NilClass
20
- def blank?
21
- true
22
- end
23
- end
24
-
25
- class FalseClass
26
- def blank?
27
- true
28
- end
29
- end
30
-
31
- class TrueClass
32
- def blank?
33
- false
34
- end
35
- end
36
-
37
- class Array
38
- alias_method :blank?, :empty?
39
- end
40
-
41
- class Hash
42
- alias_method :blank?, :empty?
43
- end
44
-
45
- class String
46
- # Is this string just whitespace?
47
- #
48
- # "abc".blank? #=> false
49
- # " ".blank? #=> true
50
- def blank?
51
- self !~ /\S/
52
- end
53
- end
54
-
55
- class Numeric
56
- def blank?
57
- false
58
- end
59
- end
60
-
@@ -1,2 +0,0 @@
1
- # TO BE DEPRECATED
2
- require 'facets/class/cattr'
@@ -1,112 +0,0 @@
1
- class Class
2
-
3
- # Creates a class-variable attribute that can
4
- # be accessed both on an instance and class level.
5
- #
6
- # NOTE This used to be a Module method. But turns out
7
- # it does not work as expected when included. The class-level
8
- # method is not carried along. So it is now just a Class
9
- # method. Accordingly, #mattr has been deprecated.
10
- #
11
- # CREDIT: David Heinemeier Hansson
12
- def cattr( *syms )
13
- writers, readers = syms.flatten.partition{ |a| a.to_s =~ /=$/ }
14
- writers = writers.collect{ |e| e.to_s.chomp('=').to_sym }
15
- readers.concat( writers ) # writers also get readers
16
- cattr_writer( *writers )
17
- cattr_reader( *readers )
18
- return readers + writers
19
- end
20
-
21
- # Creates a class-variable attr_reader that can
22
- # be accessed both on an instance and class level.
23
- #
24
- # class MyClass
25
- # @@a = 10
26
- # cattr_reader :a
27
- # end
28
- #
29
- # MyClass.a #=> 10
30
- # MyClass.new.a #=> 10
31
- #
32
- # CREDIT: David Heinemeier Hansson
33
- def cattr_reader( *syms )
34
- syms.flatten.each do |sym|
35
- class_eval(<<-EOS, __FILE__, __LINE__)
36
- unless defined? @@#{sym}
37
- @@#{sym} = nil
38
- end
39
-
40
- def self.#{sym}
41
- @@#{sym}
42
- end
43
-
44
- def #{sym}
45
- @@#{sym}
46
- end
47
- EOS
48
- end
49
- return syms
50
- end
51
-
52
- # Creates a class-variable attr_writer that can
53
- # be accessed both on an instance and class level.
54
- #
55
- # class MyClass
56
- # cattr_writer :a
57
- # def a
58
- # @@a
59
- # end
60
- # end
61
- #
62
- # MyClass.a = 10
63
- # MyClass.a #=> 10
64
- # MyClass.new.a = 29
65
- # MyClass.a #=> 29
66
- #
67
- # CREDIT: David Heinemeier Hansson
68
- def cattr_writer(*syms)
69
- syms.flatten.each do |sym|
70
- class_eval(<<-EOS, __FILE__, __LINE__)
71
- unless defined? @@#{sym}
72
- @@#{sym} = nil
73
- end
74
-
75
- def self.#{sym}=(obj)
76
- @@#{sym} = obj
77
- end
78
-
79
- def #{sym}=(obj)
80
- @@#{sym}=(obj)
81
- end
82
- EOS
83
- end
84
- return syms
85
- end
86
-
87
- # Creates a class-variable attr_accessor that can
88
- # be accessed both on an instance and class level.
89
- #
90
- # class MyClass
91
- # cattr_accessor :a
92
- # end
93
- #
94
- # MyClass.a = 10
95
- # MyClass.a #=> 10
96
- # mc = MyClass.new
97
- # mc.a #=> 10
98
- #
99
- # CREDIT: David Heinemeier Hansson
100
- def cattr_accessor(*syms)
101
- cattr_reader(*syms) + cattr_writer(*syms)
102
- end
103
-
104
- end
105
-
106
- # Not properly applicable to modules, so these have been deprecated.
107
- #class Module
108
- #alias_method :mattr, :cattr # deprecate
109
- #alias_method :mattr_reader, :cattr_reader # deprecate
110
- #alias_method :mattr_writer, :cattr_writer # deprecate
111
- #alias_method :mattr_accessor, :cattr_accessor # deprecate
112
- #end