facets 1.8.49 → 1.8.51

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 (554) hide show
  1. data/PROJECT +4 -1
  2. data/Rakefile +25 -48
  3. data/VERSION +1 -1
  4. data/doc/AUTHORS +1 -0
  5. data/doc/CHANGES +6 -0
  6. data/lib/facets/core/kernel/tap.rb +33 -3
  7. data/lib/facets/more/command.rb +507 -271
  8. metadata +2 -548
  9. data/test/lib/facets/core/array/test_at_rand.rb +0 -34
  10. data/test/lib/facets/core/array/test_delete_unless.rb +0 -28
  11. data/test/lib/facets/core/array/test_delete_values.rb +0 -28
  12. data/test/lib/facets/core/array/test_delete_values_at.rb +0 -31
  13. data/test/lib/facets/core/array/test_first.rb +0 -46
  14. data/test/lib/facets/core/array/test_head.rb +0 -42
  15. data/test/lib/facets/core/array/test_last_index.rb +0 -26
  16. data/test/lib/facets/core/array/test_merge.rb +0 -35
  17. data/test/lib/facets/core/array/test_mid.rb +0 -33
  18. data/test/lib/facets/core/array/test_middle.rb +0 -29
  19. data/test/lib/facets/core/array/test_op_div.rb +0 -27
  20. data/test/lib/facets/core/array/test_op_fetch.rb +0 -35
  21. data/test/lib/facets/core/array/test_pad.rb +0 -48
  22. data/test/lib/facets/core/array/test_pick.rb +0 -40
  23. data/test/lib/facets/core/array/test_pos.rb +0 -28
  24. data/test/lib/facets/core/array/test_pot.rb +0 -28
  25. data/test/lib/facets/core/array/test_pull.rb +0 -28
  26. data/test/lib/facets/core/array/test_rand_index.rb +0 -29
  27. data/test/lib/facets/core/array/test_rand_subset.rb +0 -29
  28. data/test/lib/facets/core/array/test_range.rb +0 -32
  29. data/test/lib/facets/core/array/test_rotate.rb +0 -36
  30. data/test/lib/facets/core/array/test_select.rb +0 -28
  31. data/test/lib/facets/core/array/test_shuffle.rb +0 -35
  32. data/test/lib/facets/core/array/test_thru.rb +0 -27
  33. data/test/lib/facets/core/array/test_to_b.rb +0 -27
  34. data/test/lib/facets/core/array/test_to_h.rb +0 -33
  35. data/test/lib/facets/core/array/test_to_hash.rb +0 -27
  36. data/test/lib/facets/core/binding/self/test_of_caller.rb +0 -35
  37. data/test/lib/facets/core/binding/test___LINE__.rb +0 -43
  38. data/test/lib/facets/core/binding/test_call_stack.rb +0 -34
  39. data/test/lib/facets/core/binding/test_called.rb +0 -30
  40. data/test/lib/facets/core/binding/test_caller.rb +0 -35
  41. data/test/lib/facets/core/binding/test_defined.rb +0 -34
  42. data/test/lib/facets/core/binding/test_eval.rb +0 -34
  43. data/test/lib/facets/core/binding/test_local_variables.rb +0 -34
  44. data/test/lib/facets/core/binding/test_method_name.rb +0 -34
  45. data/test/lib/facets/core/binding/test_op_fetch.rb +0 -34
  46. data/test/lib/facets/core/binding/test_op_store.rb +0 -35
  47. data/test/lib/facets/core/binding/test_self.rb +0 -34
  48. data/test/lib/facets/core/class/test_cattr.rb +0 -63
  49. data/test/lib/facets/core/class/test_descendents.rb +0 -30
  50. data/test/lib/facets/core/class/test_method_name.rb +0 -26
  51. data/test/lib/facets/core/class/test_remove_descendents.rb +0 -32
  52. data/test/lib/facets/core/class/test_unix_path.rb +0 -26
  53. data/test/lib/facets/core/comparable/test_at_least.rb +0 -34
  54. data/test/lib/facets/core/comparable/test_clip.rb +0 -44
  55. data/test/lib/facets/core/comparable/test_cmp.rb +0 -28
  56. data/test/lib/facets/core/continuation/self/test_create.rb +0 -26
  57. data/test/lib/facets/core/date/test_days_in_month.rb +0 -30
  58. data/test/lib/facets/core/date/test_days_of_month.rb +0 -30
  59. data/test/lib/facets/core/date/test_stamp.rb +0 -38
  60. data/test/lib/facets/core/date/test_to_date.rb +0 -30
  61. data/test/lib/facets/core/date/test_to_s.rb +0 -30
  62. data/test/lib/facets/core/date/test_to_time.rb +0 -30
  63. data/test/lib/facets/core/dir/self/test_ancestor.rb +0 -26
  64. data/test/lib/facets/core/dir/self/test_ascend.rb +0 -41
  65. data/test/lib/facets/core/enumerable/self/test_combinations.rb +0 -46
  66. data/test/lib/facets/core/enumerable/test_cart.rb +0 -49
  67. data/test/lib/facets/core/enumerable/test_collect_with_index.rb +0 -27
  68. data/test/lib/facets/core/enumerable/test_commonality.rb +0 -31
  69. data/test/lib/facets/core/enumerable/test_compact_collect.rb +0 -27
  70. data/test/lib/facets/core/enumerable/test_count.rb +0 -38
  71. data/test/lib/facets/core/enumerable/test_each_by.rb +0 -71
  72. data/test/lib/facets/core/enumerable/test_each_combination.rb +0 -29
  73. data/test/lib/facets/core/enumerable/test_each_pair.rb +0 -29
  74. data/test/lib/facets/core/enumerable/test_each_slice.rb +0 -57
  75. data/test/lib/facets/core/enumerable/test_each_unique_pair.rb +0 -29
  76. data/test/lib/facets/core/enumerable/test_eachn.rb +0 -34
  77. data/test/lib/facets/core/enumerable/test_elementwise.rb +0 -40
  78. data/test/lib/facets/core/enumerable/test_entropy.rb +0 -26
  79. data/test/lib/facets/core/enumerable/test_every.rb +0 -35
  80. data/test/lib/facets/core/enumerable/test_ew.rb +0 -31
  81. data/test/lib/facets/core/enumerable/test_filter_collect.rb +0 -31
  82. data/test/lib/facets/core/enumerable/test_find_collisions.rb +0 -30
  83. data/test/lib/facets/core/enumerable/test_frequency.rb +0 -27
  84. data/test/lib/facets/core/enumerable/test_graph.rb +0 -30
  85. data/test/lib/facets/core/enumerable/test_ideal_entropy.rb +0 -27
  86. data/test/lib/facets/core/enumerable/test_none.rb +0 -33
  87. data/test/lib/facets/core/enumerable/test_occur.rb +0 -30
  88. data/test/lib/facets/core/enumerable/test_one.rb +0 -35
  89. data/test/lib/facets/core/enumerable/test_op_pow.rb +0 -27
  90. data/test/lib/facets/core/enumerable/test_op_tilde_self.rb +0 -40
  91. data/test/lib/facets/core/enumerable/test_partition_by.rb +0 -31
  92. data/test/lib/facets/core/enumerable/test_permutation.rb +0 -29
  93. data/test/lib/facets/core/enumerable/test_probability.rb +0 -27
  94. data/test/lib/facets/core/enumerable/test_to_h.rb +0 -27
  95. data/test/lib/facets/core/enumerable/test_uniq_by.rb +0 -28
  96. data/test/lib/facets/core/file/self/test_create.rb +0 -44
  97. data/test/lib/facets/core/file/self/test_open_as_string.rb +0 -50
  98. data/test/lib/facets/core/file/self/test_read_list.rb +0 -40
  99. data/test/lib/facets/core/file/self/test_sanitize.rb +0 -46
  100. data/test/lib/facets/core/file/self/test_split_all.rb +0 -27
  101. data/test/lib/facets/core/float/test_round_at.rb +0 -46
  102. data/test/lib/facets/core/float/test_round_to.rb +0 -46
  103. data/test/lib/facets/core/hash/self/test_zipnew.rb +0 -28
  104. data/test/lib/facets/core/hash/test_alias.rb +0 -31
  105. data/test/lib/facets/core/hash/test_assert_has_keys.rb +0 -27
  106. data/test/lib/facets/core/hash/test_assert_has_only_keys.rb +0 -27
  107. data/test/lib/facets/core/hash/test_at.rb +0 -28
  108. data/test/lib/facets/core/hash/test_collate.rb +0 -35
  109. data/test/lib/facets/core/hash/test_each_with_index.rb +0 -29
  110. data/test/lib/facets/core/hash/test_each_with_key.rb +0 -29
  111. data/test/lib/facets/core/hash/test_graph.rb +0 -28
  112. data/test/lib/facets/core/hash/test_has_keys.rb +0 -27
  113. data/test/lib/facets/core/hash/test_has_only_keys.rb +0 -27
  114. data/test/lib/facets/core/hash/test_inverse.rb +0 -30
  115. data/test/lib/facets/core/hash/test_normalize_keys.rb +0 -34
  116. data/test/lib/facets/core/hash/test_op_fetch.rb +0 -111
  117. data/test/lib/facets/core/hash/test_op_lshift.rb +0 -29
  118. data/test/lib/facets/core/hash/test_rand_key.rb +0 -27
  119. data/test/lib/facets/core/hash/test_rand_pair.rb +0 -27
  120. data/test/lib/facets/core/hash/test_rand_value.rb +0 -27
  121. data/test/lib/facets/core/hash/test_rekey.rb +0 -52
  122. data/test/lib/facets/core/hash/test_replace_each.rb +0 -29
  123. data/test/lib/facets/core/hash/test_shuffle.rb +0 -32
  124. data/test/lib/facets/core/hash/test_slice.rb +0 -27
  125. data/test/lib/facets/core/hash/test_stringify_keys.rb +0 -34
  126. data/test/lib/facets/core/hash/test_swap.rb +0 -27
  127. data/test/lib/facets/core/hash/test_swapkey.rb +0 -29
  128. data/test/lib/facets/core/hash/test_symbolize_keys.rb +0 -34
  129. data/test/lib/facets/core/hash/test_to_h.rb +0 -27
  130. data/test/lib/facets/core/hash/test_to_ostruct.rb +0 -30
  131. data/test/lib/facets/core/hash/test_to_ostruct_recurse.rb +0 -44
  132. data/test/lib/facets/core/hash/test_traverse.rb +0 -37
  133. data/test/lib/facets/core/hash/test_update_each.rb +0 -29
  134. data/test/lib/facets/core/hash/test_update_keys.rb +0 -28
  135. data/test/lib/facets/core/hash/test_update_values.rb +0 -28
  136. data/test/lib/facets/core/hash/test_weave.rb +0 -29
  137. data/test/lib/facets/core/integer/test_factorial.rb +0 -30
  138. data/test/lib/facets/core/integer/test_multiple.rb +0 -43
  139. data/test/lib/facets/core/integer/test_of.rb +0 -28
  140. data/test/lib/facets/core/integer/test_ordinal.rb +0 -29
  141. data/test/lib/facets/core/integer/test_times_collect.rb +0 -28
  142. data/test/lib/facets/core/kernel/test___class__.rb +0 -26
  143. data/test/lib/facets/core/kernel/test_as.rb +0 -42
  144. data/test/lib/facets/core/kernel/test_assign_from.rb +0 -31
  145. data/test/lib/facets/core/kernel/test_assign_with.rb +0 -31
  146. data/test/lib/facets/core/kernel/test_bool.rb +0 -41
  147. data/test/lib/facets/core/kernel/test_bug.rb +0 -26
  148. data/test/lib/facets/core/kernel/test_call_stack.rb +0 -26
  149. data/test/lib/facets/core/kernel/test_called.rb +0 -26
  150. data/test/lib/facets/core/kernel/test_callee.rb +0 -26
  151. data/test/lib/facets/core/kernel/test_constant.rb +0 -33
  152. data/test/lib/facets/core/kernel/test_copy.rb +0 -40
  153. data/test/lib/facets/core/kernel/test_deep_copy.rb +0 -40
  154. data/test/lib/facets/core/kernel/test_demo.rb +0 -28
  155. data/test/lib/facets/core/kernel/test_fn.rb +0 -26
  156. data/test/lib/facets/core/kernel/test_get_by_id.rb +0 -28
  157. data/test/lib/facets/core/kernel/test_here.rb +0 -26
  158. data/test/lib/facets/core/kernel/test_in.rb +0 -27
  159. data/test/lib/facets/core/kernel/test_instance_class.rb +0 -27
  160. data/test/lib/facets/core/kernel/test_instance_exec.rb +0 -58
  161. data/test/lib/facets/core/kernel/test_maybe.rb +0 -26
  162. data/test/lib/facets/core/kernel/test_meta_class.rb +0 -27
  163. data/test/lib/facets/core/kernel/test_metaclass.rb +0 -27
  164. data/test/lib/facets/core/kernel/test_method.rb +0 -32
  165. data/test/lib/facets/core/kernel/test_methods.rb +0 -50
  166. data/test/lib/facets/core/kernel/test_new.rb +0 -30
  167. data/test/lib/facets/core/kernel/test_object_class.rb +0 -26
  168. data/test/lib/facets/core/kernel/test_object_hexid.rb +0 -27
  169. data/test/lib/facets/core/kernel/test_qua_class.rb +0 -27
  170. data/test/lib/facets/core/kernel/test_require_all.rb +0 -26
  171. data/test/lib/facets/core/kernel/test_require_esc.rb +0 -27
  172. data/test/lib/facets/core/kernel/test_resc.rb +0 -27
  173. data/test/lib/facets/core/kernel/test_send_as.rb +0 -26
  174. data/test/lib/facets/core/kernel/test_set_from.rb +0 -33
  175. data/test/lib/facets/core/kernel/test_set_with.rb +0 -42
  176. data/test/lib/facets/core/kernel/test_silently.rb +0 -28
  177. data/test/lib/facets/core/kernel/test_singleton.rb +0 -40
  178. data/test/lib/facets/core/kernel/test_singleton_class.rb +0 -27
  179. data/test/lib/facets/core/kernel/test_super_at.rb +0 -30
  180. data/test/lib/facets/core/kernel/test_supermethod.rb +0 -33
  181. data/test/lib/facets/core/kernel/test_this.rb +0 -26
  182. data/test/lib/facets/core/kernel/test_to_b.rb +0 -28
  183. data/test/lib/facets/core/kernel/test_to_bool.rb +0 -28
  184. data/test/lib/facets/core/kernel/test_to_data.rb +0 -61
  185. data/test/lib/facets/core/kernel/test_uri.rb +0 -30
  186. data/test/lib/facets/core/kernel/test_val.rb +0 -43
  187. data/test/lib/facets/core/kernel/test_with.rb +0 -30
  188. data/test/lib/facets/core/kernel/test_with_accessor.rb +0 -51
  189. data/test/lib/facets/core/matchdata/test_match.rb +0 -29
  190. data/test/lib/facets/core/matchdata/test_matchtree.rb +0 -37
  191. data/test/lib/facets/core/module/self/test_op_add.rb +0 -50
  192. data/test/lib/facets/core/module/test_abstract.rb +0 -36
  193. data/test/lib/facets/core/module/test_alias_method_chain.rb +0 -46
  194. data/test/lib/facets/core/module/test_alias_module_function.rb +0 -34
  195. data/test/lib/facets/core/module/test_ancestor.rb +0 -26
  196. data/test/lib/facets/core/module/test_attr_tester.rb +0 -39
  197. data/test/lib/facets/core/module/test_basename.rb +0 -26
  198. data/test/lib/facets/core/module/test_by_name.rb +0 -29
  199. data/test/lib/facets/core/module/test_class_extension.rb +0 -70
  200. data/test/lib/facets/core/module/test_clone_using.rb +0 -55
  201. data/test/lib/facets/core/module/test_dirname.rb +0 -26
  202. data/test/lib/facets/core/module/test_equate_on.rb +0 -37
  203. data/test/lib/facets/core/module/test_include_as.rb +0 -45
  204. data/test/lib/facets/core/module/test_initializer.rb +0 -32
  205. data/test/lib/facets/core/module/test_instance_methods.rb +0 -59
  206. data/test/lib/facets/core/module/test_integrate.rb +0 -35
  207. data/test/lib/facets/core/module/test_memoize.rb +0 -50
  208. data/test/lib/facets/core/module/test_modspace.rb +0 -27
  209. data/test/lib/facets/core/module/test_namespace.rb +0 -66
  210. data/test/lib/facets/core/module/test_nesting.rb +0 -36
  211. data/test/lib/facets/core/module/test_new.rb +0 -34
  212. data/test/lib/facets/core/module/test_nodef.rb +0 -30
  213. data/test/lib/facets/core/module/test_on_included.rb +0 -36
  214. data/test/lib/facets/core/module/test_redef.rb +0 -30
  215. data/test/lib/facets/core/module/test_redefine_method.rb +0 -30
  216. data/test/lib/facets/core/module/test_redirect.rb +0 -30
  217. data/test/lib/facets/core/module/test_redirect_method.rb +0 -30
  218. data/test/lib/facets/core/module/test_remove.rb +0 -30
  219. data/test/lib/facets/core/module/test_rename.rb +0 -31
  220. data/test/lib/facets/core/module/test_rename_method.rb +0 -31
  221. data/test/lib/facets/core/module/test_revisal.rb +0 -35
  222. data/test/lib/facets/core/module/test_shadow_method.rb +0 -30
  223. data/test/lib/facets/core/module/test_sort_on.rb +0 -42
  224. data/test/lib/facets/core/module/test_this.rb +0 -31
  225. data/test/lib/facets/core/module/test_wrap.rb +0 -30
  226. data/test/lib/facets/core/module/test_wrap_method.rb +0 -30
  227. data/test/lib/facets/core/nilclass/test_blank.rb +0 -26
  228. data/test/lib/facets/core/nilclass/test_empty.rb +0 -26
  229. data/test/lib/facets/core/nilclass/test_include.rb +0 -26
  230. data/test/lib/facets/core/nilclass/test_op_fetch.rb +0 -28
  231. data/test/lib/facets/core/nilclass/test_size.rb +0 -30
  232. data/test/lib/facets/core/nilclass/test_to_h.rb +0 -26
  233. data/test/lib/facets/core/numeric/test_approx.rb +0 -29
  234. data/test/lib/facets/core/numeric/test_ceil_multiple.rb +0 -31
  235. data/test/lib/facets/core/numeric/test_distance.rb +0 -28
  236. data/test/lib/facets/core/numeric/test_succ.rb +0 -40
  237. data/test/lib/facets/core/numeric/test_to_b.rb +0 -27
  238. data/test/lib/facets/core/ostruct/test___update__.rb +0 -45
  239. data/test/lib/facets/core/ostruct/test_instance_delegate.rb +0 -36
  240. data/test/lib/facets/core/ostruct/test_op_fetch.rb +0 -33
  241. data/test/lib/facets/core/proc/test_compose.rb +0 -29
  242. data/test/lib/facets/core/proc/test_op_mul.rb +0 -34
  243. data/test/lib/facets/core/proc/test_to_method.rb +0 -44
  244. data/test/lib/facets/core/range/test_to_r.rb +0 -27
  245. data/test/lib/facets/core/range/test_to_range.rb +0 -27
  246. data/test/lib/facets/core/range/test_umbrella.rb +0 -34
  247. data/test/lib/facets/core/range/test_within.rb +0 -29
  248. data/test/lib/facets/core/regexp/test_arity.rb +0 -33
  249. data/test/lib/facets/core/regexp/test_to_re.rb +0 -27
  250. data/test/lib/facets/core/regexp/test_to_regexp.rb +0 -27
  251. data/test/lib/facets/core/string/self/test_interpolate.rb +0 -27
  252. data/test/lib/facets/core/string/self/test_patterns.rb +0 -28
  253. data/test/lib/facets/core/string/self/test_rand_letter.rb +0 -26
  254. data/test/lib/facets/core/string/test_align_center.rb +0 -34
  255. data/test/lib/facets/core/string/test_at_rand.rb +0 -35
  256. data/test/lib/facets/core/string/test_basename.rb +0 -41
  257. data/test/lib/facets/core/string/test_blank.rb +0 -27
  258. data/test/lib/facets/core/string/test_bracket.rb +0 -49
  259. data/test/lib/facets/core/string/test_bytes.rb +0 -25
  260. data/test/lib/facets/core/string/test_camelcase.rb +0 -39
  261. data/test/lib/facets/core/string/test_camelize.rb +0 -26
  262. data/test/lib/facets/core/string/test_capitalize_all.rb +0 -26
  263. data/test/lib/facets/core/string/test_capitalized.rb +0 -26
  264. data/test/lib/facets/core/string/test_chars.rb +0 -27
  265. data/test/lib/facets/core/string/test_cleave.rb +0 -43
  266. data/test/lib/facets/core/string/test_cmp.rb +0 -30
  267. data/test/lib/facets/core/string/test_demodulize.rb +0 -38
  268. data/test/lib/facets/core/string/test_divide.rb +0 -29
  269. data/test/lib/facets/core/string/test_downcase.rb +0 -26
  270. data/test/lib/facets/core/string/test_dresner.rb +0 -32
  271. data/test/lib/facets/core/string/test_each_char.rb +0 -29
  272. data/test/lib/facets/core/string/test_each_word.rb +0 -29
  273. data/test/lib/facets/core/string/test_first.rb +0 -43
  274. data/test/lib/facets/core/string/test_fold.rb +0 -34
  275. data/test/lib/facets/core/string/test_humanize.rb +0 -26
  276. data/test/lib/facets/core/string/test_indent.rb +0 -40
  277. data/test/lib/facets/core/string/test_index_all.rb +0 -26
  278. data/test/lib/facets/core/string/test_last.rb +0 -46
  279. data/test/lib/facets/core/string/test_line_wrap.rb +0 -27
  280. data/test/lib/facets/core/string/test_lines.rb +0 -26
  281. data/test/lib/facets/core/string/test_lowercase.rb +0 -26
  282. data/test/lib/facets/core/string/test_margin.rb +0 -117
  283. data/test/lib/facets/core/string/test_methodize.rb +0 -27
  284. data/test/lib/facets/core/string/test_modulize.rb +0 -29
  285. data/test/lib/facets/core/string/test_mscan.rb +0 -30
  286. data/test/lib/facets/core/string/test_natcmp.rb +0 -30
  287. data/test/lib/facets/core/string/test_nchar.rb +0 -29
  288. data/test/lib/facets/core/string/test_pathize.rb +0 -29
  289. data/test/lib/facets/core/string/test_pop.rb +0 -47
  290. data/test/lib/facets/core/string/test_pot.rb +0 -39
  291. data/test/lib/facets/core/string/test_push.rb +0 -40
  292. data/test/lib/facets/core/string/test_quote.rb +0 -49
  293. data/test/lib/facets/core/string/test_rand_byte.rb +0 -35
  294. data/test/lib/facets/core/string/test_rand_index.rb +0 -26
  295. data/test/lib/facets/core/string/test_range.rb +0 -27
  296. data/test/lib/facets/core/string/test_range_all.rb +0 -27
  297. data/test/lib/facets/core/string/test_range_of_line.rb +0 -28
  298. data/test/lib/facets/core/string/test_regesc.rb +0 -28
  299. data/test/lib/facets/core/string/test_shatter.rb +0 -29
  300. data/test/lib/facets/core/string/test_shift.rb +0 -40
  301. data/test/lib/facets/core/string/test_shuffle.rb +0 -27
  302. data/test/lib/facets/core/string/test_similarity.rb +0 -26
  303. data/test/lib/facets/core/string/test_singular.rb +0 -86
  304. data/test/lib/facets/core/string/test_soundex.rb +0 -41
  305. data/test/lib/facets/core/string/test_succ.rb +0 -29
  306. data/test/lib/facets/core/string/test_to_a.rb +0 -27
  307. data/test/lib/facets/core/string/test_to_b.rb +0 -41
  308. data/test/lib/facets/core/string/test_to_const.rb +0 -28
  309. data/test/lib/facets/core/string/test_to_date.rb +0 -30
  310. data/test/lib/facets/core/string/test_to_proc.rb +0 -33
  311. data/test/lib/facets/core/string/test_to_re.rb +0 -28
  312. data/test/lib/facets/core/string/test_to_time.rb +0 -30
  313. data/test/lib/facets/core/string/test_unix_crypt.rb +0 -30
  314. data/test/lib/facets/core/string/test_unpack.rb +0 -34
  315. data/test/lib/facets/core/string/test_unshift.rb +0 -39
  316. data/test/lib/facets/core/string/test_upcase.rb +0 -30
  317. data/test/lib/facets/core/string/test_whitespace.rb +0 -27
  318. data/test/lib/facets/core/string/test_word_filter.rb +0 -34
  319. data/test/lib/facets/core/string/test_word_wrap.rb +0 -51
  320. data/test/lib/facets/core/string/test_words.rb +0 -37
  321. data/test/lib/facets/core/symbol/test_camelcase.rb +0 -26
  322. data/test/lib/facets/core/symbol/test_camelize.rb +0 -27
  323. data/test/lib/facets/core/symbol/test_capitalize.rb +0 -26
  324. data/test/lib/facets/core/symbol/test_capitalized.rb +0 -27
  325. data/test/lib/facets/core/symbol/test_downcase.rb +0 -27
  326. data/test/lib/facets/core/symbol/test_not.rb +0 -29
  327. data/test/lib/facets/core/symbol/test_pad.rb +0 -27
  328. data/test/lib/facets/core/symbol/test_succ.rb +0 -28
  329. data/test/lib/facets/core/symbol/test_to_const.rb +0 -28
  330. data/test/lib/facets/core/symbol/test_to_proc.rb +0 -33
  331. data/test/lib/facets/core/symbol/test_to_str.rb +0 -28
  332. data/test/lib/facets/core/symbol/test_underscore.rb +0 -26
  333. data/test/lib/facets/core/symbol/test_upcase.rb +0 -27
  334. data/test/lib/facets/core/time/test_change.rb +0 -33
  335. data/test/lib/facets/core/time/test_elapse.rb +0 -27
  336. data/test/lib/facets/core/time/test_stamp.rb +0 -39
  337. data/test/lib/facets/core/time/test_to_date.rb +0 -31
  338. data/test/lib/facets/core/time/test_to_s.rb +0 -31
  339. data/test/lib/facets/core/time/test_to_time.rb +0 -31
  340. data/test/lib/facets/more/test_ann.rb +0 -112
  341. data/test/lib/facets/more/test_ann_attr.rb +0 -39
  342. data/test/lib/facets/more/test_ansicode.rb +0 -36
  343. data/test/lib/facets/more/test_arguments.rb +0 -83
  344. data/test/lib/facets/more/test_association.rb +0 -51
  345. data/test/lib/facets/more/test_autoarray.rb +0 -32
  346. data/test/lib/facets/more/test_basicobject.rb +0 -67
  347. data/test/lib/facets/more/test_bbcode.rb +0 -34
  348. data/test/lib/facets/more/test_binaryreader.rb +0 -64
  349. data/test/lib/facets/more/test_bitmask.rb +0 -47
  350. data/test/lib/facets/more/test_buildingblock.rb +0 -48
  351. data/test/lib/facets/more/test_bytes.rb +0 -84
  352. data/test/lib/facets/more/test_classmethods.rb +0 -69
  353. data/test/lib/facets/more/test_command.rb +0 -69
  354. data/test/lib/facets/more/test_coroutine.rb +0 -60
  355. data/test/lib/facets/more/test_crypt.rb +0 -46
  356. data/test/lib/facets/more/test_cut.rb +0 -198
  357. data/test/lib/facets/more/test_dependency.rb +0 -82
  358. data/test/lib/facets/more/test_dictionary.rb +0 -107
  359. data/test/lib/facets/more/test_elementor.rb +0 -52
  360. data/test/lib/facets/more/test_enumerablepass.rb +0 -86
  361. data/test/lib/facets/more/test_floatstring.rb +0 -36
  362. data/test/lib/facets/more/test_functor.rb +0 -39
  363. data/test/lib/facets/more/test_htmlbuilder.rb +0 -38
  364. data/test/lib/facets/more/test_htmlfilter.rb +0 -86
  365. data/test/lib/facets/more/test_infinity.rb +0 -50
  366. data/test/lib/facets/more/test_inheritor.rb +0 -155
  367. data/test/lib/facets/more/test_instance_intercept.rb +0 -50
  368. data/test/lib/facets/more/test_interval.rb +0 -119
  369. data/test/lib/facets/more/test_json.rb +0 -232
  370. data/test/lib/facets/more/test_linkedlist.rb +0 -53
  371. data/test/lib/facets/more/test_lisp.rb +0 -47
  372. data/test/lib/facets/more/test_lisp_format.rb +0 -37
  373. data/test/lib/facets/more/test_lrucache.rb +0 -25
  374. data/test/lib/facets/more/test_mathconstants.rb +0 -18
  375. data/test/lib/facets/more/test_methodfilter.rb +0 -45
  376. data/test/lib/facets/more/test_methodprobe.rb +0 -53
  377. data/test/lib/facets/more/test_multipliers.rb +0 -114
  378. data/test/lib/facets/more/test_multiton.rb +0 -199
  379. data/test/lib/facets/more/test_nackclass.rb +0 -45
  380. data/test/lib/facets/more/test_nilcomparable.rb +0 -47
  381. data/test/lib/facets/more/test_opencascade.rb +0 -75
  382. data/test/lib/facets/more/test_openobject.rb +0 -126
  383. data/test/lib/facets/more/test_overload.rb +0 -54
  384. data/test/lib/facets/more/test_paramix.rb +0 -100
  385. data/test/lib/facets/more/test_pqueue.rb +0 -39
  386. data/test/lib/facets/more/test_preinitialize.rb +0 -49
  387. data/test/lib/facets/more/test_promoteself.rb +0 -45
  388. data/test/lib/facets/more/test_recorder.rb +0 -44
  389. data/test/lib/facets/more/test_snapshot.rb +0 -34
  390. data/test/lib/facets/more/test_statichash.rb +0 -31
  391. data/test/lib/facets/more/test_syncarray.rb +0 -28
  392. data/test/lib/facets/more/test_synchash.rb +0 -28
  393. data/test/lib/facets/more/test_tagiterator.rb +0 -93
  394. data/test/lib/facets/more/test_timer.rb +0 -66
  395. data/test/lib/facets/more/test_times.rb +0 -103
  396. data/test/lib/facets/more/test_tuple.rb +0 -64
  397. data/test/lib/facets/more/test_typecast.rb +0 -68
  398. data/test/lib/facets/more/test_uninheritable.rb +0 -42
  399. data/test/lib/facets/more/test_units.rb +0 -111
  400. data/test/lib/facets/more/test_xmlbuilder.rb +0 -54
  401. data/test/lib/facets/more/test_xmlhelper.rb +0 -40
  402. data/test/lib/facets/more/test_xoxo.rb +0 -288
  403. data/test/lib/facets/more/test_yamlstruct.rb +0 -37
  404. data/test/lib/facets/yore/enumerable/test_cross.rb +0 -44
  405. data/test/lib/facets/yore/kernel/test_require_facet.rb +0 -27
  406. data/test/lib/facets/yore/module/test_namespace.rb +0 -33
  407. data/test/lib/facets/yore/test_annattr.rb +0 -39
  408. data/test/lib/facets/yore/test_annotation.rb +0 -318
  409. data/work/README +0 -42
  410. data/work/TODO +0 -73
  411. data/work/bin/minitar +0 -3
  412. data/work/bin/minitar.rb +0 -814
  413. data/work/core/array/at_rand.rb +0 -95
  414. data/work/core/array/each_slice.rb +0 -23
  415. data/work/core/array/pick_values.rb +0 -32
  416. data/work/core/array/rand_indexes.rb +0 -33
  417. data/work/core/binding/class.rb +0 -11
  418. data/work/core/binding/delegate-binding.rb +0 -19
  419. data/work/core/binding/delegate.rb +0 -15
  420. data/work/core/binding/proc.rb +0 -6
  421. data/work/core/class/to_module.rb +0 -3
  422. data/work/core/enumerable/op_fetch.rb +0 -30
  423. data/work/core/fileutils/cptouch.rb +0 -20
  424. data/work/core/fileutils/nl_convert.rb +0 -133
  425. data/work/core/io/expect.rb +0 -127
  426. data/work/core/join_with.rb +0 -13
  427. data/work/core/kernel/call_line.rb +0 -15
  428. data/work/core/kernel/does.rb +0 -7
  429. data/work/core/kernel/message.rb +0 -6
  430. data/work/core/kernel/query.rb +0 -15
  431. data/work/core/kernel/taint.rb +0 -10
  432. data/work/core/logger/clean_logger.rb +0 -10
  433. data/work/core/module/attr-old.rb +0 -308
  434. data/work/core/module/attr.rb +0 -98
  435. data/work/core/module/attr_xxx.rb +0 -22
  436. data/work/core/module/by_regexp.rb +0 -21
  437. data/work/core/module/cast.rb +0 -64
  438. data/work/core/module/class_attribute_accessors.rb +0 -57
  439. data/work/core/module/inherit.rb +0 -99
  440. data/work/core/module/inherit0.rb +0 -59
  441. data/work/core/module/let.rb +0 -51
  442. data/work/core/module/meta_attr.rb +0 -60
  443. data/work/core/module/module_attribute_accessors.rb +0 -57
  444. data/work/core/module/permissions.rb +0 -32
  445. data/work/core/module/preserved.rb +0 -108
  446. data/work/core/module/sattr_accessor.rb +0 -1
  447. data/work/core/module/sattr_reader.rb +0 -1
  448. data/work/core/module/sattr_setter.rb +0 -1
  449. data/work/core/module/sattr_tester.rb +0 -1
  450. data/work/core/module/sattr_writer.rb +0 -1
  451. data/work/core/module/tc_attr.rb +0 -107
  452. data/work/core/module/to_module.rb +0 -37
  453. data/work/core/module/version.rb +0 -23
  454. data/work/core/string/frequency.rb +0 -40
  455. data/work/core/string/op_add.rb +0 -24
  456. data/work/core/string/op_div.rb +0 -15
  457. data/work/core/string/pred.rb +0 -217
  458. data/work/core/string/probability.rb +0 -35
  459. data/work/core/string/succ_distance.rb +0 -112
  460. data/work/core/string/to_arr.rb +0 -57
  461. data/work/core/string/to_ary.rb +0 -12
  462. data/work/core/string/word_wrap.rb +0 -62
  463. data/work/hash_open.rb +0 -23
  464. data/work/misc/calibre/ProjectInfo.annotation +0 -46
  465. data/work/misc/calibre/ProjectInfo.ansicode +0 -33
  466. data/work/misc/calibre/ProjectInfo.association +0 -34
  467. data/work/misc/calibre/ProjectInfo.basicobject +0 -36
  468. data/work/misc/calibre/ProjectInfo.bbcode +0 -34
  469. data/work/misc/calibre/ProjectInfo.binaryreader +0 -35
  470. data/work/misc/calibre/ProjectInfo.bitmask +0 -33
  471. data/work/misc/calibre/ProjectInfo.classinherit +0 -36
  472. data/work/misc/calibre/ProjectInfo.classmethods +0 -36
  473. data/work/misc/calibre/ProjectInfo.cloneable +0 -33
  474. data/work/misc/calibre/ProjectInfo.consoleapp +0 -35
  475. data/work/misc/calibre/ProjectInfo.coroutine +0 -37
  476. data/work/misc/calibre/ProjectInfo.crypt +0 -33
  477. data/work/misc/calibre/ProjectInfo.dictionary +0 -40
  478. data/work/misc/calibre/ProjectInfo.downloader +0 -39
  479. data/work/misc/calibre/ProjectInfo.enumerablepass +0 -35
  480. data/work/misc/calibre/ProjectInfo.expirable +0 -37
  481. data/work/misc/calibre/ProjectInfo.floatstring +0 -35
  482. data/work/misc/calibre/ProjectInfo.functor +0 -40
  483. data/work/misc/calibre/ProjectInfo.heap +0 -33
  484. data/work/misc/calibre/ProjectInfo.inheritor +0 -36
  485. data/work/misc/calibre/ProjectInfo.interval +0 -36
  486. data/work/misc/calibre/ProjectInfo.lisp +0 -38
  487. data/work/misc/calibre/ProjectInfo.lrucache +0 -34
  488. data/work/misc/calibre/ProjectInfo.mathconstants +0 -41
  489. data/work/misc/calibre/ProjectInfo.methodprobe +0 -38
  490. data/work/misc/calibre/ProjectInfo.mock +0 -34
  491. data/work/misc/calibre/ProjectInfo.multiton +0 -36
  492. data/work/misc/calibre/ProjectInfo.nackclass +0 -33
  493. data/work/misc/calibre/ProjectInfo.nilcomparable +0 -35
  494. data/work/misc/calibre/ProjectInfo.nullclass +0 -35
  495. data/work/misc/calibre/ProjectInfo.one +0 -37
  496. data/work/misc/calibre/ProjectInfo.openobject +0 -39
  497. data/work/misc/calibre/ProjectInfo.paramix +0 -38
  498. data/work/misc/calibre/ProjectInfo.pool +0 -33
  499. data/work/misc/calibre/ProjectInfo.progressbar +0 -37
  500. data/work/misc/calibre/ProjectInfo.reference +0 -36
  501. data/work/misc/calibre/ProjectInfo.semaphore +0 -36
  502. data/work/misc/calibre/ProjectInfo.stateparser +0 -39
  503. data/work/misc/calibre/ProjectInfo.statichash +0 -33
  504. data/work/misc/calibre/ProjectInfo.system +0 -34
  505. data/work/misc/calibre/ProjectInfo.tagiterator +0 -36
  506. data/work/misc/calibre/ProjectInfo.timer +0 -35
  507. data/work/misc/calibre/ProjectInfo.tracepoint +0 -37
  508. data/work/misc/calibre/ProjectInfo.tuple +0 -36
  509. data/work/misc/calibre/ProjectInfo.uniheritable +0 -34
  510. data/work/misc/calibre/ProjectInfo.units +0 -34
  511. data/work/misc/calibre/ProjectInfo.yamlstruct +0 -34
  512. data/work/more/annotation-rw.rb +0 -217
  513. data/work/more/aobject.rb +0 -132
  514. data/work/more/autohash.rb +0 -67
  515. data/work/more/cache.rb +0 -189
  516. data/work/more/class_inheritable_attributes.rb +0 -120
  517. data/work/more/commandrunner.rb +0 -101
  518. data/work/more/daemon.rb +0 -70
  519. data/work/more/debugger.rb +0 -167
  520. data/work/more/detach.rb +0 -423
  521. data/work/more/enumtype.rb +0 -115
  522. data/work/more/ioreactor.rb +0 -671
  523. data/work/more/logger_sing.rb +0 -207
  524. data/work/more/must.rb +0 -37
  525. data/work/more/old-tkxml.rb +0 -189
  526. data/work/more/pairhash.rb +0 -55
  527. data/work/more/password.rb +0 -80
  528. data/work/more/print_exception.rb +0 -35
  529. data/work/more/rand.rb +0 -412
  530. data/work/more/range.rb +0 -383
  531. data/work/more/sanitize.rb +0 -48
  532. data/work/more/superstruct.rb +0 -735
  533. data/work/more/tag.rb +0 -31
  534. data/work/more/timer.rb +0 -164
  535. data/work/op_rshift.rb +0 -87
  536. data/work/openobject-temp.rb +0 -45
  537. data/work/pore/autorequire.rb +0 -83
  538. data/work/pore/basefactory.rb +0 -40
  539. data/work/pore/hash/each.rb +0 -76
  540. data/work/pore/merge3.rb +0 -765
  541. data/work/pore/superann.rb +0 -134
  542. data/work/pore/sys.rb +0 -186
  543. data/work/pore/utils.rb +0 -518
  544. data/work/yore/HashAquisition.rb +0 -36
  545. data/work/yore/Rakefile.old +0 -181
  546. data/work/yore/Reapfile +0 -63
  547. data/work/yore/annotation.rb +0 -489
  548. data/work/yore/annotation2.rb +0 -466
  549. data/work/yore/commandutils.rb +0 -379
  550. data/work/yore/openobject.rb +0 -298
  551. data/work/yore/reap.rb +0 -184
  552. data/work/yore/reap.yml +0 -47
  553. data/work/yore/taskable-old.rb +0 -519
  554. data/work/yore/taskable.rb +0 -482
@@ -1,184 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- #require './lib/facets/core/file/self/read_list'
4
-
5
- #DATPATH = "data/facets"
6
- #ETCPATH = "conf/facets"
7
- #REQPATH = "facets/core"
8
- #GENPATH = "lib/facets/core"
9
-
10
- # REAP doesn't accept a default. Should it?
11
- #task :default => [ :tasks ] # THIS IS WHAT IT DOES BY DEFAULT.
12
-
13
- #
14
- # Three stages to release.
15
- #
16
-
17
- desc %{First stage (redirect,extest,test)}
18
- task '1stage' => [ :redirect, :extest, :test ]
19
-
20
- desc %{Second stage (rdoc-core,rdoc-more,package)}
21
- task '2stage' => [ :'rdoc-core', :'rdoc-more', :package ]
22
-
23
- desc %{Final stage (publish,release)}
24
- task '3stage' => [ :publish, :release ]
25
-
26
- #
27
- # Generate facet/ redirection folder.
28
- #
29
-
30
- LIBDIR = 'lib'
31
- REDIR = 'facet'
32
- SRCDIR = 'facets'
33
-
34
- desc %{Build facet redirect directory}
35
- task :redirect do
36
- #puts "Creating redirection folder #{REDIR}/ ..."
37
- count = 0
38
- dest = File.join( LIBDIR, REDIR )
39
- FileUtils.rm_r(dest) if File.directory?(dest)
40
- Dir.chdir( LIBDIR ) do
41
- ['core','more'].each{ |d|
42
- from = File.join( SRCDIR, d )
43
- files = Dir.glob( File.join( from, '**/*.rb' ) )
44
- files.each { |e|
45
- re = Regexp.new( Regexp.escape( from + '/' ) )
46
- link = e.sub( re, 'facet/')
47
- FileUtils.mkdir_p( File.dirname( link ) )
48
- File.open( link, "w+" ) { |w| w << "require '#{e}'" }
49
- count += 1
50
- }
51
- }
52
- end
53
- puts "Created #{count} redirection files in #{REDIR}/ folder."
54
- end
55
-
56
- #
57
- # Read in the facets directory and sort-out per class
58
- #
59
-
60
- Methods = {}
61
- MTHPATH = "lib/facets/core"
62
-
63
- task :index_methods do
64
- Dir.chdir(MTHPATH) do
65
- dg = Dir.glob('*/**/*.rb')
66
- dg.each { |f|
67
- klass, *meth= f.split('/')
68
- Methods[ klass ] ||= []
69
- Methods[ klass ] << "#{meth.join('/').chomp('.rb')}"
70
- }
71
- Methods.keys.each { |k| Methods[k].sort! }
72
- end
73
- end
74
-
75
- #
76
- # List Methods
77
- #
78
-
79
- desc %{Output a list of all methods}
80
- task :list => [ :index_methods ] do
81
- puts method_list_outline
82
- end
83
-
84
- #
85
- # Make sure there are no remarked test comments.
86
- #
87
-
88
- #desc "Check for open comment tests"
89
- #task :testchk do
90
- # system %q{grep -r ^#=begin\ test ./lib}
91
- #end
92
-
93
- # # Save method index to file in yaml format
94
- #
95
- # desc %{Generate method index file}
96
- # task :index => [ :methods ] do
97
- # print "Creating method index... "
98
- # loc = File.join( DATPATH, 'index.yml' )
99
- # File.open( loc, 'w' ) { |f|
100
- # f << Methods.to_yaml
101
- # }
102
- # puts "[done]"
103
- # end
104
-
105
- # # Create per class feature files
106
- #
107
- # desc %Q{Generate per-class feature files}
108
- # task :class => [:methods ] do
109
- # print "Creating per class files... "
110
- #
111
- # index = Methods
112
- # noauto = File.read_list( File.join( ETCPATH, 'noauto' ) )
113
- # allfiles = index.collect{ |k,ms| ms.collect{ |m| "#{k}/#{m}" } }.flatten
114
- # full = calc_full(allfiles, noauto)
115
- #
116
- # index.each { |classname, method_files|
117
- # File.open( "#{GENPATH}/#{classname.downcase}.rb", 'w' ) { |f|
118
- # method_files.each { |rf|
119
- # mfn = "#{classname.downcase}/#{rf}"
120
- # if full.include?(mfn)
121
- # f << %Q{require '#{REQPATH}/#{mfn}'\n}
122
- # end
123
- # }
124
- # }
125
- # }
126
- # puts "[done]"
127
- # end
128
-
129
- # # HTML List MethodsFile.new(
130
- #
131
- # HEAD = <<-HERE
132
- # <html>
133
- # <head>
134
- # <style>
135
- # pre#methods {
136
- # font-size: .8em;
137
- # line-height: 1em;
138
- # }
139
- # </style>
140
- # </head>
141
- # <body>
142
- # <pre id="methods">
143
- # HERE
144
- #
145
- # FOOT=<<-HERE
146
- # </pre>
147
- # </body>
148
- # </html>
149
- # HERE
150
- #
151
- # desc %{generate method list html file}
152
- # task 'listHtml' => [ :scrape_methods ] do
153
- # s = HEAD + method_list_outline + FOOT
154
- # File.open('pub/www/methods.html', 'w') { |f| f << s }
155
- # end
156
-
157
- private # Support Methods
158
-
159
- # Create a nice text outline of the core methods.
160
-
161
- def method_list_outline
162
- s = ''
163
- Methods.keys.sort.each { |k|
164
- ms = Methods[k].collect{|m| m.gsub(%r{^self\/},'::')}.sort
165
- s << "#{k}:\n"
166
- ms.each { |m| s << " #{m}\n" }
167
- }
168
- s
169
- end
170
-
171
- # # Full set of require files (all files minus noauto and unsafe)
172
- #
173
- # def calc_full( allfiles, noauto )
174
- # sf = allfiles.dup
175
- # noauto.each do |f|
176
- # if f.include?('*')
177
- # re = %r"#{f.gsub('*','.*')}"
178
- # sf.reject!{ |x| x =~ re }
179
- # elsif sf.include?(f)
180
- # sf.delete f
181
- # end
182
- # end
183
- # sf.sort
184
- # end
@@ -1,47 +0,0 @@
1
-
2
- prepare: !!custom
3
- desc: Redirect, extact tests and test
4
- deps: [ 'redirect', 'extest', 'test' ]
5
-
6
- package: !!package
7
- dir: 'srv/package'
8
- distribute: [ tar.gz, zip ] # gem
9
-
10
- release: !!release
11
- dir : 'srv/package'
12
- host : rubyforge.org
13
- username : transami
14
- project : facets
15
- groupid : 804
16
- package : Facets
17
-
18
- announce: !!announce
19
- to : transfire@gmail.com #ruby-talk@ruby-lang.org
20
- from : transfire@gmail.com
21
- domain : jupiterzeus.net
22
- server : smtp.gmail.com
23
- port : 25 #587
24
- account : transfire@gmail.com
25
- auth : login #cram_md5 #plain
26
- secure : tls # ~, tls, ssl
27
- file : doc/LATEST
28
- slogan : ALL YOUR BASE ARE BELONG TO RUBY!
29
- links:
30
- - http://facets.rubyforge.org
31
-
32
- count: !!count
33
- include: 'lib/**/*'
34
-
35
- setup: !!setup
36
-
37
- changelog: !!changelog
38
- file: doc/CHANGELOG
39
-
40
- version: !!version
41
- file: meta/version
42
-
43
- test: !!test
44
-
45
- extest: !!extest
46
- files: 'lib/facets/**/*.rb'
47
-
@@ -1,519 +0,0 @@
1
- # = taskable.rb
2
- #
3
- # == Copyright (c) 2006 Thomas Sawyer
4
- #
5
- # Ruby License
6
- #
7
- # This module is free software. You may use, modify, and/or redistribute this
8
- # software under the same terms as Ruby.
9
- #
10
- # This program is distributed in the hope that it will be useful, but WITHOUT
11
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
- # FOR A PARTICULAR PURPOSE.
13
- #
14
- # == Auhtor(s)
15
- #
16
- # * Thomas Sawyer
17
-
18
- # Author:: Thomas Sawyer
19
- # Copyright:: Copyright (c) 2006 Thomas Sawyer
20
- # License:: Ruby License
21
-
22
- require 'tsort'
23
-
24
- $main = self
25
-
26
- # = TSort
27
- #
28
- # TSort is used to determine which prerequisites to run
29
- # for a task.
30
- #
31
- # Here we add a convenience method --if such a long method
32
- # name can be said to be convenient ;) Although we ended
33
- # not using it after all --it still may proved useful and
34
- # may eventually be added to Facets or submitted as a patch.
35
-
36
- module TSort
37
- def strongly_connected_components_from(node)
38
- result = []
39
- each_strongly_connected_component_from(node) do |component|
40
- result << component
41
- end
42
- result
43
- end
44
- end
45
-
46
- # = Task
47
- #
48
- # A Task is a Method with prerequisite dependencies.
49
- #
50
- # NOTE Can't subclass Method b/c Method has no initiator.
51
- # Not sure that would be a good idea anyway.
52
-
53
- class Task
54
- attr_accessor :description
55
-
56
- def self.instance( method )
57
- p method
58
- initialize( )
59
- end
60
-
61
- def initialize( name, container, preq, desc=nil, &action )
62
- @name = name
63
- @container = container
64
- @prerequisite = preq || []
65
- @description = desc
66
- @action = action
67
- end
68
-
69
- def prerequisite
70
- @prerequisite ||= []
71
- end
72
-
73
- # #--
74
- # # TODO Problem is 'a' can't take any parameters,
75
- # # and there's no way to sort the tasks
76
- # # from here. FIX if possible.
77
- # #++
78
- # def to_proc
79
- # r = @prerequisite
80
- # n = @name
81
- # a = @action
82
- # lambda {
83
- # r.each{ |d| send(d) unless n == d }
84
- # instance_eval &a if a
85
- # }
86
- # end
87
-
88
- def complete
89
- # ensure no cycles in the graph and extract call graph
90
- # TODO what about singletons?
91
- t = Graph.new( container, name )
92
- t.each_strongly_connected_component_from( name ) do |c|
93
- #@container.instance_task(c).call
94
- @container.send("->#{d}")
95
- end
96
- end
97
-
98
- def call
99
- @action.call
100
- end
101
-
102
- def each(&blk)
103
- @prerequisite.each(&blk)
104
- end
105
-
106
- # Task::Graph is a Tarjan-sorted hash.
107
- # It is used to generate the proper dependency chains.
108
- # TODO Make Multiton off of base.
109
-
110
- class Graph < Hash
111
- include TSort
112
-
113
- def initialize( base, name )
114
- #if base == $main
115
- # @base = Object #(class << base; self; end)
116
- #else
117
- @base = base #.class
118
- #end
119
- @name = name
120
- #instance_map( name )
121
- end
122
-
123
- def instance_map( name=nil )
124
- name = name || @name
125
- task = nil
126
- unless @base.ancestors.find { |anc| task = anc.instance_task(name) }
127
- raise "task does not exist -- #{name} in #{@base}"
128
- end
129
- self[name] = task.prerequisite || []
130
- self[name].each { |r| instance_map( r ) }
131
- end
132
-
133
- def list
134
- instance_map
135
- self
136
- end
137
-
138
- alias :tsort_each_node :each_key
139
-
140
- def tsort_each_child(node, &block)
141
- fetch(node).each(&block)
142
- end
143
- end
144
-
145
- end
146
-
147
- # = Taskable
148
- #
149
- # The Taskable module provides a generic task system
150
- # patterned after Rake, but useable in any
151
- # code context --not just with the Rake tool. In other
152
- # words one can create methods with dependencies.
153
- #
154
- # NOTE Unlike methods, tasks can't take parameters
155
- # if they are to be used as prerequisites.
156
- # This capability might be added in the future, but
157
- # presently syntax limitations make it awkward.
158
- #
159
- # To use Taskable at the top level do:
160
- #
161
- # include Taskable
162
- #
163
-
164
- module Taskable
165
-
166
- def self.included( base )
167
- if base == Object
168
- $main.instance_eval {
169
-
170
- def define_method( meth, &block )
171
- Object.class_eval do
172
- define_method( meth, &block )
173
- private meth
174
- end
175
- end
176
-
177
- def ancestors(*args)
178
- Object.ancestors(*args)
179
- end
180
-
181
- def instance_method(*args)
182
- Object.instance_method(*args)
183
- end
184
- }
185
- end
186
- end
187
-
188
- # Provide a mapping of tasks, including task from ancestors.
189
- # TODO Not sure this is properly reading from ancestors.
190
-
191
- # Define description for subsequent task.
192
-
193
- def desc(line=nil)
194
- return @last_description unless line
195
- @last_description = line.gsub("\n",'')
196
- end
197
-
198
- # Use up the description for subsequent task.
199
-
200
- def desc!
201
- l = @last_description
202
- @last_description = nil
203
- l
204
- end
205
-
206
- # Define a task.
207
-
208
- def task(args, &action)
209
- if Hash === args
210
- raise ArgumentError, "#{args.size} for 1" if args.size != 1
211
- name, *deps = *(args.to_a.flatten)
212
- name = name.to_sym
213
- deps = deps.compact.collect{ |e| e.to_sym }
214
- else
215
- name, deps = args.to_sym, []
216
- end
217
- # create task by creating core and callable methods.
218
- # We do it this way b/c otherwise we'd have to use
219
- # instance_eval and then can't pass paramaters (TODO fix w/Ruby 1.9).
220
- if action
221
- define_method( "->#{name}", &action ) # core of the task
222
- define_method( name ) do |*args|
223
- r = nil
224
- # ensure no cycles in the graph and extract call graph
225
- # TODO what about singleton tasks?
226
- todo = Task::Graph.new( self.class, name )
227
- todo.list.each_strongly_connected_component_from( name ) do |c|
228
- r = send("->#{c}", *args)
229
- end
230
- r
231
- end
232
- #cont = (self == $main ? Object : self )
233
- #cont = self
234
- instance_task_table[name] = Task.new( name, self, deps, desc!, &action )
235
- elsif name and deps
236
- if m = instance_task(name)
237
- #m.description = desc! # TODO should this apply only if there is an action?
238
- m.prerequisite.concat deps unless deps.empty?
239
- m
240
- else
241
- #define_method( "->#{name}", lambda{} ) # empty action
242
- define_method( name ) do |*args|
243
- r = nil
244
- # ensure no cycles in the graph and extract call graph
245
- # TODO what about singleton tasks?
246
- todo = Task::Graph.new( self.class, name )
247
- todo.list.each_strongly_connected_component_from( name ) do |c|
248
- r = send("->#{c}", *args) unless "#{c}" == "#{name}"
249
- end
250
- r
251
- end
252
- #cont = (self == $main ? Object : self )
253
- #cont = self
254
- instance_task_table[name] = Task.new( name, self, deps, desc!, &action )
255
- end
256
- #else
257
- # Task.instance( method(m) )
258
- end
259
- end
260
-
261
- # Access a task.
262
-
263
- def instance_task( name )
264
- name = name.to_sym
265
- if instance_task_table and r = instance_task_table[name]
266
- return r
267
- end
268
- ancestors.each do |anc|
269
- itt = anc.instance_task_table #instance_variable_get("@instance_task_table")
270
- if itt and r = itt[name]
271
- return r
272
- end
273
- end
274
- nil
275
- end
276
-
277
- # List of task names.
278
-
279
- def instance_tasks( include_ancestors=true )
280
- if include_ancestors and ancestors #and ancestors[1]
281
- a = []
282
- ancestors.each do |anc|
283
- a |= anc.instance_task_table.keys
284
- end
285
- return a
286
- else
287
- instance_task_table.keys
288
- end
289
- end
290
-
291
- protected
292
-
293
- def instance_task_table
294
- if self == $main
295
- Object.instance_task_table
296
- else
297
- @instance_task_table ||= {}
298
- end
299
- end
300
-
301
- # TODO deprecate these two methods?
302
-
303
- public
304
-
305
- # List of task names with descriptions.
306
-
307
- def described_tasks
308
- instance_tasks.select { |name| instance_task(name).description }
309
- end
310
-
311
- # List of task names without descriptions.
312
-
313
- def undescribed_tasks
314
- instance_tasks.select { |name| ! instance_task(name).description }
315
- end
316
-
317
- end
318
-
319
- # Include the Task module into the Module class.
320
-
321
- class Module
322
- include Taskable
323
- end
324
-
325
- #class Object
326
- # def send_task( name )
327
- # (class << self; self; end).instance_task( name )
328
- # end
329
- #end
330
-
331
-
332
- # _____ _
333
- # |_ _|__ ___| |_
334
- # | |/ _ \/ __| __|
335
- # | | __/\__ \ |_
336
- # |_|\___||___/\__|
337
- #
338
- =begin test
339
-
340
- require 'test/unit'
341
-
342
- class TestTaskable1 < Test::Unit::TestCase
343
-
344
- module M
345
- task :m1 => [ :c1 ] do @x << "m1" end
346
- task :m2 => [ :c2 ] do @x << "m2" end
347
- task :m3 => [ :c3 ] do @x << "m3" end
348
- task :m4 => [ :c1, :c2, :c3 ] do @x << "m4" end
349
- task :m5 do @x << 'm5' end
350
- end
351
-
352
- class B
353
- attr :x
354
- def initialize ; @x = [] ; end
355
-
356
- task :b1 do @x << "b1" end
357
- task :b2 => [ :b1 ]
358
- end
359
-
360
- class C
361
- include M
362
- attr :x
363
- def initialize ; @x = [] ; end
364
-
365
- task :c1 do @x << "c1" end
366
- task :c2 => [ :c1, :c1 ] do @x << "c2" end
367
- task :c3 => [ :c1, :c2 ] do @x << "c3" end
368
- task :c4 => [ :m1 ] do @x << "c4" end
369
- task :c5 => [ :c5 ] do @x << "c5" end
370
- task :c6 => [ :c7 ] do @x << "c6" end
371
- task :c7 => [ :c6 ] do @x << "c7" end
372
- end
373
-
374
- class D < C
375
- task :d1 => [ :c1 ] do @x << "d1" ; end
376
- task :d2 => [ :m1 ] do @x << "d2" ; end
377
- end
378
-
379
- module N
380
- include M
381
- end
382
-
383
- class E
384
- include N
385
- attr :x
386
- def initialize ; @x = [] ; end
387
-
388
- task :e1 => [ :c1 ] do @x << "e1" ; end
389
- task :e2 => [ :m1 ] do @x << "e2" ; end
390
- task :e3 => [ :m5 ] do @x << "e3" ; end
391
- end
392
-
393
- module O
394
- attr :x
395
- task :o1 do (@x||=[]) << "o1" end
396
- task :o2 => [ :o1 ] do (@x||=[]) << "o2" end
397
- end
398
-
399
- # TODO Appearently extending does play well with inheritor?
400
- # F = Module.new { extend O }
401
-
402
- # tests
403
-
404
- def test_B1
405
- b = B.new ; b.b1
406
- assert_equal( [ 'b1' ], b.x )
407
- end
408
-
409
- def test_B2
410
- b = B.new ; b.b2
411
- assert_equal( [ 'b1' ], b.x )
412
- end
413
-
414
- def test_C1
415
- c = C.new ; c.c1
416
- assert_equal( [ 'c1' ], c.x )
417
- end
418
-
419
- def test_C2
420
- c = C.new ; c.c2
421
- assert_equal( [ 'c1', 'c2' ], c.x )
422
- end
423
-
424
- def test_C3
425
- c = C.new ; c.c3
426
- assert_equal( [ 'c1', 'c2', 'c3' ], c.x )
427
- end
428
-
429
- def test_C4
430
- c = C.new ; c.c4
431
- assert_equal( [ 'c1', 'm1', 'c4' ], c.x )
432
- end
433
-
434
- def test_M1
435
- c = C.new ; c.m1
436
- assert_equal( [ 'c1', 'm1' ], c.x )
437
- end
438
-
439
- def test_M2
440
- c = C.new ; c.m2
441
- assert_equal( [ 'c1', 'c2', 'm2' ], c.x )
442
- end
443
-
444
- def test_M3
445
- c = C.new ; c.m3
446
- assert_equal( [ 'c1', 'c2', 'c3', 'm3' ], c.x )
447
- end
448
-
449
- def test_M4
450
- c = C.new ; c.m4
451
- assert_equal( [ 'c1', 'c2', 'c3', 'm4' ], c.x )
452
- end
453
-
454
- def test_D1
455
- d = D.new ; d.d1
456
- assert_equal( [ 'c1', 'd1' ], d.x )
457
- end
458
-
459
- def test_D2
460
- d = D.new ; d.d2
461
- assert_equal( [ 'c1', 'm1', 'd2' ], d.x )
462
- end
463
-
464
- def test_E1
465
- e = E.new
466
- assert_raises( RuntimeError ) { e.e1 }
467
- #assert_equal( [ 'c1', 'e1' ], e.x )
468
- end
469
-
470
- def test_E2
471
- e = E.new
472
- assert_raises( RuntimeError ) { e.e2 }
473
- #assert_equal( [ 'c1', 'm1', 'e2' ], e.x )
474
- end
475
-
476
- def test_E3
477
- e = E.new ; e.e3
478
- assert_equal( [ 'm5', 'e3' ], e.x )
479
- end
480
-
481
- # def test_F1
482
- # F.o1
483
- # assert_equal( [ 'o1' ], F.x )
484
- # end
485
- #
486
- # def test_F2
487
- # F.o2
488
- # assert_equal( [ 'o1', 'o1', 'o2' ], F.x )
489
- # end
490
-
491
- end
492
-
493
-
494
- ##
495
- # Test toplevel usage.
496
- #
497
-
498
- include Taskable
499
-
500
- task :foo do
501
- "foo"
502
- end
503
-
504
- task :bar => [ :foo ] do
505
- "bar"
506
- end
507
-
508
- class TestTaskable2 < Test::Unit::TestCase
509
- def test_01
510
- assert_equal( "foo", foo )
511
- end
512
- def test_01
513
- assert_equal( "bar", bar )
514
- end
515
-
516
- end
517
-
518
- =end
519
-