facets 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1787) hide show
  1. data/CHANGELOG +9 -2
  2. data/ProjectInfo +15 -22
  3. data/Rakefile +17 -15
  4. data/TODO +2 -29
  5. data/lib/facet/array.rb +33 -1
  6. data/lib/facet/array/at_rand.rb +52 -1
  7. data/lib/facet/array/body.rb +2 -1
  8. data/lib/facet/array/delete_unless.rb +35 -1
  9. data/lib/facet/array/delete_values.rb +38 -1
  10. data/lib/facet/array/delete_values_at.rb +57 -1
  11. data/lib/facet/array/each_with_key.rb +9 -1
  12. data/lib/facet/array/first.rb +84 -1
  13. data/lib/facet/array/foot.rb +2 -1
  14. data/lib/facet/array/head.rb +80 -1
  15. data/lib/facet/array/last.rb +2 -1
  16. data/lib/facet/array/last_index.rb +35 -1
  17. data/lib/facet/array/merge.rb +40 -1
  18. data/lib/facet/array/mid.rb +50 -1
  19. data/lib/facet/array/middle.rb +45 -1
  20. data/lib/facet/array/op_fetch.rb +40 -1
  21. data/lib/facet/array/op_store.rb +47 -1
  22. data/lib/facet/array/pick.rb +68 -1
  23. data/lib/facet/array/pos.rb +39 -1
  24. data/lib/facet/array/pull.rb +37 -1
  25. data/lib/facet/array/rand_index.rb +30 -1
  26. data/lib/facet/array/rand_subset.rb +56 -1
  27. data/lib/facet/array/range.rb +47 -1
  28. data/lib/facet/array/rotate.rb +67 -1
  29. data/lib/facet/array/select.rb +37 -1
  30. data/lib/facet/array/shuffle.rb +66 -1
  31. data/lib/facet/array/slap.rb +37 -1
  32. data/lib/facet/array/store.rb +7 -1
  33. data/lib/facet/array/tail.rb +2 -1
  34. data/lib/facet/array/thru.rb +38 -1
  35. data/lib/facet/array/to_b.rb +31 -1
  36. data/lib/facet/array/to_h.rb +57 -1
  37. data/lib/facet/array/to_hash.rb +46 -1
  38. data/lib/facet/array/unzip.rb +20 -1
  39. data/lib/facet/binding.rb +14 -1
  40. data/lib/facet/binding/__DIR__.rb +2 -1
  41. data/lib/facet/binding/__FILE__.rb +2 -1
  42. data/lib/facet/binding/__LINE__.rb +58 -1
  43. data/lib/facet/binding/call_stack.rb +42 -1
  44. data/lib/facet/binding/called.rb +41 -1
  45. data/lib/facet/binding/caller.rb +42 -1
  46. data/lib/facet/binding/defined.rb +41 -1
  47. data/lib/facet/binding/eval.rb +42 -1
  48. data/lib/facet/binding/local_variables.rb +45 -1
  49. data/lib/facet/binding/method_name.rb +48 -1
  50. data/lib/facet/binding/op_fetch.rb +45 -1
  51. data/lib/facet/binding/op_store.rb +46 -1
  52. data/lib/facet/binding/self.rb +41 -1
  53. data/lib/facet/binding/self/of_caller.rb +122 -1
  54. data/lib/facet/class.rb +5 -1
  55. data/lib/facet/class/by_name.rb +1 -1
  56. data/lib/facet/class/descendents.rb +44 -1
  57. data/lib/facet/class/remove_descendents.rb +46 -1
  58. data/lib/facet/class/remove_subclasses.rb +2 -1
  59. data/lib/facet/class/subclasses.rb +2 -1
  60. data/lib/facet/comparable.rb +5 -1
  61. data/lib/facet/comparable/at_least.rb +53 -1
  62. data/lib/facet/comparable/at_most.rb +2 -1
  63. data/lib/facet/comparable/cap.rb +2 -1
  64. data/lib/facet/comparable/clip.rb +72 -1
  65. data/lib/facet/comparable/cmp.rb +38 -1
  66. data/lib/facet/continuation.rb +1 -1
  67. data/lib/facet/continuation/self/create.rb +71 -1
  68. data/lib/facet/date.rb +0 -1
  69. data/lib/facet/date/days_in_month.rb +42 -1
  70. data/lib/facet/date/days_of_month.rb +34 -1
  71. data/lib/facet/date/stamp.rb +52 -1
  72. data/lib/facet/date/to_date.rb +36 -1
  73. data/lib/facet/date/to_s.rb +33 -1
  74. data/lib/facet/date/to_time.rb +36 -1
  75. data/lib/facet/dir.rb +4 -1
  76. data/lib/facet/dir/self/ancestor.rb +33 -1
  77. data/lib/facet/dir/self/ascend.rb +56 -1
  78. data/lib/facet/dir/self/ls_r.rb +76 -1
  79. data/lib/facet/dir/self/recurse.rb +2 -1
  80. data/lib/facet/enumerable.rb +38 -1
  81. data/lib/facet/enumerable/collect_with_counter.rb +2 -1
  82. data/lib/facet/enumerable/collect_with_index.rb +51 -1
  83. data/lib/facet/enumerable/commonality.rb +63 -1
  84. data/lib/facet/enumerable/compact_collect.rb +50 -1
  85. data/lib/facet/enumerable/compact_map.rb +2 -1
  86. data/lib/facet/enumerable/cross.rb +44 -1
  87. data/lib/facet/enumerable/each_by.rb +2 -1
  88. data/lib/facet/enumerable/each_combination.rb +59 -1
  89. data/lib/facet/enumerable/each_pair.rb +50 -1
  90. data/lib/facet/enumerable/each_permutation.rb +2 -1
  91. data/lib/facet/enumerable/each_slice.rb +131 -1
  92. data/lib/facet/enumerable/each_unique_pair.rb +66 -1
  93. data/lib/facet/enumerable/each_with_counter.rb +8 -1
  94. data/lib/facet/enumerable/elementwise.rb +2 -1
  95. data/lib/facet/enumerable/entropy.rb +52 -1
  96. data/lib/facet/enumerable/every.rb +65 -1
  97. data/lib/facet/enumerable/ew.rb +64 -1
  98. data/lib/facet/enumerable/filter_collect.rb +58 -1
  99. data/lib/facet/enumerable/filter_map.rb +2 -1
  100. data/lib/facet/enumerable/find_collisions.rb +41 -1
  101. data/lib/facet/enumerable/frequency.rb +39 -1
  102. data/lib/facet/enumerable/graph.rb +59 -1
  103. data/lib/facet/enumerable/ideal_entropy.rb +49 -1
  104. data/lib/facet/enumerable/map_with_counter.rb +2 -1
  105. data/lib/facet/enumerable/map_with_index.rb +2 -1
  106. data/lib/facet/enumerable/none.rb +56 -1
  107. data/lib/facet/enumerable/nonuniq.rb +39 -1
  108. data/lib/facet/enumerable/occur.rb +62 -1
  109. data/lib/facet/enumerable/one.rb +65 -1
  110. data/lib/facet/enumerable/op_pow.rb +38 -1
  111. data/lib/facet/enumerable/partition_by.rb +55 -1
  112. data/lib/facet/enumerable/permute.rb +135 -0
  113. data/lib/facet/enumerable/probability.rb +59 -1
  114. data/lib/facet/enumerable/project.rb +11 -1
  115. data/lib/facet/enumerable/self/combinations.rb +68 -1
  116. data/lib/facet/enumerable/self/cross.rb +79 -1
  117. data/lib/facet/enumerable/to_h.rb +50 -1
  118. data/lib/facet/enumerable/uniq_by.rb +39 -1
  119. data/lib/facet/enumerable/where.rb +12 -1
  120. data/lib/facet/file.rb +5 -1
  121. data/lib/facet/file/self/create.rb +52 -1
  122. data/lib/facet/file/self/open_as_string.rb +81 -1
  123. data/lib/facet/file/self/read_list.rb +47 -1
  124. data/lib/facet/file/self/sanitize.rb +50 -1
  125. data/lib/facet/file/self/split_all.rb +36 -1
  126. data/lib/facet/fileutils.rb +0 -1
  127. data/lib/facet/fileutils/head.rb +2 -1
  128. data/lib/facet/fileutils/safe_ln.rb +38 -1
  129. data/lib/facet/fileutils/slice.rb +152 -1
  130. data/lib/facet/fileutils/split_all.rb +29 -1
  131. data/lib/facet/fileutils/tail.rb +2 -1
  132. data/lib/facet/fileutils/wc.rb +128 -1
  133. data/lib/facet/fileutils/whereis.rb +76 -1
  134. data/lib/facet/fileutils/which.rb +117 -1
  135. data/lib/facet/float.rb +3 -1
  136. data/lib/facet/float/approx.rb +42 -1
  137. data/lib/facet/float/round_at.rb +72 -1
  138. data/lib/facet/float/round_to.rb +73 -1
  139. data/lib/facet/hash.rb +40 -1
  140. data/lib/facet/hash/alias.rb +54 -1
  141. data/lib/facet/hash/assert_has_keys.rb +38 -1
  142. data/lib/facet/hash/assert_has_only_keys.rb +38 -1
  143. data/lib/facet/hash/at.rb +26 -1
  144. data/lib/facet/hash/collate.rb +53 -1
  145. data/lib/facet/hash/delete_unless.rb +15 -1
  146. data/lib/facet/hash/each.rb +61 -1
  147. data/lib/facet/hash/each_with_index.rb +35 -1
  148. data/lib/facet/hash/each_with_key.rb +32 -1
  149. data/lib/facet/hash/graph.rb +31 -1
  150. data/lib/facet/hash/has_keys.rb +37 -1
  151. data/lib/facet/hash/has_only_keys.rb +37 -1
  152. data/lib/facet/hash/inverse.rb +51 -1
  153. data/lib/facet/hash/join.rb +19 -1
  154. data/lib/facet/hash/keys_to_iv.rb +60 -1
  155. data/lib/facet/hash/keys_to_s.rb +80 -1
  156. data/lib/facet/hash/keys_to_sym.rb +91 -1
  157. data/lib/facet/hash/op_fetch.rb +146 -1
  158. data/lib/facet/hash/op_lshift.rb +28 -1
  159. data/lib/facet/hash/op_store.rb +2 -1
  160. data/lib/facet/hash/rand_key.rb +47 -1
  161. data/lib/facet/hash/rand_pair.rb +50 -1
  162. data/lib/facet/hash/rand_value.rb +60 -1
  163. data/lib/facet/hash/replace_each.rb +33 -1
  164. data/lib/facet/hash/self/zipnew.rb +37 -1
  165. data/lib/facet/hash/shuffle.rb +53 -1
  166. data/lib/facet/hash/slice.rb +33 -1
  167. data/lib/facet/hash/stringify_keys.rb +2 -1
  168. data/lib/facet/hash/swap.rb +36 -1
  169. data/lib/facet/hash/swapkey.rb +44 -1
  170. data/lib/facet/hash/symoblize_keys.rb +2 -1
  171. data/lib/facet/hash/to_h.rb +35 -1
  172. data/lib/facet/hash/to_ostruct.rb +40 -1
  173. data/lib/facet/hash/to_ostruct_recurse.rb +45 -1
  174. data/lib/facet/hash/traverse.rb +63 -1
  175. data/lib/facet/hash/update_each.rb +43 -1
  176. data/lib/facet/hash/update_keys.rb +31 -1
  177. data/lib/facet/hash/update_values.rb +32 -1
  178. data/lib/facet/hash/variablize_keys.rb +2 -1
  179. data/lib/facet/hash/weave.rb +88 -1
  180. data/lib/facet/integer.rb +8 -1
  181. data/lib/facet/integer/even.rb +2 -1
  182. data/lib/facet/integer/fac.rb +2 -0
  183. data/lib/facet/integer/fact.rb +2 -1
  184. data/lib/facet/integer/factorial.rb +61 -1
  185. data/lib/facet/integer/multiple.rb +69 -1
  186. data/lib/facet/integer/odd.rb +2 -1
  187. data/lib/facet/integer/ordinal.rb +41 -1
  188. data/lib/facet/integer/times_collect.rb +39 -1
  189. data/lib/facet/integer/times_map.rb +2 -1
  190. data/lib/facet/kernel.rb +65 -1
  191. data/lib/facet/kernel/__DIR__.rb +11 -0
  192. data/lib/facet/kernel/__class__.rb +31 -1
  193. data/lib/facet/kernel/__meta__.rb +28 -1
  194. data/lib/facet/kernel/adhoc.rb +11 -0
  195. data/lib/facet/kernel/as.rb +91 -1
  196. data/lib/facet/kernel/assign_from.rb +82 -1
  197. data/lib/facet/kernel/assign_with.rb +75 -1
  198. data/lib/facet/kernel/autoreload.rb +46 -1
  199. data/lib/facet/kernel/autoreload_glob.rb +36 -1
  200. data/lib/facet/kernel/bool.rb +77 -1
  201. data/lib/facet/kernel/bug.rb +39 -1
  202. data/lib/facet/kernel/call_stack.rb +59 -1
  203. data/lib/facet/kernel/called.rb +40 -1
  204. data/lib/facet/kernel/complete.rb +6 -1
  205. data/lib/facet/kernel/constant.rb +52 -1
  206. data/lib/facet/kernel/copy.rb +48 -1
  207. data/lib/facet/kernel/deep_copy.rb +49 -1
  208. data/lib/facet/kernel/demo.rb +46 -1
  209. data/lib/facet/kernel/eigenclass.rb +17 -1
  210. data/lib/facet/kernel/false.rb +2 -1
  211. data/lib/facet/kernel/fn.rb +33 -1
  212. data/lib/facet/kernel/generate_method_name.rb +39 -1
  213. data/lib/facet/kernel/get_by_id.rb +33 -1
  214. data/lib/facet/kernel/here.rb +34 -1
  215. data/lib/facet/kernel/in.rb +35 -1
  216. data/lib/facet/kernel/instance_assign.rb +25 -1
  217. data/lib/facet/kernel/instvar.rb +13 -1
  218. data/lib/facet/kernel/is.rb +5 -1
  219. data/lib/facet/kernel/maybe.rb +41 -1
  220. data/lib/facet/kernel/me.rb +17 -1
  221. data/lib/facet/kernel/meta.rb +2 -1
  222. data/lib/facet/kernel/metaclass.rb +42 -1
  223. data/lib/facet/kernel/method.rb +76 -1
  224. data/lib/facet/kernel/method_name.rb +49 -1
  225. data/lib/facet/kernel/methods.rb +79 -1
  226. data/lib/facet/kernel/nack.rb +12 -1
  227. data/lib/facet/kernel/new.rb +40 -1
  228. data/lib/facet/kernel/object_class.rb +31 -1
  229. data/lib/facet/kernel/object_hexid.rb +35 -1
  230. data/lib/facet/kernel/op_esc.rb +37 -1
  231. data/lib/facet/kernel/own.rb +17 -1
  232. data/lib/facet/kernel/p.rb +12 -1
  233. data/lib/facet/kernel/require_all.rb +44 -1
  234. data/lib/facet/kernel/require_esc.rb +42 -1
  235. data/lib/facet/kernel/require_facet.rb +41 -1
  236. data/lib/facet/kernel/require_local.rb +25 -1
  237. data/lib/facet/kernel/resc.rb +32 -1
  238. data/lib/facet/kernel/returning.rb +49 -1
  239. data/lib/facet/kernel/send_as.rb +34 -1
  240. data/lib/facet/kernel/set_from.rb +69 -1
  241. data/lib/facet/kernel/set_with.rb +74 -1
  242. data/lib/facet/kernel/silence_warnings.rb +2 -1
  243. data/lib/facet/kernel/silently.rb +41 -1
  244. data/lib/facet/kernel/singleton.rb +47 -1
  245. data/lib/facet/kernel/superior.rb +53 -1
  246. data/lib/facet/kernel/supermethod.rb +44 -1
  247. data/lib/facet/kernel/this.rb +33 -1
  248. data/lib/facet/kernel/to_b.rb +41 -1
  249. data/lib/facet/kernel/to_bool.rb +47 -1
  250. data/lib/facet/kernel/true.rb +2 -1
  251. data/lib/facet/kernel/unuri.rb +2 -1
  252. data/lib/facet/kernel/uri.rb +38 -1
  253. data/lib/facet/kernel/val.rb +52 -1
  254. data/lib/facet/kernel/warn_with_line.rb +30 -1
  255. data/lib/facet/kernel/with_accessor.rb +94 -1
  256. data/lib/facet/kernel/with_reader.rb +2 -1
  257. data/lib/facet/kernel/with_writer.rb +2 -1
  258. data/lib/facet/logger.rb +0 -1
  259. data/lib/facet/logger/format.rb +28 -1
  260. data/lib/facet/logger/format_message.rb +1 -1
  261. data/lib/facet/matchdata.rb +3 -1
  262. data/lib/facet/matchdata/match.rb +37 -1
  263. data/lib/facet/matchdata/matchset.rb +2 -1
  264. data/lib/facet/matchdata/matchtree.rb +62 -1
  265. data/lib/facet/module.rb +40 -1
  266. data/lib/facet/module/abstract.rb +50 -1
  267. data/lib/facet/module/alias_module_function.rb +57 -1
  268. data/lib/facet/module/ancestor.rb +38 -1
  269. data/lib/facet/module/attr.rb +23 -1
  270. data/lib/facet/module/attr_setter.rb +48 -1
  271. data/lib/facet/module/attr_tester.rb +56 -1
  272. data/lib/facet/module/basename.rb +39 -1
  273. data/lib/facet/module/by_name.rb +68 -1
  274. data/lib/facet/module/cattr_accessor.rb +141 -1
  275. data/lib/facet/module/cattr_reader.rb +2 -1
  276. data/lib/facet/module/cattr_writer.rb +2 -1
  277. data/lib/facet/module/clone_removing.rb +2 -1
  278. data/lib/facet/module/clone_renaming.rb +2 -1
  279. data/lib/facet/module/clone_using.rb +87 -1
  280. data/lib/facet/module/dirname.rb +42 -1
  281. data/lib/facet/module/equate_on.rb +70 -1
  282. data/lib/facet/module/generate_instance_method_name.rb +47 -1
  283. data/lib/facet/module/include_as.rb +102 -1
  284. data/lib/facet/module/initializer.rb +65 -1
  285. data/lib/facet/module/instance_methods.rb +186 -1
  286. data/lib/facet/module/integrate.rb +51 -1
  287. data/lib/facet/module/is.rb +34 -1
  288. data/lib/facet/module/memoize.rb +95 -1
  289. data/lib/facet/module/modspace.rb +43 -1
  290. data/lib/facet/module/namespace.rb +61 -1
  291. data/lib/facet/module/nesting.rb +45 -1
  292. data/lib/facet/module/redef.rb +31 -1
  293. data/lib/facet/module/redefine_method.rb +57 -1
  294. data/lib/facet/module/redirect.rb +30 -1
  295. data/lib/facet/module/redirect_method.rb +64 -1
  296. data/lib/facet/module/remove.rb +29 -1
  297. data/lib/facet/module/rename.rb +31 -1
  298. data/lib/facet/module/rename_method.rb +38 -1
  299. data/lib/facet/module/revisal.rb +49 -1
  300. data/lib/facet/module/shadow_all.rb +17 -1
  301. data/lib/facet/module/shadow_method.rb +42 -1
  302. data/lib/facet/module/sort_on.rb +73 -1
  303. data/lib/facet/module/undef.rb +29 -1
  304. data/lib/facet/module/wrap.rb +30 -1
  305. data/lib/facet/module/wrap_method.rb +48 -1
  306. data/lib/facet/nilclass.rb +7 -1
  307. data/lib/facet/nilclass/empty.rb +32 -1
  308. data/lib/facet/nilclass/include.rb +32 -1
  309. data/lib/facet/nilclass/length.rb +2 -1
  310. data/lib/facet/nilclass/op_fetch.rb +37 -1
  311. data/lib/facet/nilclass/size.rb +44 -1
  312. data/lib/facet/nilclass/to_f.rb +32 -1
  313. data/lib/facet/nilclass/to_h.rb +33 -1
  314. data/lib/facet/numeric.rb +5 -1
  315. data/lib/facet/numeric/ceil_multiple.rb +40 -1
  316. data/lib/facet/numeric/pred.rb +2 -1
  317. data/lib/facet/numeric/succ.rb +69 -1
  318. data/lib/facet/numeric/to_b.rb +38 -1
  319. data/lib/facet/ostruct.rb +0 -1
  320. data/lib/facet/ostruct/__merge__.rb +52 -1
  321. data/lib/facet/ostruct/__table__.rb +17 -1
  322. data/lib/facet/ostruct/__update__.rb +45 -1
  323. data/lib/facet/ostruct/op_fetch.rb +40 -1
  324. data/lib/facet/ostruct/op_store.rb +42 -1
  325. data/lib/facet/ostruct/to_h.rb +8 -1
  326. data/lib/facet/pathname.rb +2 -1
  327. data/lib/facet/pathname/ascend.rb +22 -1
  328. data/lib/facet/pathname/descend.rb +20 -1
  329. data/lib/facet/proc.rb +3 -1
  330. data/lib/facet/proc/compose.rb +62 -1
  331. data/lib/facet/proc/op_mul.rb +2 -1
  332. data/lib/facet/proc/to_method.rb +74 -1
  333. data/lib/facet/range.rb +4 -1
  334. data/lib/facet/range/to_r.rb +32 -1
  335. data/lib/facet/range/to_range.rb +36 -1
  336. data/lib/facet/range/umbrella.rb +67 -1
  337. data/lib/facet/range/within.rb +44 -1
  338. data/lib/facet/regexp.rb +3 -1
  339. data/lib/facet/regexp/arity.rb +41 -1
  340. data/lib/facet/regexp/to_re.rb +38 -1
  341. data/lib/facet/regexp/to_regexp.rb +36 -1
  342. data/lib/facet/string.rb +86 -1
  343. data/lib/facet/string/align_center.rb +87 -1
  344. data/lib/facet/string/align_left.rb +2 -1
  345. data/lib/facet/string/align_right.rb +2 -1
  346. data/lib/facet/string/at.rb +8 -1
  347. data/lib/facet/string/at_rand.rb +65 -1
  348. data/lib/facet/string/basename.rb +48 -1
  349. data/lib/facet/string/blank.rb +36 -1
  350. data/lib/facet/string/bracket.rb +70 -1
  351. data/lib/facet/string/brief.rb +33 -1
  352. data/lib/facet/string/bytes.rb +19 -1
  353. data/lib/facet/string/camelcase.rb +58 -1
  354. data/lib/facet/string/camelize.rb +35 -1
  355. data/lib/facet/string/capitalized.rb +38 -1
  356. data/lib/facet/string/chars.rb +34 -1
  357. data/lib/facet/string/cmp.rb +43 -1
  358. data/lib/facet/string/demodulize.rb +40 -1
  359. data/lib/facet/string/dequote.rb +29 -1
  360. data/lib/facet/string/downcase.rb +37 -1
  361. data/lib/facet/string/dresner.rb +49 -1
  362. data/lib/facet/string/each_char.rb +35 -1
  363. data/lib/facet/string/each_word.rb +50 -1
  364. data/lib/facet/string/ends_with.rb +2 -1
  365. data/lib/facet/string/first.rb +94 -1
  366. data/lib/facet/string/first_char.rb +20 -1
  367. data/lib/facet/string/fold.rb +67 -1
  368. data/lib/facet/string/format.rb +17 -1
  369. data/lib/facet/string/frequency.rb +39 -1
  370. data/lib/facet/string/humanize.rb +31 -1
  371. data/lib/facet/string/indent.rb +68 -1
  372. data/lib/facet/string/index_all.rb +40 -1
  373. data/lib/facet/string/last.rb +94 -1
  374. data/lib/facet/string/last_char.rb +22 -1
  375. data/lib/facet/string/line_wrap.rb +77 -1
  376. data/lib/facet/string/lines.rb +33 -1
  377. data/lib/facet/string/lowercase.rb +32 -1
  378. data/lib/facet/string/margin.rb +138 -1
  379. data/lib/facet/string/mscan.rb +42 -1
  380. data/lib/facet/string/natcmp.rb +108 -1
  381. data/lib/facet/string/nchar.rb +45 -1
  382. data/lib/facet/string/ordinal.rb +16 -1
  383. data/lib/facet/string/plural.rb +2 -1
  384. data/lib/facet/string/pop.rb +54 -1
  385. data/lib/facet/string/probability.rb +34 -1
  386. data/lib/facet/string/pull.rb +17 -1
  387. data/lib/facet/string/push.rb +44 -1
  388. data/lib/facet/string/quote.rb +68 -1
  389. data/lib/facet/string/rand_byte.rb +55 -1
  390. data/lib/facet/string/rand_index.rb +29 -1
  391. data/lib/facet/string/range.rb +37 -1
  392. data/lib/facet/string/range_all.rb +48 -1
  393. data/lib/facet/string/range_of_line.rb +42 -1
  394. data/lib/facet/string/regesc.rb +32 -0
  395. data/lib/facet/string/self/format.rb +17 -1
  396. data/lib/facet/string/self/interpolate.rb +31 -1
  397. data/lib/facet/string/self/patterns.rb +51 -1
  398. data/lib/facet/string/self/rand_letter.rb +34 -1
  399. data/lib/facet/string/self/random.rb +36 -1
  400. data/lib/facet/string/shatter.rb +45 -1
  401. data/lib/facet/string/shift.rb +42 -1
  402. data/lib/facet/string/shuffle.rb +42 -1
  403. data/lib/facet/string/similarity.rb +108 -1
  404. data/lib/facet/string/singular.rb +117 -1
  405. data/lib/facet/string/slap.rb +44 -1
  406. data/lib/facet/string/soundex.rb +102 -1
  407. data/lib/facet/string/starts_with.rb +24 -1
  408. data/lib/facet/string/succ.rb +38 -1
  409. data/lib/facet/string/tab.rb +2 -1
  410. data/lib/facet/string/tabto.rb +2 -1
  411. data/lib/facet/string/to_a.rb +35 -1
  412. data/lib/facet/string/to_arr.rb +55 -1
  413. data/lib/facet/string/to_b.rb +64 -1
  414. data/lib/facet/string/to_const.rb +39 -1
  415. data/lib/facet/string/to_date.rb +35 -1
  416. data/lib/facet/string/to_proc.rb +54 -1
  417. data/lib/facet/string/to_re.rb +46 -1
  418. data/lib/facet/string/to_rx.rb +2 -0
  419. data/lib/facet/string/to_time.rb +34 -1
  420. data/lib/facet/string/unbracket.rb +46 -1
  421. data/lib/facet/string/underscore.rb +18 -1
  422. data/lib/facet/string/unix_crypt.rb +41 -1
  423. data/lib/facet/string/unpack.rb +45 -1
  424. data/lib/facet/string/unshift.rb +42 -1
  425. data/lib/facet/string/upcase.rb +45 -1
  426. data/lib/facet/string/uppercase.rb +2 -1
  427. data/lib/facet/string/whitespace.rb +27 -1
  428. data/lib/facet/string/word_filter.rb +61 -1
  429. data/lib/facet/string/word_wrap.rb +90 -1
  430. data/lib/facet/string/words.rb +45 -1
  431. data/lib/facet/symbol.rb +13 -1
  432. data/lib/facet/symbol/camelcase.rb +42 -1
  433. data/lib/facet/symbol/camelize.rb +33 -1
  434. data/lib/facet/symbol/capitalize.rb +31 -1
  435. data/lib/facet/symbol/capitalized.rb +33 -1
  436. data/lib/facet/symbol/downcase.rb +36 -1
  437. data/lib/facet/symbol/not.rb +40 -1
  438. data/lib/facet/symbol/pad.rb +43 -1
  439. data/lib/facet/symbol/succ.rb +42 -1
  440. data/lib/facet/symbol/to_const.rb +40 -1
  441. data/lib/facet/symbol/to_proc.rb +45 -1
  442. data/lib/facet/symbol/to_str.rb +39 -1
  443. data/lib/facet/symbol/underscore.rb +32 -1
  444. data/lib/facet/symbol/upcase.rb +37 -1
  445. data/lib/facet/time.rb +7 -1
  446. data/lib/facet/time/change.rb +51 -1
  447. data/lib/facet/time/elapse.rb +41 -1
  448. data/lib/facet/time/self/days_extrema.rb +22 -1
  449. data/lib/facet/time/stamp.rb +47 -1
  450. data/lib/facet/time/to_date.rb +37 -1
  451. data/lib/facet/time/to_s.rb +33 -1
  452. data/lib/facet/time/to_time.rb +36 -1
  453. data/lib/facet/unboundmethod.rb +1 -1
  454. data/lib/facet/unboundmethod/name.rb +8 -1
  455. data/lib/facets.rb +135 -154
  456. data/lib/facets/english/bytes.rb +212 -0
  457. data/lib/facets/english/multipliers.rb +192 -0
  458. data/lib/facets/english/ormsupport.rb +233 -0
  459. data/lib/facets/english/time.rb +327 -0
  460. data/lib/facets/group/inflect.rb +71 -0
  461. data/lib/facets/group/nilasemptiness.rb +34 -0
  462. data/lib/facets/group/random.rb +21 -0
  463. data/lib/facets/group/stringasarray.rb +16 -0
  464. data/lib/facets/method/README +1 -0
  465. data/lib/facets/support/functor.rb +49 -0
  466. data/test/lib/facet/array/test_at_rand.rb +34 -0
  467. data/test/lib/facet/array/test_delete_unless.rb +28 -0
  468. data/test/lib/facet/array/test_delete_values.rb +28 -0
  469. data/test/lib/facet/array/test_delete_values_at.rb +31 -0
  470. data/test/lib/facet/array/test_first.rb +46 -0
  471. data/test/lib/facet/array/test_head.rb +42 -0
  472. data/test/lib/facet/array/test_last_index.rb +26 -0
  473. data/test/lib/facet/array/test_merge.rb +35 -0
  474. data/test/lib/facet/array/test_mid.rb +33 -0
  475. data/test/lib/facet/array/test_middle.rb +29 -0
  476. data/test/lib/facet/array/test_op_fetch.rb +27 -0
  477. data/test/lib/facet/array/test_op_store.rb +30 -0
  478. data/test/lib/facet/array/test_pick.rb +40 -0
  479. data/test/lib/facet/array/test_pos.rb +28 -0
  480. data/test/lib/facet/array/test_pull.rb +28 -0
  481. data/test/lib/facet/array/test_rand_index.rb +29 -0
  482. data/test/lib/facet/array/test_rand_subset.rb +29 -0
  483. data/test/lib/facet/array/test_range.rb +32 -0
  484. data/test/lib/facet/array/test_rotate.rb +36 -0
  485. data/test/lib/facet/array/test_select.rb +28 -0
  486. data/test/lib/facet/array/test_shuffle.rb +35 -0
  487. data/test/lib/facet/array/test_slap.rb +28 -0
  488. data/test/lib/facet/array/test_thru.rb +27 -0
  489. data/test/lib/facet/array/test_to_b.rb +27 -0
  490. data/test/lib/facet/array/test_to_h.rb +33 -0
  491. data/test/lib/facet/array/test_to_hash.rb +27 -0
  492. data/test/lib/facet/binding/self/test_of_caller.rb +35 -0
  493. data/test/lib/facet/binding/test___LINE__.rb +43 -0
  494. data/test/lib/facet/binding/test_call_stack.rb +34 -0
  495. data/test/lib/facet/binding/test_called.rb +30 -0
  496. data/test/lib/facet/binding/test_caller.rb +35 -0
  497. data/test/lib/facet/binding/test_defined.rb +34 -0
  498. data/test/lib/facet/binding/test_eval.rb +34 -0
  499. data/test/lib/facet/binding/test_local_variables.rb +34 -0
  500. data/test/lib/facet/binding/test_method_name.rb +34 -0
  501. data/test/lib/facet/binding/test_op_fetch.rb +34 -0
  502. data/test/lib/facet/binding/test_op_store.rb +35 -0
  503. data/test/lib/facet/binding/test_self.rb +34 -0
  504. data/test/lib/facet/class/test_descendents.rb +30 -0
  505. data/test/lib/facet/class/test_remove_descendents.rb +32 -0
  506. data/test/lib/facet/comparable/test_at_least.rb +34 -0
  507. data/test/lib/facet/comparable/test_clip.rb +44 -0
  508. data/test/lib/facet/comparable/test_cmp.rb +28 -0
  509. data/test/lib/facet/continuation/self/test_create.rb +26 -0
  510. data/test/lib/facet/date/test_days_in_month.rb +30 -0
  511. data/test/lib/facet/date/test_days_of_month.rb +30 -0
  512. data/test/lib/facet/date/test_stamp.rb +38 -0
  513. data/test/lib/facet/date/test_to_date.rb +30 -0
  514. data/test/lib/facet/date/test_to_s.rb +30 -0
  515. data/test/lib/facet/date/test_to_time.rb +30 -0
  516. data/test/lib/facet/dir/self/test_ancestor.rb +26 -0
  517. data/test/lib/facet/dir/self/test_ascend.rb +41 -0
  518. data/test/lib/facet/dir/self/test_ls_r.rb +52 -0
  519. data/test/lib/facet/enumerable/self/test_combinations.rb +43 -0
  520. data/test/lib/facet/enumerable/self/test_cross.rb +31 -0
  521. data/test/lib/facet/enumerable/test_collect_with_index.rb +27 -0
  522. data/test/lib/facet/enumerable/test_commonality.rb +31 -0
  523. data/test/lib/facet/enumerable/test_compact_collect.rb +27 -0
  524. data/test/lib/facet/enumerable/test_cross.rb +30 -0
  525. data/test/lib/facet/enumerable/test_each_combination.rb +29 -0
  526. data/test/lib/facet/enumerable/test_each_pair.rb +29 -0
  527. data/test/lib/facet/enumerable/test_each_slice.rb +74 -0
  528. data/test/lib/facet/enumerable/test_each_unique_pair.rb +29 -0
  529. data/test/lib/facet/enumerable/test_entropy.rb +26 -0
  530. data/test/lib/facet/enumerable/test_every.rb +35 -0
  531. data/test/lib/facet/enumerable/test_ew.rb +31 -0
  532. data/test/lib/facet/enumerable/test_filter_collect.rb +31 -0
  533. data/test/lib/facet/enumerable/test_find_collisions.rb +30 -0
  534. data/test/lib/facet/enumerable/test_frequency.rb +27 -0
  535. data/test/lib/facet/enumerable/test_graph.rb +30 -0
  536. data/test/lib/facet/enumerable/test_ideal_entropy.rb +27 -0
  537. data/test/lib/facet/enumerable/test_none.rb +33 -0
  538. data/test/lib/facet/enumerable/test_occur.rb +30 -0
  539. data/test/lib/facet/enumerable/test_one.rb +35 -0
  540. data/test/lib/facet/enumerable/test_op_pow.rb +27 -0
  541. data/test/lib/facet/enumerable/test_partition_by.rb +31 -0
  542. data/test/lib/facet/enumerable/test_permute.rb +29 -0
  543. data/test/lib/facet/enumerable/test_probability.rb +27 -0
  544. data/test/lib/facet/enumerable/test_to_h.rb +27 -0
  545. data/test/lib/facet/enumerable/test_uniq_by.rb +28 -0
  546. data/test/lib/facet/file/self/test_create.rb +39 -0
  547. data/test/lib/facet/file/self/test_open_as_string.rb +40 -0
  548. data/test/lib/facet/file/self/test_read_list.rb +37 -0
  549. data/test/lib/facet/file/self/test_sanitize.rb +46 -0
  550. data/test/lib/facet/file/self/test_split_all.rb +27 -0
  551. data/test/lib/facet/fileutils/test_slice.rb +96 -0
  552. data/test/lib/facet/fileutils/test_wc.rb +68 -0
  553. data/test/lib/facet/fileutils/test_which.rb +61 -0
  554. data/test/lib/facet/float/test_approx.rb +28 -0
  555. data/test/lib/facet/float/test_round_at.rb +46 -0
  556. data/test/lib/facet/float/test_round_to.rb +46 -0
  557. data/test/lib/facet/hash/self/test_zipnew.rb +28 -0
  558. data/test/lib/facet/hash/test_alias.rb +31 -0
  559. data/test/lib/facet/hash/test_assert_has_keys.rb +27 -0
  560. data/test/lib/facet/hash/test_assert_has_only_keys.rb +27 -0
  561. data/test/lib/facet/hash/test_at.rb +28 -0
  562. data/test/lib/facet/hash/test_collate.rb +35 -0
  563. data/test/lib/facet/hash/test_each.rb +36 -0
  564. data/test/lib/facet/hash/test_each_with_index.rb +29 -0
  565. data/test/lib/facet/hash/test_each_with_key.rb +29 -0
  566. data/test/lib/facet/hash/test_graph.rb +28 -0
  567. data/test/lib/facet/hash/test_has_keys.rb +27 -0
  568. data/test/lib/facet/hash/test_has_only_keys.rb +27 -0
  569. data/test/lib/facet/hash/test_inverse.rb +28 -0
  570. data/test/lib/facet/hash/test_keys_to_s.rb +34 -0
  571. data/test/lib/facet/hash/test_keys_to_sym.rb +34 -0
  572. data/test/lib/facet/hash/test_op_fetch.rb +111 -0
  573. data/test/lib/facet/hash/test_op_lshift.rb +29 -0
  574. data/test/lib/facet/hash/test_rand_key.rb +27 -0
  575. data/test/lib/facet/hash/test_rand_pair.rb +27 -0
  576. data/test/lib/facet/hash/test_rand_value.rb +27 -0
  577. data/test/lib/facet/hash/test_replace_each.rb +29 -0
  578. data/test/lib/facet/hash/test_shuffle.rb +32 -0
  579. data/test/lib/facet/hash/test_slice.rb +27 -0
  580. data/test/lib/facet/hash/test_swap.rb +27 -0
  581. data/test/lib/facet/hash/test_swapkey.rb +29 -0
  582. data/test/lib/facet/hash/test_to_h.rb +27 -0
  583. data/test/lib/facet/hash/test_to_ostruct.rb +30 -0
  584. data/test/lib/facet/hash/test_to_ostruct_recurse.rb +30 -0
  585. data/test/lib/facet/hash/test_traverse.rb +37 -0
  586. data/test/lib/facet/hash/test_update_each.rb +29 -0
  587. data/test/lib/facet/hash/test_update_keys.rb +28 -0
  588. data/test/lib/facet/hash/test_update_values.rb +28 -0
  589. data/test/lib/facet/hash/test_weave.rb +29 -0
  590. data/test/lib/facet/integer/test_factorial.rb +30 -0
  591. data/test/lib/facet/integer/test_multiple.rb +43 -0
  592. data/test/lib/facet/integer/test_ordinal.rb +29 -0
  593. data/test/lib/facet/integer/test_times_collect.rb +28 -0
  594. data/test/lib/facet/kernel/test___class__.rb +26 -0
  595. data/test/lib/facet/kernel/test_as.rb +42 -0
  596. data/test/lib/facet/kernel/test_assign_from.rb +31 -0
  597. data/test/lib/facet/kernel/test_assign_with.rb +31 -0
  598. data/test/lib/facet/kernel/test_bool.rb +41 -0
  599. data/test/lib/facet/kernel/test_bug.rb +26 -0
  600. data/test/lib/facet/kernel/test_call_stack.rb +26 -0
  601. data/test/lib/facet/kernel/test_called.rb +26 -0
  602. data/test/lib/facet/kernel/test_constant.rb +33 -0
  603. data/test/lib/facet/kernel/test_copy.rb +40 -0
  604. data/test/lib/facet/kernel/test_deep_copy.rb +40 -0
  605. data/test/lib/facet/kernel/test_demo.rb +28 -0
  606. data/test/lib/facet/kernel/test_fn.rb +26 -0
  607. data/test/lib/facet/kernel/test_generate_method_name.rb +26 -0
  608. data/test/lib/facet/kernel/test_get_by_id.rb +28 -0
  609. data/test/lib/facet/kernel/test_here.rb +26 -0
  610. data/test/lib/facet/kernel/test_in.rb +27 -0
  611. data/test/lib/facet/kernel/test_maybe.rb +26 -0
  612. data/test/lib/facet/kernel/test_metaclass.rb +34 -0
  613. data/test/lib/facet/kernel/test_method.rb +32 -0
  614. data/test/lib/facet/kernel/test_method_name.rb +31 -0
  615. data/test/lib/facet/kernel/test_methods.rb +50 -0
  616. data/test/lib/facet/kernel/test_new.rb +30 -0
  617. data/test/lib/facet/kernel/test_object_class.rb +26 -0
  618. data/test/lib/facet/kernel/test_object_hexid.rb +27 -0
  619. data/test/lib/facet/kernel/test_require_all.rb +26 -0
  620. data/test/lib/facet/kernel/test_require_esc.rb +27 -0
  621. data/test/lib/facet/kernel/test_require_facet.rb +27 -0
  622. data/test/lib/facet/kernel/test_resc.rb +27 -0
  623. data/test/lib/facet/kernel/test_returning.rb +30 -0
  624. data/test/lib/facet/kernel/test_send_as.rb +26 -0
  625. data/test/lib/facet/kernel/test_set_from.rb +33 -0
  626. data/test/lib/facet/kernel/test_set_with.rb +33 -0
  627. data/test/lib/facet/kernel/test_silently.rb +28 -0
  628. data/test/lib/facet/kernel/test_singleton.rb +40 -0
  629. data/test/lib/facet/kernel/test_superior.rb +30 -0
  630. data/test/lib/facet/kernel/test_supermethod.rb +33 -0
  631. data/test/lib/facet/kernel/test_this.rb +26 -0
  632. data/test/lib/facet/kernel/test_to_b.rb +28 -0
  633. data/test/lib/facet/kernel/test_to_bool.rb +28 -0
  634. data/test/lib/facet/kernel/test_uri.rb +30 -0
  635. data/test/lib/facet/kernel/test_val.rb +43 -0
  636. data/test/lib/facet/kernel/test_with_accessor.rb +51 -0
  637. data/test/lib/facet/matchdata/test_match.rb +29 -0
  638. data/test/lib/facet/matchdata/test_matchtree.rb +32 -0
  639. data/test/lib/facet/module/test_abstract.rb +36 -0
  640. data/test/lib/facet/module/test_alias_module_function.rb +34 -0
  641. data/test/lib/facet/module/test_ancestor.rb +26 -0
  642. data/test/lib/facet/module/test_basename.rb +26 -0
  643. data/test/lib/facet/module/test_by_name.rb +29 -0
  644. data/test/lib/facet/module/test_cattr_accessor.rb +55 -0
  645. data/test/lib/facet/module/test_clone_using.rb +55 -0
  646. data/test/lib/facet/module/test_dirname.rb +26 -0
  647. data/test/lib/facet/module/test_equate_on.rb +37 -0
  648. data/test/lib/facet/module/test_generate_instance_method_name.rb +33 -0
  649. data/test/lib/facet/module/test_include_as.rb +35 -0
  650. data/test/lib/facet/module/test_initializer.rb +32 -0
  651. data/test/lib/facet/module/test_instance_methods.rb +59 -0
  652. data/test/lib/facet/module/test_integrate.rb +35 -0
  653. data/test/lib/facet/module/test_memoize.rb +50 -0
  654. data/test/lib/facet/module/test_modspace.rb +27 -0
  655. data/test/lib/facet/module/test_namespace.rb +33 -0
  656. data/test/lib/facet/module/test_nesting.rb +36 -0
  657. data/test/lib/facet/module/test_redef.rb +30 -0
  658. data/test/lib/facet/module/test_redefine_method.rb +30 -0
  659. data/test/lib/facet/module/test_redirect.rb +30 -0
  660. data/test/lib/facet/module/test_redirect_method.rb +30 -0
  661. data/test/lib/facet/module/test_remove.rb +30 -0
  662. data/test/lib/facet/module/test_rename.rb +31 -0
  663. data/test/lib/facet/module/test_rename_method.rb +31 -0
  664. data/test/lib/facet/module/test_revisal.rb +35 -0
  665. data/test/lib/facet/module/test_shadow_method.rb +30 -0
  666. data/test/lib/facet/module/test_sort_on.rb +42 -0
  667. data/test/lib/facet/module/test_undef.rb +30 -0
  668. data/test/lib/facet/module/test_wrap.rb +30 -0
  669. data/test/lib/facet/module/test_wrap_method.rb +30 -0
  670. data/test/lib/facet/nilclass/test_empty.rb +26 -0
  671. data/test/lib/facet/nilclass/test_include.rb +26 -0
  672. data/test/lib/facet/nilclass/test_op_fetch.rb +28 -0
  673. data/test/lib/facet/nilclass/test_size.rb +30 -0
  674. data/test/lib/facet/nilclass/test_to_f.rb +26 -0
  675. data/test/lib/facet/nilclass/test_to_h.rb +26 -0
  676. data/test/lib/facet/numeric/test_ceil_multiple.rb +31 -0
  677. data/test/lib/facet/numeric/test_succ.rb +40 -0
  678. data/test/lib/facet/numeric/test_to_b.rb +27 -0
  679. data/test/lib/facet/ostruct/test___merge__.rb +38 -0
  680. data/test/lib/facet/ostruct/test___update__.rb +29 -0
  681. data/test/lib/facet/ostruct/test_op_fetch.rb +27 -0
  682. data/test/lib/facet/ostruct/test_op_store.rb +28 -0
  683. data/test/lib/facet/proc/test_compose.rb +36 -0
  684. data/test/lib/facet/proc/test_to_method.rb +31 -0
  685. data/test/lib/facet/range/test_to_r.rb +27 -0
  686. data/test/lib/facet/range/test_to_range.rb +27 -0
  687. data/test/lib/facet/range/test_umbrella.rb +34 -0
  688. data/test/lib/facet/range/test_within.rb +29 -0
  689. data/test/lib/facet/regexp/test_arity.rb +33 -0
  690. data/test/lib/facet/regexp/test_to_re.rb +27 -0
  691. data/test/lib/facet/regexp/test_to_regexp.rb +27 -0
  692. data/test/lib/facet/string/self/test_interpolate.rb +27 -0
  693. data/test/lib/facet/string/self/test_patterns.rb +28 -0
  694. data/test/lib/facet/string/self/test_rand_letter.rb +26 -0
  695. data/test/lib/facet/string/test_align_center.rb +34 -0
  696. data/test/lib/facet/string/test_at_rand.rb +35 -0
  697. data/test/lib/facet/string/test_basename.rb +41 -0
  698. data/test/lib/facet/string/test_blank.rb +27 -0
  699. data/test/lib/facet/string/test_bracket.rb +49 -0
  700. data/test/lib/facet/string/test_camelcase.rb +39 -0
  701. data/test/lib/facet/string/test_camelize.rb +26 -0
  702. data/test/lib/facet/string/test_capitalized.rb +26 -0
  703. data/test/lib/facet/string/test_chars.rb +27 -0
  704. data/test/lib/facet/string/test_cmp.rb +30 -0
  705. data/test/lib/facet/string/test_demodulize.rb +38 -0
  706. data/test/lib/facet/string/test_downcase.rb +26 -0
  707. data/test/lib/facet/string/test_dresner.rb +32 -0
  708. data/test/lib/facet/string/test_each_char.rb +29 -0
  709. data/test/lib/facet/string/test_each_word.rb +29 -0
  710. data/test/lib/facet/string/test_first.rb +43 -0
  711. data/test/lib/facet/string/test_fold.rb +34 -0
  712. data/test/lib/facet/string/test_frequency.rb +28 -0
  713. data/test/lib/facet/string/test_humanize.rb +26 -0
  714. data/test/lib/facet/string/test_indent.rb +40 -0
  715. data/test/lib/facet/string/test_index_all.rb +26 -0
  716. data/test/lib/facet/string/test_last.rb +46 -0
  717. data/test/lib/facet/string/test_line_wrap.rb +27 -0
  718. data/test/lib/facet/string/test_lines.rb +26 -0
  719. data/test/lib/facet/string/test_lowercase.rb +26 -0
  720. data/test/lib/facet/string/test_margin.rb +117 -0
  721. data/test/lib/facet/string/test_mscan.rb +30 -0
  722. data/test/lib/facet/string/test_natcmp.rb +30 -0
  723. data/test/lib/facet/string/test_nchar.rb +29 -0
  724. data/test/lib/facet/string/test_pop.rb +47 -0
  725. data/test/lib/facet/string/test_probability.rb +28 -0
  726. data/test/lib/facet/string/test_push.rb +40 -0
  727. data/test/lib/facet/string/test_quote.rb +49 -0
  728. data/test/lib/facet/string/test_rand_byte.rb +35 -0
  729. data/test/lib/facet/string/test_rand_index.rb +26 -0
  730. data/test/lib/facet/string/test_range.rb +27 -0
  731. data/test/lib/facet/string/test_range_all.rb +27 -0
  732. data/test/lib/facet/string/test_range_of_line.rb +28 -0
  733. data/test/lib/facet/string/test_regesc.rb +28 -0
  734. data/test/lib/facet/string/test_shatter.rb +29 -0
  735. data/test/lib/facet/string/test_shift.rb +40 -0
  736. data/test/lib/facet/string/test_shuffle.rb +27 -0
  737. data/test/lib/facet/string/test_similarity.rb +26 -0
  738. data/test/lib/facet/string/test_singular.rb +32 -0
  739. data/test/lib/facet/string/test_slap.rb +40 -0
  740. data/test/lib/facet/string/test_soundex.rb +41 -0
  741. data/test/lib/facet/string/test_succ.rb +29 -0
  742. data/test/lib/facet/string/test_to_a.rb +27 -0
  743. data/test/lib/facet/string/test_to_arr.rb +26 -0
  744. data/test/lib/facet/string/test_to_b.rb +41 -0
  745. data/test/lib/facet/string/test_to_const.rb +28 -0
  746. data/test/lib/facet/string/test_to_date.rb +30 -0
  747. data/test/lib/facet/string/test_to_proc.rb +33 -0
  748. data/test/lib/facet/string/test_to_re.rb +28 -0
  749. data/test/lib/facet/string/test_to_time.rb +30 -0
  750. data/test/lib/facet/string/test_unix_crypt.rb +30 -0
  751. data/test/lib/facet/string/test_unpack.rb +34 -0
  752. data/test/lib/facet/string/test_unshift.rb +39 -0
  753. data/test/lib/facet/string/test_upcase.rb +30 -0
  754. data/test/lib/facet/string/test_whitespace.rb +27 -0
  755. data/test/lib/facet/string/test_word_filter.rb +34 -0
  756. data/test/lib/facet/string/test_word_wrap.rb +51 -0
  757. data/test/lib/facet/string/test_words.rb +37 -0
  758. data/test/lib/facet/symbol/test_camelcase.rb +26 -0
  759. data/test/lib/facet/symbol/test_camelize.rb +27 -0
  760. data/test/lib/facet/symbol/test_capitalize.rb +26 -0
  761. data/test/lib/facet/symbol/test_capitalized.rb +27 -0
  762. data/test/lib/facet/symbol/test_downcase.rb +27 -0
  763. data/test/lib/facet/symbol/test_not.rb +29 -0
  764. data/test/lib/facet/symbol/test_pad.rb +27 -0
  765. data/test/lib/facet/symbol/test_succ.rb +28 -0
  766. data/test/lib/facet/symbol/test_to_const.rb +28 -0
  767. data/test/lib/facet/symbol/test_to_proc.rb +27 -0
  768. data/test/lib/facet/symbol/test_to_str.rb +28 -0
  769. data/test/lib/facet/symbol/test_underscore.rb +26 -0
  770. data/test/lib/facet/symbol/test_upcase.rb +27 -0
  771. data/test/lib/facet/time/test_change.rb +33 -0
  772. data/test/lib/facet/time/test_elapse.rb +27 -0
  773. data/test/lib/facet/time/test_stamp.rb +31 -0
  774. data/test/lib/facet/time/test_to_date.rb +31 -0
  775. data/test/lib/facet/time/test_to_s.rb +31 -0
  776. data/test/lib/facet/time/test_to_time.rb +31 -0
  777. data/test/lib/facets/english/test_bytes.rb +84 -0
  778. data/test/lib/facets/english/test_multipliers.rb +114 -0
  779. data/test/lib/facets/english/test_time.rb +73 -0
  780. metadata +895 -1625
  781. data/ANN +0 -59
  782. data/LICENSE/COPYING-GPL +0 -341
  783. data/LICENSE/LICENSE-ART +0 -50
  784. data/LICENSE/LICENSE-LGPL +0 -175
  785. data/LICENSE/LICENSE-MIT +0 -8
  786. data/LICENSE/LICENSE-RUBY +0 -60
  787. data/bench/b_calls.rb +0 -74
  788. data/bench/b_harray.rb +0 -49
  789. data/bench/b_pathname.rb +0 -24
  790. data/bench/b_range.rb +0 -64
  791. data/bench/return-bench.rb +0 -56
  792. data/bin/uri +0 -6
  793. data/conf/facets/extra +0 -7
  794. data/data/facets/units/binary/base.yaml +0 -12
  795. data/data/facets/units/binary/extra.yaml +0 -8
  796. data/data/facets/units/cex.yaml +0 -7
  797. data/data/facets/units/currency/base.yaml +0 -268
  798. data/data/facets/units/default.yaml +0 -22
  799. data/data/facets/units/dump_yaml.rb +0 -309
  800. data/data/facets/units/si/base.yaml +0 -36
  801. data/data/facets/units/si/derived.yaml +0 -133
  802. data/data/facets/units/si/extra.yaml +0 -107
  803. data/data/facets/units/standard.yaml +0 -5
  804. data/data/facets/units/uk.yaml +0 -16
  805. data/data/facets/units/uk/base.yaml +0 -107
  806. data/data/facets/units/us.yaml +0 -16
  807. data/data/facets/units/us/base.yaml +0 -112
  808. data/data/facets/units/xmethods/cached.yaml +0 -83
  809. data/data/facets/units/xmethods/mapping.yaml +0 -85
  810. data/demo/ann-demo.rb +0 -22
  811. data/lib/facet/all.rb +0 -1
  812. data/lib/facet/annotation.rb +0 -1
  813. data/lib/facet/ansicolor.rb +0 -1
  814. data/lib/facet/association.rb +0 -1
  815. data/lib/facet/base.rb +0 -1
  816. data/lib/facet/basicobject.rb +0 -1
  817. data/lib/facet/bbcode.rb +0 -1
  818. data/lib/facet/binary_multiplier.rb +0 -1
  819. data/lib/facet/binaryreader.rb +0 -1
  820. data/lib/facet/blankslate.rb +0 -1
  821. data/lib/facet/byteorder.rb +0 -1
  822. data/lib/facet/class_inherit.rb +0 -1
  823. data/lib/facet/classmethods.rb +0 -1
  824. data/lib/facet/cloneable.rb +0 -1
  825. data/lib/facet/constants.rb +0 -1
  826. data/lib/facet/coroutine.rb +0 -1
  827. data/lib/facet/crosscase.rb +0 -1
  828. data/lib/facet/crypt.rb +0 -1
  829. data/lib/facet/dictionary.rb +0 -1
  830. data/lib/facet/downloader.rb +0 -1
  831. data/lib/facet/dynamod.rb +0 -1
  832. data/lib/facet/enumerable_args.rb +0 -1
  833. data/lib/facet/enumtype.rb +0 -1
  834. data/lib/facet/expirable.rb +0 -1
  835. data/lib/facet/filelist.rb +0 -1
  836. data/lib/facet/fixnum_const.rb +0 -1
  837. data/lib/facet/floatstring.rb +0 -1
  838. data/lib/facet/functor.rb +0 -1
  839. data/lib/facet/harray.rb +0 -1
  840. data/lib/facet/heap.rb +0 -1
  841. data/lib/facet/infinity.rb +0 -1
  842. data/lib/facet/inflect.rb +0 -1
  843. data/lib/facet/inheritor.rb +0 -1
  844. data/lib/facet/interval.rb +0 -1
  845. data/lib/facet/ioreactor.rb +0 -1
  846. data/lib/facet/ioredirect.rb +0 -1
  847. data/lib/facet/lisp.rb +0 -1
  848. data/lib/facet/lru_cache.rb +0 -1
  849. data/lib/facet/methodprobe.rb +0 -1
  850. data/lib/facet/mock.rb +0 -1
  851. data/lib/facet/multiplier.rb +0 -1
  852. data/lib/facet/multiton.rb +0 -1
  853. data/lib/facet/nack.rb +0 -1
  854. data/lib/facet/nil_as_emptiness.rb +0 -1
  855. data/lib/facet/nilcomparable.rb +0 -1
  856. data/lib/facet/notcopyable.rb +0 -1
  857. data/lib/facet/null.rb +0 -1
  858. data/lib/facet/ohash.rb +0 -1
  859. data/lib/facet/one.rb +0 -1
  860. data/lib/facet/openobject.rb +0 -1
  861. data/lib/facet/orm_support.rb +0 -1
  862. data/lib/facet/ostructable.rb +0 -1
  863. data/lib/facet/package.rb +0 -1
  864. data/lib/facet/pool.rb +0 -1
  865. data/lib/facet/preinitialize.rb +0 -1
  866. data/lib/facet/progressbar.rb +0 -1
  867. data/lib/facet/promoteself.rb +0 -1
  868. data/lib/facet/proxy.rb +0 -1
  869. data/lib/facet/quicktest.rb +0 -1
  870. data/lib/facet/random.rb +0 -1
  871. data/lib/facet/reference.rb +0 -1
  872. data/lib/facet/semaphore.rb +0 -1
  873. data/lib/facet/shellcommand.rb +0 -1
  874. data/lib/facet/snapshot.rb +0 -1
  875. data/lib/facet/stateparser.rb +0 -1
  876. data/lib/facet/statichash.rb +0 -1
  877. data/lib/facet/string_as_array.rb +0 -1
  878. data/lib/facet/superstruct.rb +0 -1
  879. data/lib/facet/syncarray.rb +0 -1
  880. data/lib/facet/synchash.rb +0 -1
  881. data/lib/facet/tagiter.rb +0 -1
  882. data/lib/facet/template.rb +0 -1
  883. data/lib/facet/test.rb +0 -1
  884. data/lib/facet/time_in_english.rb +0 -1
  885. data/lib/facet/timer.rb +0 -1
  886. data/lib/facet/tracepoint.rb +0 -1
  887. data/lib/facet/tuple.rb +0 -1
  888. data/lib/facet/uninheritable.rb +0 -1
  889. data/lib/facet/units.rb +0 -1
  890. data/lib/facet/version.rb +0 -1
  891. data/lib/facet/yamlstruct.rb +0 -1
  892. data/lib/mega/annotation.rb +0 -568
  893. data/lib/mega/ansicolor.rb +0 -193
  894. data/lib/mega/association.rb +0 -174
  895. data/lib/mega/basicobject.rb +0 -108
  896. data/lib/mega/bbcode.rb +0 -410
  897. data/lib/mega/binary_multiplier.rb +0 -250
  898. data/lib/mega/binaryreader.rb +0 -210
  899. data/lib/mega/blankslate.rb +0 -3
  900. data/lib/mega/byteorder.rb +0 -119
  901. data/lib/mega/class_inherit.rb +0 -208
  902. data/lib/mega/classmethods.rb +0 -111
  903. data/lib/mega/cloneable.rb +0 -52
  904. data/lib/mega/constants.rb +0 -308
  905. data/lib/mega/coroutine.rb +0 -173
  906. data/lib/mega/crosscase.rb +0 -347
  907. data/lib/mega/crypt.rb +0 -167
  908. data/lib/mega/dictionary.rb +0 -340
  909. data/lib/mega/downloader.rb +0 -240
  910. data/lib/mega/dynamod.rb +0 -249
  911. data/lib/mega/enumerable_args.rb +0 -218
  912. data/lib/mega/enumtype.rb +0 -105
  913. data/lib/mega/expirable.rb +0 -88
  914. data/lib/mega/filelist.rb +0 -478
  915. data/lib/mega/fixnum_const.rb +0 -62
  916. data/lib/mega/floatstring.rb +0 -179
  917. data/lib/mega/functor.rb +0 -98
  918. data/lib/mega/harray.rb +0 -817
  919. data/lib/mega/heap.rb +0 -226
  920. data/lib/mega/infinity.rb +0 -123
  921. data/lib/mega/inheritor.rb +0 -236
  922. data/lib/mega/interval.rb +0 -426
  923. data/lib/mega/ioreactor.rb +0 -671
  924. data/lib/mega/ioredirect.rb +0 -130
  925. data/lib/mega/lisp.rb +0 -387
  926. data/lib/mega/lru_cache.rb +0 -184
  927. data/lib/mega/mock.rb +0 -224
  928. data/lib/mega/multiplier.rb +0 -180
  929. data/lib/mega/multiton.rb +0 -360
  930. data/lib/mega/nack.rb +0 -162
  931. data/lib/mega/nilcomparable.rb +0 -128
  932. data/lib/mega/notcopyable.rb +0 -146
  933. data/lib/mega/null.rb +0 -40
  934. data/lib/mega/ohash.rb +0 -3
  935. data/lib/mega/one.rb +0 -72
  936. data/lib/mega/openobject.rb +0 -220
  937. data/lib/mega/orm_support.rb +0 -233
  938. data/lib/mega/ostructable.rb +0 -212
  939. data/lib/mega/package.rb +0 -58
  940. data/lib/mega/pool.rb +0 -98
  941. data/lib/mega/preinitialize.rb +0 -152
  942. data/lib/mega/progressbar.rb +0 -214
  943. data/lib/mega/promoteself.rb +0 -104
  944. data/lib/mega/proxy.rb +0 -13
  945. data/lib/mega/reference.rb +0 -83
  946. data/lib/mega/semaphore.rb +0 -106
  947. data/lib/mega/shellcommand.rb +0 -55
  948. data/lib/mega/snapshot.rb +0 -190
  949. data/lib/mega/stateparser.rb +0 -576
  950. data/lib/mega/statichash.rb +0 -86
  951. data/lib/mega/superstruct.rb +0 -744
  952. data/lib/mega/syncarray.rb +0 -118
  953. data/lib/mega/synchash.rb +0 -173
  954. data/lib/mega/tagiter.rb +0 -389
  955. data/lib/mega/template.rb +0 -211
  956. data/lib/mega/time_in_english.rb +0 -347
  957. data/lib/mega/timer.rb +0 -293
  958. data/lib/mega/tracepoint.rb +0 -184
  959. data/lib/mega/tuple.rb +0 -97
  960. data/lib/mega/uninheritable.rb +0 -92
  961. data/lib/mega/units.rb +0 -926
  962. data/lib/mega/version.rb +0 -245
  963. data/lib/mega/yamlstruct.rb +0 -16
  964. data/lib/nano/all.rb +0 -18
  965. data/lib/nano/array.rb +0 -33
  966. data/lib/nano/array/at_rand.rb +0 -52
  967. data/lib/nano/array/body.rb +0 -35
  968. data/lib/nano/array/delete_unless.rb +0 -35
  969. data/lib/nano/array/delete_values.rb +0 -38
  970. data/lib/nano/array/delete_values_at.rb +0 -57
  971. data/lib/nano/array/each_with_key.rb +0 -9
  972. data/lib/nano/array/first.rb +0 -53
  973. data/lib/nano/array/foot.rb +0 -36
  974. data/lib/nano/array/head.rb +0 -36
  975. data/lib/nano/array/last.rb +0 -53
  976. data/lib/nano/array/last_index.rb +0 -35
  977. data/lib/nano/array/merge.rb +0 -40
  978. data/lib/nano/array/mid.rb +0 -50
  979. data/lib/nano/array/middle.rb +0 -45
  980. data/lib/nano/array/op_fetch.rb +0 -40
  981. data/lib/nano/array/op_store.rb +0 -47
  982. data/lib/nano/array/pick.rb +0 -68
  983. data/lib/nano/array/pos.rb +0 -39
  984. data/lib/nano/array/pull.rb +0 -37
  985. data/lib/nano/array/rand_index.rb +0 -30
  986. data/lib/nano/array/rand_subset.rb +0 -56
  987. data/lib/nano/array/range.rb +0 -47
  988. data/lib/nano/array/rotate.rb +0 -67
  989. data/lib/nano/array/select.rb +0 -37
  990. data/lib/nano/array/shuffle.rb +0 -66
  991. data/lib/nano/array/slap.rb +0 -37
  992. data/lib/nano/array/store.rb +0 -7
  993. data/lib/nano/array/tail.rb +0 -34
  994. data/lib/nano/array/thru.rb +0 -38
  995. data/lib/nano/array/to_b.rb +0 -31
  996. data/lib/nano/array/to_h.rb +0 -57
  997. data/lib/nano/array/to_hash.rb +0 -46
  998. data/lib/nano/array/unzip.rb +0 -20
  999. data/lib/nano/base.rb +0 -73
  1000. data/lib/nano/binding.rb +0 -14
  1001. data/lib/nano/binding/__DIR__.rb +0 -2
  1002. data/lib/nano/binding/__FILE__.rb +0 -2
  1003. data/lib/nano/binding/__LINE__.rb +0 -58
  1004. data/lib/nano/binding/call_stack.rb +0 -41
  1005. data/lib/nano/binding/called.rb +0 -41
  1006. data/lib/nano/binding/caller.rb +0 -41
  1007. data/lib/nano/binding/defined.rb +0 -40
  1008. data/lib/nano/binding/eval.rb +0 -41
  1009. data/lib/nano/binding/local_variables.rb +0 -44
  1010. data/lib/nano/binding/method_name.rb +0 -47
  1011. data/lib/nano/binding/op_fetch.rb +0 -45
  1012. data/lib/nano/binding/op_store.rb +0 -46
  1013. data/lib/nano/binding/self.rb +0 -41
  1014. data/lib/nano/binding/self/of_caller.rb +0 -122
  1015. data/lib/nano/class.rb +0 -5
  1016. data/lib/nano/class/by_name.rb +0 -1
  1017. data/lib/nano/class/descendents.rb +0 -44
  1018. data/lib/nano/class/remove_descendents.rb +0 -46
  1019. data/lib/nano/class/remove_subclasses.rb +0 -2
  1020. data/lib/nano/class/subclasses.rb +0 -2
  1021. data/lib/nano/comparable.rb +0 -5
  1022. data/lib/nano/comparable/at_least.rb +0 -53
  1023. data/lib/nano/comparable/at_most.rb +0 -2
  1024. data/lib/nano/comparable/cap.rb +0 -2
  1025. data/lib/nano/comparable/clip.rb +0 -72
  1026. data/lib/nano/comparable/cmp.rb +0 -38
  1027. data/lib/nano/continuation.rb +0 -1
  1028. data/lib/nano/continuation/self/create.rb +0 -71
  1029. data/lib/nano/date.rb +0 -0
  1030. data/lib/nano/date/days_in_month.rb +0 -42
  1031. data/lib/nano/date/days_of_month.rb +0 -34
  1032. data/lib/nano/date/stamp.rb +0 -52
  1033. data/lib/nano/date/to_date.rb +0 -36
  1034. data/lib/nano/date/to_s.rb +0 -33
  1035. data/lib/nano/date/to_time.rb +0 -36
  1036. data/lib/nano/dir.rb +0 -4
  1037. data/lib/nano/dir/self/ancestor.rb +0 -33
  1038. data/lib/nano/dir/self/ascend.rb +0 -56
  1039. data/lib/nano/dir/self/ls_r.rb +0 -76
  1040. data/lib/nano/dir/self/recurse.rb +0 -2
  1041. data/lib/nano/enumerable.rb +0 -38
  1042. data/lib/nano/enumerable/collect_with_counter.rb +0 -2
  1043. data/lib/nano/enumerable/collect_with_index.rb +0 -51
  1044. data/lib/nano/enumerable/commonality.rb +0 -63
  1045. data/lib/nano/enumerable/compact_collect.rb +0 -50
  1046. data/lib/nano/enumerable/compact_map.rb +0 -2
  1047. data/lib/nano/enumerable/cross.rb +0 -44
  1048. data/lib/nano/enumerable/each_by.rb +0 -2
  1049. data/lib/nano/enumerable/each_combination.rb +0 -59
  1050. data/lib/nano/enumerable/each_pair.rb +0 -50
  1051. data/lib/nano/enumerable/each_permutation.rb +0 -42
  1052. data/lib/nano/enumerable/each_slice.rb +0 -131
  1053. data/lib/nano/enumerable/each_unique_pair.rb +0 -66
  1054. data/lib/nano/enumerable/each_with_counter.rb +0 -8
  1055. data/lib/nano/enumerable/elementwise.rb +0 -2
  1056. data/lib/nano/enumerable/entropy.rb +0 -52
  1057. data/lib/nano/enumerable/every.rb +0 -61
  1058. data/lib/nano/enumerable/ew.rb +0 -59
  1059. data/lib/nano/enumerable/filter_collect.rb +0 -58
  1060. data/lib/nano/enumerable/filter_map.rb +0 -2
  1061. data/lib/nano/enumerable/find_collisions.rb +0 -41
  1062. data/lib/nano/enumerable/frequency.rb +0 -39
  1063. data/lib/nano/enumerable/graph.rb +0 -59
  1064. data/lib/nano/enumerable/ideal_entropy.rb +0 -49
  1065. data/lib/nano/enumerable/map_with_counter.rb +0 -2
  1066. data/lib/nano/enumerable/map_with_index.rb +0 -2
  1067. data/lib/nano/enumerable/none.rb +0 -56
  1068. data/lib/nano/enumerable/nonuniq.rb +0 -39
  1069. data/lib/nano/enumerable/occur.rb +0 -62
  1070. data/lib/nano/enumerable/one.rb +0 -65
  1071. data/lib/nano/enumerable/op_pow.rb +0 -38
  1072. data/lib/nano/enumerable/partition_by.rb +0 -55
  1073. data/lib/nano/enumerable/probability.rb +0 -59
  1074. data/lib/nano/enumerable/project.rb +0 -11
  1075. data/lib/nano/enumerable/self/combinations.rb +0 -68
  1076. data/lib/nano/enumerable/self/cross.rb +0 -79
  1077. data/lib/nano/enumerable/to_h.rb +0 -50
  1078. data/lib/nano/enumerable/uniq_by.rb +0 -39
  1079. data/lib/nano/enumerable/where.rb +0 -12
  1080. data/lib/nano/file.rb +0 -5
  1081. data/lib/nano/file/self/create.rb +0 -52
  1082. data/lib/nano/file/self/open_as_string.rb +0 -81
  1083. data/lib/nano/file/self/read_list.rb +0 -47
  1084. data/lib/nano/file/self/sanitize.rb +0 -50
  1085. data/lib/nano/file/self/split_all.rb +0 -36
  1086. data/lib/nano/fileutils.rb +0 -0
  1087. data/lib/nano/fileutils/head.rb +0 -2
  1088. data/lib/nano/fileutils/safe_ln.rb +0 -38
  1089. data/lib/nano/fileutils/slice.rb +0 -148
  1090. data/lib/nano/fileutils/split_all.rb +0 -29
  1091. data/lib/nano/fileutils/tail.rb +0 -2
  1092. data/lib/nano/fileutils/wc.rb +0 -128
  1093. data/lib/nano/fileutils/whereis.rb +0 -76
  1094. data/lib/nano/fileutils/which.rb +0 -117
  1095. data/lib/nano/float.rb +0 -3
  1096. data/lib/nano/float/approx.rb +0 -42
  1097. data/lib/nano/float/round_at.rb +0 -72
  1098. data/lib/nano/float/round_to.rb +0 -73
  1099. data/lib/nano/hash.rb +0 -40
  1100. data/lib/nano/hash/alias.rb +0 -54
  1101. data/lib/nano/hash/assert_has_keys.rb +0 -38
  1102. data/lib/nano/hash/assert_has_only_keys.rb +0 -38
  1103. data/lib/nano/hash/at.rb +0 -26
  1104. data/lib/nano/hash/collate.rb +0 -53
  1105. data/lib/nano/hash/delete_unless.rb +0 -15
  1106. data/lib/nano/hash/each.rb +0 -61
  1107. data/lib/nano/hash/each_with_index.rb +0 -35
  1108. data/lib/nano/hash/each_with_key.rb +0 -32
  1109. data/lib/nano/hash/graph.rb +0 -31
  1110. data/lib/nano/hash/has_keys.rb +0 -37
  1111. data/lib/nano/hash/has_only_keys.rb +0 -37
  1112. data/lib/nano/hash/inverse.rb +0 -51
  1113. data/lib/nano/hash/join.rb +0 -19
  1114. data/lib/nano/hash/keys_to_iv.rb +0 -60
  1115. data/lib/nano/hash/keys_to_s.rb +0 -80
  1116. data/lib/nano/hash/keys_to_sym.rb +0 -91
  1117. data/lib/nano/hash/op_fetch.rb +0 -146
  1118. data/lib/nano/hash/op_lshift.rb +0 -28
  1119. data/lib/nano/hash/op_store.rb +0 -2
  1120. data/lib/nano/hash/rand_key.rb +0 -47
  1121. data/lib/nano/hash/rand_pair.rb +0 -50
  1122. data/lib/nano/hash/rand_value.rb +0 -60
  1123. data/lib/nano/hash/replace_each.rb +0 -33
  1124. data/lib/nano/hash/self/zipnew.rb +0 -37
  1125. data/lib/nano/hash/shuffle.rb +0 -53
  1126. data/lib/nano/hash/slice.rb +0 -33
  1127. data/lib/nano/hash/stringify_keys.rb +0 -2
  1128. data/lib/nano/hash/swap.rb +0 -36
  1129. data/lib/nano/hash/swapkey.rb +0 -44
  1130. data/lib/nano/hash/symoblize_keys.rb +0 -2
  1131. data/lib/nano/hash/to_h.rb +0 -35
  1132. data/lib/nano/hash/to_ostruct.rb +0 -40
  1133. data/lib/nano/hash/to_ostruct_recurse.rb +0 -45
  1134. data/lib/nano/hash/traverse.rb +0 -63
  1135. data/lib/nano/hash/update_each.rb +0 -43
  1136. data/lib/nano/hash/update_keys.rb +0 -31
  1137. data/lib/nano/hash/update_values.rb +0 -32
  1138. data/lib/nano/hash/variablize_keys.rb +0 -2
  1139. data/lib/nano/hash/weave.rb +0 -88
  1140. data/lib/nano/inflect.rb +0 -36
  1141. data/lib/nano/integer.rb +0 -8
  1142. data/lib/nano/integer/even.rb +0 -2
  1143. data/lib/nano/integer/fact.rb +0 -2
  1144. data/lib/nano/integer/factorial.rb +0 -47
  1145. data/lib/nano/integer/multiple.rb +0 -69
  1146. data/lib/nano/integer/odd.rb +0 -2
  1147. data/lib/nano/integer/ordinal.rb +0 -41
  1148. data/lib/nano/integer/times_collect.rb +0 -37
  1149. data/lib/nano/integer/times_map.rb +0 -28
  1150. data/lib/nano/kernel.rb +0 -65
  1151. data/lib/nano/kernel/__class__.rb +0 -31
  1152. data/lib/nano/kernel/__meta__.rb +0 -57
  1153. data/lib/nano/kernel/as.rb +0 -87
  1154. data/lib/nano/kernel/assign_from.rb +0 -82
  1155. data/lib/nano/kernel/assign_with.rb +0 -75
  1156. data/lib/nano/kernel/autoreload.rb +0 -46
  1157. data/lib/nano/kernel/autoreload_glob.rb +0 -36
  1158. data/lib/nano/kernel/bool.rb +0 -77
  1159. data/lib/nano/kernel/bug.rb +0 -39
  1160. data/lib/nano/kernel/call_stack.rb +0 -59
  1161. data/lib/nano/kernel/called.rb +0 -40
  1162. data/lib/nano/kernel/complete.rb +0 -6
  1163. data/lib/nano/kernel/constant.rb +0 -52
  1164. data/lib/nano/kernel/copy.rb +0 -48
  1165. data/lib/nano/kernel/deep_copy.rb +0 -49
  1166. data/lib/nano/kernel/demo.rb +0 -46
  1167. data/lib/nano/kernel/eigenclass.rb +0 -17
  1168. data/lib/nano/kernel/false.rb +0 -2
  1169. data/lib/nano/kernel/fn.rb +0 -33
  1170. data/lib/nano/kernel/generate_method_name.rb +0 -39
  1171. data/lib/nano/kernel/get_by_id.rb +0 -33
  1172. data/lib/nano/kernel/here.rb +0 -34
  1173. data/lib/nano/kernel/in.rb +0 -35
  1174. data/lib/nano/kernel/instance_assign.rb +0 -25
  1175. data/lib/nano/kernel/instvar.rb +0 -13
  1176. data/lib/nano/kernel/is.rb +0 -5
  1177. data/lib/nano/kernel/maybe.rb +0 -41
  1178. data/lib/nano/kernel/me.rb +0 -17
  1179. data/lib/nano/kernel/meta.rb +0 -2
  1180. data/lib/nano/kernel/metaclass.rb +0 -42
  1181. data/lib/nano/kernel/method.rb +0 -76
  1182. data/lib/nano/kernel/method_name.rb +0 -49
  1183. data/lib/nano/kernel/methods.rb +0 -79
  1184. data/lib/nano/kernel/nack.rb +0 -12
  1185. data/lib/nano/kernel/new.rb +0 -40
  1186. data/lib/nano/kernel/object_class.rb +0 -31
  1187. data/lib/nano/kernel/object_hexid.rb +0 -35
  1188. data/lib/nano/kernel/op_esc.rb +0 -37
  1189. data/lib/nano/kernel/own.rb +0 -17
  1190. data/lib/nano/kernel/p.rb +0 -12
  1191. data/lib/nano/kernel/require_all.rb +0 -44
  1192. data/lib/nano/kernel/require_esc.rb +0 -42
  1193. data/lib/nano/kernel/require_facet.rb +0 -41
  1194. data/lib/nano/kernel/require_local.rb +0 -25
  1195. data/lib/nano/kernel/resc.rb +0 -32
  1196. data/lib/nano/kernel/returning.rb +0 -49
  1197. data/lib/nano/kernel/send_as.rb +0 -34
  1198. data/lib/nano/kernel/set_from.rb +0 -69
  1199. data/lib/nano/kernel/set_with.rb +0 -74
  1200. data/lib/nano/kernel/silence_warnings.rb +0 -2
  1201. data/lib/nano/kernel/silently.rb +0 -41
  1202. data/lib/nano/kernel/singleton.rb +0 -47
  1203. data/lib/nano/kernel/superior.rb +0 -53
  1204. data/lib/nano/kernel/supermethod.rb +0 -44
  1205. data/lib/nano/kernel/this.rb +0 -33
  1206. data/lib/nano/kernel/to_b.rb +0 -41
  1207. data/lib/nano/kernel/to_bool.rb +0 -47
  1208. data/lib/nano/kernel/true.rb +0 -2
  1209. data/lib/nano/kernel/unuri.rb +0 -2
  1210. data/lib/nano/kernel/uri.rb +0 -38
  1211. data/lib/nano/kernel/val.rb +0 -52
  1212. data/lib/nano/kernel/warn_with_line.rb +0 -30
  1213. data/lib/nano/kernel/with_accessor.rb +0 -94
  1214. data/lib/nano/kernel/with_reader.rb +0 -2
  1215. data/lib/nano/kernel/with_writer.rb +0 -2
  1216. data/lib/nano/logger.rb +0 -0
  1217. data/lib/nano/logger/format.rb +0 -28
  1218. data/lib/nano/logger/format_message.rb +0 -1
  1219. data/lib/nano/matchdata.rb +0 -3
  1220. data/lib/nano/matchdata/match.rb +0 -37
  1221. data/lib/nano/matchdata/matchset.rb +0 -2
  1222. data/lib/nano/matchdata/matchtree.rb +0 -62
  1223. data/lib/nano/module.rb +0 -40
  1224. data/lib/nano/module/abstract.rb +0 -50
  1225. data/lib/nano/module/alias_module_function.rb +0 -57
  1226. data/lib/nano/module/ancestor.rb +0 -38
  1227. data/lib/nano/module/attr.rb +0 -23
  1228. data/lib/nano/module/attr_setter.rb +0 -48
  1229. data/lib/nano/module/attr_tester.rb +0 -56
  1230. data/lib/nano/module/basename.rb +0 -39
  1231. data/lib/nano/module/by_name.rb +0 -68
  1232. data/lib/nano/module/cattr_accessor.rb +0 -141
  1233. data/lib/nano/module/cattr_reader.rb +0 -2
  1234. data/lib/nano/module/cattr_writer.rb +0 -2
  1235. data/lib/nano/module/clone_removing.rb +0 -2
  1236. data/lib/nano/module/clone_renaming.rb +0 -2
  1237. data/lib/nano/module/clone_using.rb +0 -87
  1238. data/lib/nano/module/dirname.rb +0 -42
  1239. data/lib/nano/module/equate_on.rb +0 -70
  1240. data/lib/nano/module/generate_instance_method_name.rb +0 -47
  1241. data/lib/nano/module/include_as.rb +0 -102
  1242. data/lib/nano/module/initializer.rb +0 -65
  1243. data/lib/nano/module/instance_methods.rb +0 -186
  1244. data/lib/nano/module/integrate.rb +0 -48
  1245. data/lib/nano/module/is.rb +0 -34
  1246. data/lib/nano/module/memoize.rb +0 -95
  1247. data/lib/nano/module/modspace.rb +0 -43
  1248. data/lib/nano/module/namespace.rb +0 -61
  1249. data/lib/nano/module/nesting.rb +0 -45
  1250. data/lib/nano/module/redef.rb +0 -31
  1251. data/lib/nano/module/redefine_method.rb +0 -57
  1252. data/lib/nano/module/redirect.rb +0 -30
  1253. data/lib/nano/module/redirect_method.rb +0 -64
  1254. data/lib/nano/module/remove.rb +0 -29
  1255. data/lib/nano/module/rename.rb +0 -31
  1256. data/lib/nano/module/rename_method.rb +0 -38
  1257. data/lib/nano/module/revisal.rb +0 -49
  1258. data/lib/nano/module/shadow_all.rb +0 -17
  1259. data/lib/nano/module/shadow_method.rb +0 -42
  1260. data/lib/nano/module/sort_on.rb +0 -73
  1261. data/lib/nano/module/undef.rb +0 -29
  1262. data/lib/nano/module/wrap.rb +0 -30
  1263. data/lib/nano/module/wrap_method.rb +0 -48
  1264. data/lib/nano/nil_as_emptiness.rb +0 -34
  1265. data/lib/nano/nilclass.rb +0 -7
  1266. data/lib/nano/nilclass/empty.rb +0 -32
  1267. data/lib/nano/nilclass/include.rb +0 -32
  1268. data/lib/nano/nilclass/length.rb +0 -2
  1269. data/lib/nano/nilclass/op_fetch.rb +0 -37
  1270. data/lib/nano/nilclass/size.rb +0 -44
  1271. data/lib/nano/nilclass/to_f.rb +0 -32
  1272. data/lib/nano/nilclass/to_h.rb +0 -33
  1273. data/lib/nano/numeric.rb +0 -5
  1274. data/lib/nano/numeric/ceil_multiple.rb +0 -40
  1275. data/lib/nano/numeric/pred.rb +0 -2
  1276. data/lib/nano/numeric/succ.rb +0 -69
  1277. data/lib/nano/numeric/to_b.rb +0 -38
  1278. data/lib/nano/ostruct.rb +0 -0
  1279. data/lib/nano/ostruct/__merge__.rb +0 -52
  1280. data/lib/nano/ostruct/__table__.rb +0 -17
  1281. data/lib/nano/ostruct/__update__.rb +0 -45
  1282. data/lib/nano/ostruct/op_fetch.rb +0 -40
  1283. data/lib/nano/ostruct/op_store.rb +0 -42
  1284. data/lib/nano/ostruct/to_h.rb +0 -8
  1285. data/lib/nano/pathname.rb +0 -2
  1286. data/lib/nano/pathname/ascend.rb +0 -22
  1287. data/lib/nano/pathname/descend.rb +0 -20
  1288. data/lib/nano/proc.rb +0 -3
  1289. data/lib/nano/proc/compose.rb +0 -62
  1290. data/lib/nano/proc/op_mul.rb +0 -2
  1291. data/lib/nano/proc/to_method.rb +0 -74
  1292. data/lib/nano/random.rb +0 -21
  1293. data/lib/nano/range.rb +0 -4
  1294. data/lib/nano/range/to_r.rb +0 -32
  1295. data/lib/nano/range/to_range.rb +0 -36
  1296. data/lib/nano/range/umbrella.rb +0 -67
  1297. data/lib/nano/range/within.rb +0 -44
  1298. data/lib/nano/regexp.rb +0 -3
  1299. data/lib/nano/regexp/arity.rb +0 -41
  1300. data/lib/nano/regexp/to_re.rb +0 -38
  1301. data/lib/nano/regexp/to_regexp.rb +0 -36
  1302. data/lib/nano/string.rb +0 -86
  1303. data/lib/nano/string/align_center.rb +0 -87
  1304. data/lib/nano/string/align_left.rb +0 -2
  1305. data/lib/nano/string/align_right.rb +0 -2
  1306. data/lib/nano/string/at.rb +0 -8
  1307. data/lib/nano/string/at_rand.rb +0 -65
  1308. data/lib/nano/string/basename.rb +0 -48
  1309. data/lib/nano/string/blank.rb +0 -36
  1310. data/lib/nano/string/bracket.rb +0 -70
  1311. data/lib/nano/string/brief.rb +0 -33
  1312. data/lib/nano/string/bytes.rb +0 -19
  1313. data/lib/nano/string/camelcase.rb +0 -58
  1314. data/lib/nano/string/camelize.rb +0 -35
  1315. data/lib/nano/string/capitalized.rb +0 -38
  1316. data/lib/nano/string/chars.rb +0 -34
  1317. data/lib/nano/string/cmp.rb +0 -43
  1318. data/lib/nano/string/demodulize.rb +0 -40
  1319. data/lib/nano/string/dequote.rb +0 -29
  1320. data/lib/nano/string/downcase.rb +0 -37
  1321. data/lib/nano/string/dresner.rb +0 -49
  1322. data/lib/nano/string/each_char.rb +0 -35
  1323. data/lib/nano/string/each_word.rb +0 -50
  1324. data/lib/nano/string/ends_with.rb +0 -2
  1325. data/lib/nano/string/first.rb +0 -94
  1326. data/lib/nano/string/first_char.rb +0 -20
  1327. data/lib/nano/string/fold.rb +0 -67
  1328. data/lib/nano/string/format.rb +0 -17
  1329. data/lib/nano/string/frequency.rb +0 -39
  1330. data/lib/nano/string/humanize.rb +0 -31
  1331. data/lib/nano/string/indent.rb +0 -68
  1332. data/lib/nano/string/index_all.rb +0 -40
  1333. data/lib/nano/string/last.rb +0 -94
  1334. data/lib/nano/string/last_char.rb +0 -22
  1335. data/lib/nano/string/line_wrap.rb +0 -77
  1336. data/lib/nano/string/lines.rb +0 -33
  1337. data/lib/nano/string/lowercase.rb +0 -32
  1338. data/lib/nano/string/margin.rb +0 -138
  1339. data/lib/nano/string/mscan.rb +0 -42
  1340. data/lib/nano/string/natcmp.rb +0 -108
  1341. data/lib/nano/string/nchar.rb +0 -45
  1342. data/lib/nano/string/ordinal.rb +0 -16
  1343. data/lib/nano/string/plural.rb +0 -2
  1344. data/lib/nano/string/pop.rb +0 -54
  1345. data/lib/nano/string/probability.rb +0 -34
  1346. data/lib/nano/string/pull.rb +0 -17
  1347. data/lib/nano/string/push.rb +0 -44
  1348. data/lib/nano/string/quote.rb +0 -68
  1349. data/lib/nano/string/rand_byte.rb +0 -55
  1350. data/lib/nano/string/rand_index.rb +0 -29
  1351. data/lib/nano/string/range.rb +0 -37
  1352. data/lib/nano/string/range_all.rb +0 -48
  1353. data/lib/nano/string/range_of_line.rb +0 -42
  1354. data/lib/nano/string/self/format.rb +0 -17
  1355. data/lib/nano/string/self/interpolate.rb +0 -31
  1356. data/lib/nano/string/self/patterns.rb +0 -51
  1357. data/lib/nano/string/self/rand_letter.rb +0 -34
  1358. data/lib/nano/string/self/random.rb +0 -36
  1359. data/lib/nano/string/shatter.rb +0 -45
  1360. data/lib/nano/string/shift.rb +0 -42
  1361. data/lib/nano/string/shuffle.rb +0 -42
  1362. data/lib/nano/string/similarity.rb +0 -105
  1363. data/lib/nano/string/singular.rb +0 -117
  1364. data/lib/nano/string/slap.rb +0 -44
  1365. data/lib/nano/string/soundex.rb +0 -102
  1366. data/lib/nano/string/starts_with.rb +0 -24
  1367. data/lib/nano/string/succ.rb +0 -38
  1368. data/lib/nano/string/tab.rb +0 -2
  1369. data/lib/nano/string/tabto.rb +0 -2
  1370. data/lib/nano/string/to_a.rb +0 -35
  1371. data/lib/nano/string/to_arr.rb +0 -55
  1372. data/lib/nano/string/to_b.rb +0 -64
  1373. data/lib/nano/string/to_const.rb +0 -39
  1374. data/lib/nano/string/to_date.rb +0 -35
  1375. data/lib/nano/string/to_proc.rb +0 -54
  1376. data/lib/nano/string/to_re.rb +0 -37
  1377. data/lib/nano/string/to_time.rb +0 -34
  1378. data/lib/nano/string/unbracket.rb +0 -46
  1379. data/lib/nano/string/underscore.rb +0 -18
  1380. data/lib/nano/string/unix_crypt.rb +0 -41
  1381. data/lib/nano/string/unpack.rb +0 -45
  1382. data/lib/nano/string/unshift.rb +0 -42
  1383. data/lib/nano/string/upcase.rb +0 -45
  1384. data/lib/nano/string/uppercase.rb +0 -2
  1385. data/lib/nano/string/whitespace.rb +0 -27
  1386. data/lib/nano/string/word_filter.rb +0 -61
  1387. data/lib/nano/string/word_wrap.rb +0 -90
  1388. data/lib/nano/string/words.rb +0 -35
  1389. data/lib/nano/string_as_array.rb +0 -16
  1390. data/lib/nano/symbol.rb +0 -13
  1391. data/lib/nano/symbol/camelcase.rb +0 -42
  1392. data/lib/nano/symbol/camelize.rb +0 -33
  1393. data/lib/nano/symbol/capitalize.rb +0 -31
  1394. data/lib/nano/symbol/capitalized.rb +0 -33
  1395. data/lib/nano/symbol/downcase.rb +0 -36
  1396. data/lib/nano/symbol/not.rb +0 -40
  1397. data/lib/nano/symbol/pad.rb +0 -43
  1398. data/lib/nano/symbol/succ.rb +0 -42
  1399. data/lib/nano/symbol/to_const.rb +0 -40
  1400. data/lib/nano/symbol/to_proc.rb +0 -45
  1401. data/lib/nano/symbol/to_str.rb +0 -39
  1402. data/lib/nano/symbol/underscore.rb +0 -32
  1403. data/lib/nano/symbol/upcase.rb +0 -37
  1404. data/lib/nano/time.rb +0 -7
  1405. data/lib/nano/time/change.rb +0 -51
  1406. data/lib/nano/time/elapse.rb +0 -41
  1407. data/lib/nano/time/self/days_extrema.rb +0 -22
  1408. data/lib/nano/time/stamp.rb +0 -47
  1409. data/lib/nano/time/to_date.rb +0 -37
  1410. data/lib/nano/time/to_s.rb +0 -33
  1411. data/lib/nano/time/to_time.rb +0 -36
  1412. data/lib/nano/unboundmethod.rb +0 -1
  1413. data/lib/nano/unboundmethod/name.rb +0 -8
  1414. data/lib/unit/methodprobe.rb +0 -215
  1415. data/lib/unit/quicktest.rb +0 -36
  1416. data/lib/unit/test.rb +0 -145
  1417. data/test/lib/mega/test_annotation.rb +0 -217
  1418. data/test/lib/mega/test_ansicolor.rb +0 -36
  1419. data/test/lib/mega/test_bbcode.rb +0 -34
  1420. data/test/lib/mega/test_binary_multiplier.rb +0 -84
  1421. data/test/lib/mega/test_byteorder.rb +0 -56
  1422. data/test/lib/mega/test_class_inherit.rb +0 -118
  1423. data/test/lib/mega/test_classmethods.rb +0 -47
  1424. data/test/lib/mega/test_constants.rb +0 -18
  1425. data/test/lib/mega/test_coroutine.rb +0 -60
  1426. data/test/lib/mega/test_crosscase.rb +0 -45
  1427. data/test/lib/mega/test_dictionary.rb +0 -90
  1428. data/test/lib/mega/test_dynamod.rb +0 -62
  1429. data/test/lib/mega/test_enumerable_args.rb +0 -80
  1430. data/test/lib/mega/test_enumtype.rb +0 -25
  1431. data/test/lib/mega/test_expirable.rb +0 -25
  1432. data/test/lib/mega/test_filelist.rb +0 -40
  1433. data/test/lib/mega/test_fixnum_const.rb +0 -25
  1434. data/test/lib/mega/test_floatstring.rb +0 -36
  1435. data/test/lib/mega/test_functor.rb +0 -39
  1436. data/test/lib/mega/test_harray.rb +0 -294
  1437. data/test/lib/mega/test_heap.rb +0 -18
  1438. data/test/lib/mega/test_infinity.rb +0 -36
  1439. data/test/lib/mega/test_inheritor.rb +0 -155
  1440. data/test/lib/mega/test_interval.rb +0 -119
  1441. data/test/lib/mega/test_lisp.rb +0 -47
  1442. data/test/lib/mega/test_lru_cache.rb +0 -25
  1443. data/test/lib/mega/test_mock.rb +0 -36
  1444. data/test/lib/mega/test_multiplier.rb +0 -114
  1445. data/test/lib/mega/test_multiton.rb +0 -200
  1446. data/test/lib/mega/test_nack.rb +0 -45
  1447. data/test/lib/mega/test_nilcomparable.rb +0 -43
  1448. data/test/lib/mega/test_notcopyable.rb +0 -74
  1449. data/test/lib/mega/test_openobject.rb +0 -66
  1450. data/test/lib/mega/test_ostructable.rb +0 -43
  1451. data/test/lib/mega/test_package.rb +0 -39
  1452. data/test/lib/mega/test_promoteself.rb +0 -45
  1453. data/test/lib/mega/test_snapshot.rb +0 -34
  1454. data/test/lib/mega/test_statichash.rb +0 -31
  1455. data/test/lib/mega/test_superstruct.rb +0 -334
  1456. data/test/lib/mega/test_syncarray.rb +0 -28
  1457. data/test/lib/mega/test_synchash.rb +0 -28
  1458. data/test/lib/mega/test_tagiter.rb +0 -93
  1459. data/test/lib/mega/test_time_in_english.rb +0 -73
  1460. data/test/lib/mega/test_timer.rb +0 -66
  1461. data/test/lib/mega/test_tuple.rb +0 -32
  1462. data/test/lib/mega/test_uninheritable.rb +0 -42
  1463. data/test/lib/mega/test_units.rb +0 -104
  1464. data/test/lib/mega/test_version.rb +0 -104
  1465. data/test/lib/nano/array/test_at_rand.rb +0 -34
  1466. data/test/lib/nano/array/test_body.rb +0 -27
  1467. data/test/lib/nano/array/test_delete_unless.rb +0 -28
  1468. data/test/lib/nano/array/test_delete_values.rb +0 -28
  1469. data/test/lib/nano/array/test_delete_values_at.rb +0 -31
  1470. data/test/lib/nano/array/test_first.rb +0 -34
  1471. data/test/lib/nano/array/test_foot.rb +0 -27
  1472. data/test/lib/nano/array/test_head.rb +0 -27
  1473. data/test/lib/nano/array/test_last.rb +0 -34
  1474. data/test/lib/nano/array/test_last_index.rb +0 -26
  1475. data/test/lib/nano/array/test_merge.rb +0 -35
  1476. data/test/lib/nano/array/test_mid.rb +0 -33
  1477. data/test/lib/nano/array/test_middle.rb +0 -29
  1478. data/test/lib/nano/array/test_op_fetch.rb +0 -27
  1479. data/test/lib/nano/array/test_op_store.rb +0 -30
  1480. data/test/lib/nano/array/test_pick.rb +0 -40
  1481. data/test/lib/nano/array/test_pos.rb +0 -28
  1482. data/test/lib/nano/array/test_pull.rb +0 -28
  1483. data/test/lib/nano/array/test_rand_index.rb +0 -29
  1484. data/test/lib/nano/array/test_rand_subset.rb +0 -29
  1485. data/test/lib/nano/array/test_range.rb +0 -32
  1486. data/test/lib/nano/array/test_rotate.rb +0 -36
  1487. data/test/lib/nano/array/test_select.rb +0 -28
  1488. data/test/lib/nano/array/test_shuffle.rb +0 -35
  1489. data/test/lib/nano/array/test_slap.rb +0 -28
  1490. data/test/lib/nano/array/test_tail.rb +0 -27
  1491. data/test/lib/nano/array/test_thru.rb +0 -27
  1492. data/test/lib/nano/array/test_to_b.rb +0 -27
  1493. data/test/lib/nano/array/test_to_h.rb +0 -33
  1494. data/test/lib/nano/array/test_to_hash.rb +0 -27
  1495. data/test/lib/nano/binding/self/test_of_caller.rb +0 -35
  1496. data/test/lib/nano/binding/test___LINE__.rb +0 -43
  1497. data/test/lib/nano/binding/test_call_stack.rb +0 -34
  1498. data/test/lib/nano/binding/test_called.rb +0 -30
  1499. data/test/lib/nano/binding/test_caller.rb +0 -35
  1500. data/test/lib/nano/binding/test_defined.rb +0 -34
  1501. data/test/lib/nano/binding/test_eval.rb +0 -34
  1502. data/test/lib/nano/binding/test_local_variables.rb +0 -34
  1503. data/test/lib/nano/binding/test_method_name.rb +0 -34
  1504. data/test/lib/nano/binding/test_op_fetch.rb +0 -34
  1505. data/test/lib/nano/binding/test_op_store.rb +0 -35
  1506. data/test/lib/nano/binding/test_self.rb +0 -34
  1507. data/test/lib/nano/class/test_descendents.rb +0 -30
  1508. data/test/lib/nano/class/test_remove_descendents.rb +0 -32
  1509. data/test/lib/nano/comparable/test_at_least.rb +0 -34
  1510. data/test/lib/nano/comparable/test_clip.rb +0 -44
  1511. data/test/lib/nano/comparable/test_cmp.rb +0 -28
  1512. data/test/lib/nano/continuation/self/test_create.rb +0 -26
  1513. data/test/lib/nano/date/test_days_in_month.rb +0 -30
  1514. data/test/lib/nano/date/test_days_of_month.rb +0 -30
  1515. data/test/lib/nano/date/test_stamp.rb +0 -38
  1516. data/test/lib/nano/date/test_to_date.rb +0 -30
  1517. data/test/lib/nano/date/test_to_s.rb +0 -30
  1518. data/test/lib/nano/date/test_to_time.rb +0 -30
  1519. data/test/lib/nano/dir/self/test_ancestor.rb +0 -26
  1520. data/test/lib/nano/dir/self/test_ascend.rb +0 -41
  1521. data/test/lib/nano/dir/self/test_ls_r.rb +0 -52
  1522. data/test/lib/nano/enumerable/self/test_combinations.rb +0 -43
  1523. data/test/lib/nano/enumerable/self/test_cross.rb +0 -31
  1524. data/test/lib/nano/enumerable/test_collect_with_index.rb +0 -27
  1525. data/test/lib/nano/enumerable/test_commonality.rb +0 -31
  1526. data/test/lib/nano/enumerable/test_compact_collect.rb +0 -27
  1527. data/test/lib/nano/enumerable/test_cross.rb +0 -30
  1528. data/test/lib/nano/enumerable/test_each_combination.rb +0 -29
  1529. data/test/lib/nano/enumerable/test_each_pair.rb +0 -29
  1530. data/test/lib/nano/enumerable/test_each_slice.rb +0 -74
  1531. data/test/lib/nano/enumerable/test_each_unique_pair.rb +0 -29
  1532. data/test/lib/nano/enumerable/test_entropy.rb +0 -26
  1533. data/test/lib/nano/enumerable/test_every.rb +0 -35
  1534. data/test/lib/nano/enumerable/test_ew.rb +0 -31
  1535. data/test/lib/nano/enumerable/test_filter_collect.rb +0 -31
  1536. data/test/lib/nano/enumerable/test_find_collisions.rb +0 -30
  1537. data/test/lib/nano/enumerable/test_frequency.rb +0 -27
  1538. data/test/lib/nano/enumerable/test_graph.rb +0 -30
  1539. data/test/lib/nano/enumerable/test_ideal_entropy.rb +0 -27
  1540. data/test/lib/nano/enumerable/test_none.rb +0 -33
  1541. data/test/lib/nano/enumerable/test_occur.rb +0 -30
  1542. data/test/lib/nano/enumerable/test_one.rb +0 -35
  1543. data/test/lib/nano/enumerable/test_op_pow.rb +0 -27
  1544. data/test/lib/nano/enumerable/test_partition_by.rb +0 -31
  1545. data/test/lib/nano/enumerable/test_probability.rb +0 -27
  1546. data/test/lib/nano/enumerable/test_to_h.rb +0 -27
  1547. data/test/lib/nano/enumerable/test_uniq_by.rb +0 -28
  1548. data/test/lib/nano/file/self/test_create.rb +0 -39
  1549. data/test/lib/nano/file/self/test_open_as_string.rb +0 -40
  1550. data/test/lib/nano/file/self/test_read_list.rb +0 -37
  1551. data/test/lib/nano/file/self/test_sanitize.rb +0 -46
  1552. data/test/lib/nano/file/self/test_split_all.rb +0 -27
  1553. data/test/lib/nano/fileutils/test_slice.rb +0 -96
  1554. data/test/lib/nano/fileutils/test_wc.rb +0 -68
  1555. data/test/lib/nano/fileutils/test_which.rb +0 -61
  1556. data/test/lib/nano/float/test_approx.rb +0 -28
  1557. data/test/lib/nano/float/test_round_at.rb +0 -46
  1558. data/test/lib/nano/float/test_round_to.rb +0 -46
  1559. data/test/lib/nano/hash/self/test_zipnew.rb +0 -28
  1560. data/test/lib/nano/hash/test_alias.rb +0 -31
  1561. data/test/lib/nano/hash/test_assert_has_keys.rb +0 -27
  1562. data/test/lib/nano/hash/test_assert_has_only_keys.rb +0 -27
  1563. data/test/lib/nano/hash/test_at.rb +0 -28
  1564. data/test/lib/nano/hash/test_collate.rb +0 -35
  1565. data/test/lib/nano/hash/test_each.rb +0 -36
  1566. data/test/lib/nano/hash/test_each_with_index.rb +0 -29
  1567. data/test/lib/nano/hash/test_each_with_key.rb +0 -29
  1568. data/test/lib/nano/hash/test_graph.rb +0 -28
  1569. data/test/lib/nano/hash/test_has_keys.rb +0 -27
  1570. data/test/lib/nano/hash/test_has_only_keys.rb +0 -27
  1571. data/test/lib/nano/hash/test_inverse.rb +0 -28
  1572. data/test/lib/nano/hash/test_keys_to_s.rb +0 -34
  1573. data/test/lib/nano/hash/test_keys_to_sym.rb +0 -34
  1574. data/test/lib/nano/hash/test_op_fetch.rb +0 -111
  1575. data/test/lib/nano/hash/test_op_lshift.rb +0 -29
  1576. data/test/lib/nano/hash/test_rand_key.rb +0 -27
  1577. data/test/lib/nano/hash/test_rand_pair.rb +0 -27
  1578. data/test/lib/nano/hash/test_rand_value.rb +0 -27
  1579. data/test/lib/nano/hash/test_replace_each.rb +0 -29
  1580. data/test/lib/nano/hash/test_shuffle.rb +0 -32
  1581. data/test/lib/nano/hash/test_slice.rb +0 -27
  1582. data/test/lib/nano/hash/test_swap.rb +0 -27
  1583. data/test/lib/nano/hash/test_swapkey.rb +0 -29
  1584. data/test/lib/nano/hash/test_to_h.rb +0 -27
  1585. data/test/lib/nano/hash/test_to_ostruct.rb +0 -30
  1586. data/test/lib/nano/hash/test_to_ostruct_recurse.rb +0 -30
  1587. data/test/lib/nano/hash/test_traverse.rb +0 -37
  1588. data/test/lib/nano/hash/test_update_each.rb +0 -29
  1589. data/test/lib/nano/hash/test_update_keys.rb +0 -28
  1590. data/test/lib/nano/hash/test_update_values.rb +0 -28
  1591. data/test/lib/nano/hash/test_weave.rb +0 -29
  1592. data/test/lib/nano/integer/test_factorial.rb +0 -30
  1593. data/test/lib/nano/integer/test_multiple.rb +0 -43
  1594. data/test/lib/nano/integer/test_ordinal.rb +0 -29
  1595. data/test/lib/nano/integer/test_times_collect.rb +0 -28
  1596. data/test/lib/nano/integer/test_times_map.rb +0 -28
  1597. data/test/lib/nano/kernel/test___class__.rb +0 -26
  1598. data/test/lib/nano/kernel/test_as.rb +0 -42
  1599. data/test/lib/nano/kernel/test_assign_from.rb +0 -31
  1600. data/test/lib/nano/kernel/test_assign_with.rb +0 -31
  1601. data/test/lib/nano/kernel/test_bool.rb +0 -41
  1602. data/test/lib/nano/kernel/test_bug.rb +0 -26
  1603. data/test/lib/nano/kernel/test_call_stack.rb +0 -26
  1604. data/test/lib/nano/kernel/test_called.rb +0 -26
  1605. data/test/lib/nano/kernel/test_constant.rb +0 -33
  1606. data/test/lib/nano/kernel/test_copy.rb +0 -40
  1607. data/test/lib/nano/kernel/test_deep_copy.rb +0 -40
  1608. data/test/lib/nano/kernel/test_demo.rb +0 -28
  1609. data/test/lib/nano/kernel/test_fn.rb +0 -26
  1610. data/test/lib/nano/kernel/test_generate_method_name.rb +0 -26
  1611. data/test/lib/nano/kernel/test_get_by_id.rb +0 -28
  1612. data/test/lib/nano/kernel/test_here.rb +0 -26
  1613. data/test/lib/nano/kernel/test_in.rb +0 -27
  1614. data/test/lib/nano/kernel/test_maybe.rb +0 -26
  1615. data/test/lib/nano/kernel/test_metaclass.rb +0 -34
  1616. data/test/lib/nano/kernel/test_method.rb +0 -32
  1617. data/test/lib/nano/kernel/test_method_name.rb +0 -31
  1618. data/test/lib/nano/kernel/test_methods.rb +0 -50
  1619. data/test/lib/nano/kernel/test_new.rb +0 -30
  1620. data/test/lib/nano/kernel/test_object_class.rb +0 -26
  1621. data/test/lib/nano/kernel/test_object_hexid.rb +0 -27
  1622. data/test/lib/nano/kernel/test_require_all.rb +0 -26
  1623. data/test/lib/nano/kernel/test_require_esc.rb +0 -27
  1624. data/test/lib/nano/kernel/test_require_facet.rb +0 -27
  1625. data/test/lib/nano/kernel/test_resc.rb +0 -27
  1626. data/test/lib/nano/kernel/test_returning.rb +0 -30
  1627. data/test/lib/nano/kernel/test_send_as.rb +0 -26
  1628. data/test/lib/nano/kernel/test_set_from.rb +0 -33
  1629. data/test/lib/nano/kernel/test_set_with.rb +0 -33
  1630. data/test/lib/nano/kernel/test_silently.rb +0 -28
  1631. data/test/lib/nano/kernel/test_singleton.rb +0 -40
  1632. data/test/lib/nano/kernel/test_superior.rb +0 -30
  1633. data/test/lib/nano/kernel/test_supermethod.rb +0 -33
  1634. data/test/lib/nano/kernel/test_this.rb +0 -26
  1635. data/test/lib/nano/kernel/test_to_b.rb +0 -28
  1636. data/test/lib/nano/kernel/test_to_bool.rb +0 -28
  1637. data/test/lib/nano/kernel/test_uri.rb +0 -30
  1638. data/test/lib/nano/kernel/test_val.rb +0 -43
  1639. data/test/lib/nano/kernel/test_with_accessor.rb +0 -51
  1640. data/test/lib/nano/matchdata/test_match.rb +0 -29
  1641. data/test/lib/nano/matchdata/test_matchtree.rb +0 -32
  1642. data/test/lib/nano/module/test_abstract.rb +0 -36
  1643. data/test/lib/nano/module/test_alias_module_function.rb +0 -34
  1644. data/test/lib/nano/module/test_ancestor.rb +0 -26
  1645. data/test/lib/nano/module/test_basename.rb +0 -26
  1646. data/test/lib/nano/module/test_by_name.rb +0 -29
  1647. data/test/lib/nano/module/test_cattr_accessor.rb +0 -55
  1648. data/test/lib/nano/module/test_clone_using.rb +0 -55
  1649. data/test/lib/nano/module/test_dirname.rb +0 -26
  1650. data/test/lib/nano/module/test_equate_on.rb +0 -37
  1651. data/test/lib/nano/module/test_generate_instance_method_name.rb +0 -33
  1652. data/test/lib/nano/module/test_include_as.rb +0 -35
  1653. data/test/lib/nano/module/test_initializer.rb +0 -32
  1654. data/test/lib/nano/module/test_instance_methods.rb +0 -59
  1655. data/test/lib/nano/module/test_integrate.rb +0 -35
  1656. data/test/lib/nano/module/test_memoize.rb +0 -50
  1657. data/test/lib/nano/module/test_modspace.rb +0 -27
  1658. data/test/lib/nano/module/test_namespace.rb +0 -33
  1659. data/test/lib/nano/module/test_nesting.rb +0 -36
  1660. data/test/lib/nano/module/test_redef.rb +0 -30
  1661. data/test/lib/nano/module/test_redefine_method.rb +0 -30
  1662. data/test/lib/nano/module/test_redirect.rb +0 -30
  1663. data/test/lib/nano/module/test_redirect_method.rb +0 -30
  1664. data/test/lib/nano/module/test_remove.rb +0 -30
  1665. data/test/lib/nano/module/test_rename.rb +0 -31
  1666. data/test/lib/nano/module/test_rename_method.rb +0 -31
  1667. data/test/lib/nano/module/test_revisal.rb +0 -35
  1668. data/test/lib/nano/module/test_shadow_method.rb +0 -30
  1669. data/test/lib/nano/module/test_sort_on.rb +0 -42
  1670. data/test/lib/nano/module/test_undef.rb +0 -30
  1671. data/test/lib/nano/module/test_wrap.rb +0 -30
  1672. data/test/lib/nano/module/test_wrap_method.rb +0 -30
  1673. data/test/lib/nano/nilclass/test_empty.rb +0 -26
  1674. data/test/lib/nano/nilclass/test_include.rb +0 -26
  1675. data/test/lib/nano/nilclass/test_op_fetch.rb +0 -28
  1676. data/test/lib/nano/nilclass/test_size.rb +0 -30
  1677. data/test/lib/nano/nilclass/test_to_f.rb +0 -26
  1678. data/test/lib/nano/nilclass/test_to_h.rb +0 -26
  1679. data/test/lib/nano/numeric/test_ceil_multiple.rb +0 -31
  1680. data/test/lib/nano/numeric/test_succ.rb +0 -40
  1681. data/test/lib/nano/numeric/test_to_b.rb +0 -27
  1682. data/test/lib/nano/ostruct/test___merge__.rb +0 -38
  1683. data/test/lib/nano/ostruct/test___update__.rb +0 -29
  1684. data/test/lib/nano/ostruct/test_op_fetch.rb +0 -27
  1685. data/test/lib/nano/ostruct/test_op_store.rb +0 -28
  1686. data/test/lib/nano/proc/test_compose.rb +0 -36
  1687. data/test/lib/nano/proc/test_to_method.rb +0 -31
  1688. data/test/lib/nano/range/test_to_r.rb +0 -27
  1689. data/test/lib/nano/range/test_to_range.rb +0 -27
  1690. data/test/lib/nano/range/test_umbrella.rb +0 -34
  1691. data/test/lib/nano/range/test_within.rb +0 -29
  1692. data/test/lib/nano/regexp/test_arity.rb +0 -33
  1693. data/test/lib/nano/regexp/test_to_re.rb +0 -27
  1694. data/test/lib/nano/regexp/test_to_regexp.rb +0 -27
  1695. data/test/lib/nano/string/self/test_interpolate.rb +0 -27
  1696. data/test/lib/nano/string/self/test_patterns.rb +0 -28
  1697. data/test/lib/nano/string/self/test_rand_letter.rb +0 -26
  1698. data/test/lib/nano/string/test_align_center.rb +0 -34
  1699. data/test/lib/nano/string/test_at_rand.rb +0 -35
  1700. data/test/lib/nano/string/test_basename.rb +0 -41
  1701. data/test/lib/nano/string/test_blank.rb +0 -27
  1702. data/test/lib/nano/string/test_bracket.rb +0 -49
  1703. data/test/lib/nano/string/test_camelcase.rb +0 -39
  1704. data/test/lib/nano/string/test_camelize.rb +0 -26
  1705. data/test/lib/nano/string/test_capitalized.rb +0 -26
  1706. data/test/lib/nano/string/test_chars.rb +0 -27
  1707. data/test/lib/nano/string/test_cmp.rb +0 -30
  1708. data/test/lib/nano/string/test_demodulize.rb +0 -38
  1709. data/test/lib/nano/string/test_downcase.rb +0 -26
  1710. data/test/lib/nano/string/test_dresner.rb +0 -32
  1711. data/test/lib/nano/string/test_each_char.rb +0 -29
  1712. data/test/lib/nano/string/test_each_word.rb +0 -29
  1713. data/test/lib/nano/string/test_first.rb +0 -43
  1714. data/test/lib/nano/string/test_fold.rb +0 -28
  1715. data/test/lib/nano/string/test_frequency.rb +0 -28
  1716. data/test/lib/nano/string/test_humanize.rb +0 -26
  1717. data/test/lib/nano/string/test_indent.rb +0 -40
  1718. data/test/lib/nano/string/test_index_all.rb +0 -26
  1719. data/test/lib/nano/string/test_last.rb +0 -46
  1720. data/test/lib/nano/string/test_line_wrap.rb +0 -27
  1721. data/test/lib/nano/string/test_lines.rb +0 -26
  1722. data/test/lib/nano/string/test_lowercase.rb +0 -26
  1723. data/test/lib/nano/string/test_margin.rb +0 -117
  1724. data/test/lib/nano/string/test_mscan.rb +0 -30
  1725. data/test/lib/nano/string/test_natcmp.rb +0 -30
  1726. data/test/lib/nano/string/test_nchar.rb +0 -29
  1727. data/test/lib/nano/string/test_pop.rb +0 -47
  1728. data/test/lib/nano/string/test_probability.rb +0 -28
  1729. data/test/lib/nano/string/test_push.rb +0 -40
  1730. data/test/lib/nano/string/test_quote.rb +0 -49
  1731. data/test/lib/nano/string/test_rand_byte.rb +0 -35
  1732. data/test/lib/nano/string/test_rand_index.rb +0 -26
  1733. data/test/lib/nano/string/test_range.rb +0 -27
  1734. data/test/lib/nano/string/test_range_all.rb +0 -27
  1735. data/test/lib/nano/string/test_range_of_line.rb +0 -28
  1736. data/test/lib/nano/string/test_shatter.rb +0 -29
  1737. data/test/lib/nano/string/test_shift.rb +0 -40
  1738. data/test/lib/nano/string/test_shuffle.rb +0 -27
  1739. data/test/lib/nano/string/test_similarity.rb +0 -26
  1740. data/test/lib/nano/string/test_singular.rb +0 -32
  1741. data/test/lib/nano/string/test_slap.rb +0 -40
  1742. data/test/lib/nano/string/test_soundex.rb +0 -41
  1743. data/test/lib/nano/string/test_succ.rb +0 -29
  1744. data/test/lib/nano/string/test_to_a.rb +0 -27
  1745. data/test/lib/nano/string/test_to_arr.rb +0 -26
  1746. data/test/lib/nano/string/test_to_b.rb +0 -41
  1747. data/test/lib/nano/string/test_to_const.rb +0 -28
  1748. data/test/lib/nano/string/test_to_date.rb +0 -30
  1749. data/test/lib/nano/string/test_to_proc.rb +0 -33
  1750. data/test/lib/nano/string/test_to_re.rb +0 -28
  1751. data/test/lib/nano/string/test_to_time.rb +0 -30
  1752. data/test/lib/nano/string/test_unix_crypt.rb +0 -30
  1753. data/test/lib/nano/string/test_unpack.rb +0 -34
  1754. data/test/lib/nano/string/test_unshift.rb +0 -39
  1755. data/test/lib/nano/string/test_upcase.rb +0 -30
  1756. data/test/lib/nano/string/test_whitespace.rb +0 -27
  1757. data/test/lib/nano/string/test_word_filter.rb +0 -34
  1758. data/test/lib/nano/string/test_word_wrap.rb +0 -51
  1759. data/test/lib/nano/string/test_words.rb +0 -27
  1760. data/test/lib/nano/symbol/test_camelcase.rb +0 -26
  1761. data/test/lib/nano/symbol/test_camelize.rb +0 -27
  1762. data/test/lib/nano/symbol/test_capitalize.rb +0 -26
  1763. data/test/lib/nano/symbol/test_capitalized.rb +0 -27
  1764. data/test/lib/nano/symbol/test_downcase.rb +0 -27
  1765. data/test/lib/nano/symbol/test_not.rb +0 -29
  1766. data/test/lib/nano/symbol/test_pad.rb +0 -27
  1767. data/test/lib/nano/symbol/test_succ.rb +0 -28
  1768. data/test/lib/nano/symbol/test_to_const.rb +0 -28
  1769. data/test/lib/nano/symbol/test_to_proc.rb +0 -27
  1770. data/test/lib/nano/symbol/test_to_str.rb +0 -28
  1771. data/test/lib/nano/symbol/test_underscore.rb +0 -26
  1772. data/test/lib/nano/symbol/test_upcase.rb +0 -27
  1773. data/test/lib/nano/time/test_change.rb +0 -33
  1774. data/test/lib/nano/time/test_elapse.rb +0 -27
  1775. data/test/lib/nano/time/test_stamp.rb +0 -31
  1776. data/test/lib/nano/time/test_to_date.rb +0 -31
  1777. data/test/lib/nano/time/test_to_s.rb +0 -31
  1778. data/test/lib/nano/time/test_to_time.rb +0 -31
  1779. data/test/lib/unit/test_methodprobe.rb +0 -53
  1780. data/test/tc_nil_as_emptiness.rb +0 -20
  1781. data/web/favicon.ico +0 -0
  1782. data/web/images/abc.png +0 -0
  1783. data/web/images/abc1.png +0 -0
  1784. data/web/images/gray.jpg +0 -0
  1785. data/web/images/ruby-lg.png +0 -0
  1786. data/web/images/ruby.gif +0 -0
  1787. data/web/index.html +0 -310
data/lib/mega/interval.rb DELETED
@@ -1,426 +0,0 @@
1
- #--
2
- # Interval
3
- #
4
- # Copyright (c) 2004,2005 Thomas Sawyer
5
- #
6
- # Ruby License
7
- #
8
- # This module is free software. You may use, modify, and/or redistribute this
9
- # software under the same terms as Ruby.
10
- #
11
- # This program is distributed in the hope that it will be useful, but WITHOUT
12
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
- # FOR A PARTICULAR PURPOSE.
14
- #
15
- #
16
- # ==========================================================================
17
- # Revision History ::
18
- # --------------------------------------------------------------------------
19
- # 04.06 Trans * Minor modifications to documentation.
20
- # ==========================================================================
21
- #
22
- # :NOTE: Still need to tie in Infinity.
23
- #
24
- #++
25
-
26
- #:title: Interval
27
- #
28
- # While Ruby support the Range class out of the box, is does not quite
29
- # fullfil the role od a real Interval class. For instance, it does
30
- # not support excluding the front sentinel. This is because Range
31
- # also tries to do triple duty as a simple Sequence and as a simple Tuple-Pair,
32
- # thus limiting its potential as an Interval. The Interval class remedies
33
- # the situation by commiting to interval behavior, and then extends the class'
34
- # capabilites beyond that of the standard Range in ways that naturally
35
- # fall out of that.
36
- #
37
- # Range depends on two methods: #succ and #<=>. If numeric
38
- # ranges were the only concern, those could just as well be #+ and #<=>,
39
- # but esoteric forms make that unfeasible --the obvious example being a String
40
- # range. But a proper Interval class requires mathematical continuation,
41
- # thus the Interval depends on #+ and #<=>, as well as #- as the inverse of #+.
42
- #
43
- # == Synopsis
44
- #
45
- # require 'mega/interval'
46
- #
47
- # i = Interval.new(1,5)
48
- # i.to_a #=> [1,2,3,4,5]
49
- #
50
- # i = Interval[0,5]
51
- # i.to_a(2) #=> [0,2,4]
52
- #
53
- # i = Interval[1,5]
54
- # i.to_a(-1) #=> [5,4,3,2,1]
55
- #
56
- # i = Interval[1,3]
57
- # i.to_a(1,2) #=> [1.0,1.5,2.0,2.5,3.0]
58
- #
59
- # == Author(s)
60
- #
61
- # * Thomas Sawyer
62
- #
63
-
64
- require 'mega/multiton'
65
- require 'mega/enumerable_args'
66
- #require 'mega/infinity'
67
-
68
- class Interval
69
-
70
- include Multiton::New
71
- include EnumerableArgs
72
-
73
- def self.[]( *args )
74
- self.new( *args )
75
- end
76
-
77
- def initialize(first, last, exclude_first=false, exclude_last=false )
78
- raise ArgumentError, "bad value for interval" if first.class != last.class
79
- @first = first
80
- @last = last
81
- @exclude_first = exclude_first
82
- @exclude_last = exclude_last
83
- @direction = (@last <=> @first)
84
- end
85
-
86
- # Returns a two element array of first and last sentinels.
87
- #
88
- # (0..10).sentinels #=> [0,10]
89
- #
90
- def sentinels
91
- return [@first, @last]
92
- end
93
-
94
- # Returns the first or last sentinal of the interval.
95
- def first ; @first ; end
96
- def last ; @last ; end
97
-
98
- #
99
- def exclude_first? ; @exclude_first ; end
100
- def exclude_last? ; @exclude_last ; end
101
-
102
- # (IMHO) these should be deprectated
103
- alias_method( :begin, :first )
104
- alias_method( :end, :last )
105
- alias_method( :exclude_begin?, :exclude_first? )
106
- alias_method( :exclude_end?, :exclude_last? )
107
-
108
- # Returns +true+ if the start and end sentinels are equal and the interval is closed; otherwise +false+.
109
- def degenerate? ; @direction == 0 and ! (@exclusive_first or @exclusive_last) ; end
110
-
111
- # Returns +true+ if the start and end sentinels are equal and the interval is open; otherwise +false+.
112
- def null? ; @direction == 0 and @exclusive_first and @exclusive_last ; end
113
-
114
- # Returns the direction of the interval indicated by +1, 0 or -1.
115
- #
116
- # (1..5).direction #=> 1
117
- # (5..1).direction #=> -1
118
- # (1..1).direction #=> 0
119
- #
120
- def direction ; @direction ; end
121
-
122
- # Returns a new interval inclusive of of both sentinels.
123
- def closed; Interval.new(@first, @last, true, true) ; end
124
-
125
- # Returns a new interval exclusive of both sentinels.
126
- def opened; Interval.new(@first, @last, true, true) ; end
127
-
128
- # Returns a new interval with either the first or the last sentinel exclusive.
129
- # If the parameter is false, the deafult, then the first sentinel is excluded;
130
- # if the parameter is true, the last sentinel is excluded.
131
- def half_closed(e=false)
132
- e ? Interval.new(@first, @last, true, false) : Interval.new(@first, @last, false, true)
133
- end
134
-
135
- # Returns a new interval with one of the two sentinels opened or closed
136
- def first_closed ; Interval.new(@first, @last, false, true) ; end
137
- def last_closed ; Interval.new(@first, @last, true, false) ; end
138
- def first_opened ; Interval.new(@first, @last, true, false) ; end
139
- def last_opened ; Interval.new(@first, @last, false, true) ; end
140
-
141
- # Unary shorthands. These return a new interval exclusive of first,
142
- # last or both sentinels, repectively.
143
- def +@ ; Interval.new(first, last, true, false) ; end
144
- def -@ ; Interval.new(first, last, false, true) ; end
145
- def ~@ ; Interval.new(first, last, true, true) ; end
146
-
147
- # Returns a new interval with the sentinels reversed.
148
- #
149
- # (0..10).reversed #=> 10..0
150
- #
151
- def reversed
152
- Interval.new(@last, @first, true, true)
153
- end
154
-
155
- # Returns the length of the interval as the difference between
156
- # the first and last elements. Returns +nil+ if the sentinal objects
157
- # do not support distance comparison (#distance).
158
- # TODO: Add +n+ parameter to count segmentations like those produced by #each.
159
- def distance
160
- @last - @first
161
- #if @last.respond_to?( :distance )
162
- # @last.distance( @first )
163
- #else
164
- # #self.to_a.length
165
- #end
166
- end
167
- alias_method( :length, :distance )
168
- alias_method( :size, :distance )
169
-
170
- # Returns the lesser of the first and last sentinals.
171
- def min
172
- ((@first <=> @last) == -1) ? @first : @last
173
- end
174
-
175
- # Returns the greater of the first and last sentinals.
176
- def max
177
- ((@first <=> @last) == 1) ? @first : @last
178
- end
179
-
180
- # Returns true or false if the element is part of the interval.
181
- def include?(x)
182
- # todo: infinity?
183
- tf = exclude_first? ? 1 : 0
184
- tl = exclude_last? ? -1 : 0
185
- (x <=> first) >= tf and (x <=> last) <= tl
186
- end
187
- alias_method( :===, :include? )
188
- alias_method( :member?, :include? )
189
-
190
- =begin
191
- # def include?(x)
192
- # tf = exclude_first? ? 1 : 0
193
- # tl = exclude_last? ? -1 : 0
194
- # # if other classes handled Infinity in their <=> method
195
- # # (which probably they should) this clause would not be required
196
- # if first.kind_of?(InfinityClass)
197
- # ft = ((first <=> x) <= tf)
198
- # else
199
- # ft = (x <=> first) >= tf
200
- # end
201
- # if last.kind_of?(InfinityClass)
202
- # fl = ((last <=> x) >= tl)
203
- # else
204
- # fl = (x <=> last) <= tl
205
- # end
206
- # ft && fl
207
- # end
208
- =end
209
-
210
- # Iterates over the interval, passing each _n_th element to the block.
211
- # If n is not given then n defaults to 1. Each _n_th step is determined
212
- # by invoking +\++ or +\-+ n, depending on the direction of the interval.
213
- # If n is negative the iteration is preformed in reverse form end sentinal
214
- # to front sentinal. A second parameter, d, can be given in which case
215
- # the applied step is calculated as a fraction of the interval's length
216
- # times n / d. This allows iteration over the whole interval in equal sized
217
- # segments.
218
- #
219
- # 1..5.each { |e| ... } #=> 1 2 3 4 5
220
- # 1..5.each(2) { |e| ... } #=> 1 3 5
221
- # 1..5.each(1,2) { |e| ... } #=> 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
222
- #
223
- def each(n=1, d=nil) # :yield:
224
- return (n < 0 ? @last : @first) if degenerate? # is this right for all values of n ?
225
- s = d ? self.length.to_f * (n.to_f / d.to_f) : n.abs
226
- raise "Cannot iterate over zero length steps." if s == 0
227
- s = s * @direction
228
- if n < 0
229
- e = @exclude_last ? @last - s : @last
230
- #e = @exclude_last ? @last.pred(s) : @last
231
- t = @exlude_last ? 1 : 0
232
- #while e.cmp(@first) >= t
233
- while (e <=> @first) >= t
234
- yield(e)
235
- e -= s
236
- #e = e.pred(s)
237
- end
238
- else
239
- e = @exclude_first ? @first + s : @first
240
- #e = @exclude_first ? @first.succ(s) : @first
241
- t = @exlude_last ? -1 : 0
242
- #while e.cmp(@last) <= t
243
- while (e <=> @last) <= t
244
- yield(e)
245
- e += s
246
- #e = e.succ(s)
247
- end
248
- end
249
- end
250
- alias_method( :step, :each )
251
-
252
- # Should there be a #reverse_each ?
253
- # Since #each can now take a negative argument, this isn't really needed.
254
- # Should it exist anyway and routed to #each?
255
- # Also, alias_method( :reverse_step, :reverse_each )
256
-
257
- # Compares two intervals to see if they are equal
258
- def eql?(other)
259
- return false unless @first == other.first
260
- return false unless @last == other.last
261
- return false unless @exclude_first == other.exclude_first?
262
- return false unless @exclude_last == other.exclude_last?
263
- true
264
- end
265
-
266
- end
267
-
268
-
269
-
270
- # _____ _
271
- # |_ _|__ ___| |_
272
- # | |/ _ \/ __| __|
273
- # | | __/\__ \ |_
274
- # |_|\___||___/\__|
275
- #
276
-
277
- =begin testing
278
-
279
- require 'test/unit'
280
-
281
- class InclusiveTest < Test::Unit::TestCase
282
-
283
- def setup
284
- @a = Interval.new( 1, 10 )
285
- @b = Interval.new( 1, 10, true, false )
286
- @c = Interval.new( 1, 10, false, true )
287
- @d = Interval.new( 1, 10, true, true )
288
- end
289
-
290
- def test_001A ; assert_equal( false, @a.include?(0) ) ; end
291
- def test_002A ; assert_equal( true, @a.include?(1) ) ; end
292
- def test_003A ; assert_equal( true, @a.include?(2) ) ; end
293
- def test_004A ; assert_equal( true, @a.include?(9) ) ; end
294
- def test_005A ; assert_equal( true, @a.include?(10) ) ; end
295
- def test_006A ; assert_equal( false, @a.include?(11) ) ; end
296
-
297
- def test_001B ; assert_equal( false, @b.include?(0) ) ; end
298
- def test_002B ; assert_equal( false, @b.include?(1) ) ; end
299
- def test_003B ; assert_equal( true, @b.include?(2) ) ; end
300
- def test_004B ; assert_equal( true, @b.include?(9) ) ; end
301
- def test_005B ; assert_equal( true, @b.include?(10) ) ; end
302
- def test_006B ; assert_equal( false, @b.include?(11) ) ; end
303
-
304
- def test_001C ; assert_equal( false, @c.include?(0) ) ; end
305
- def test_002C ; assert_equal( true, @c.include?(1) ) ; end
306
- def test_003C ; assert_equal( true, @c.include?(2) ) ; end
307
- def test_004C ; assert_equal( true, @c.include?(9) ) ; end
308
- def test_005C ; assert_equal( false, @c.include?(10) ) ; end
309
- def test_006C ; assert_equal( false, @c.include?(11) ) ; end
310
-
311
- def test_001D ; assert_equal( false, @d.include?(0) ) ; end
312
- def test_002D ; assert_equal( false, @d.include?(1) ) ; end
313
- def test_003D ; assert_equal( true, @d.include?(2) ) ; end
314
- def test_004D ; assert_equal( true, @d.include?(9) ) ; end
315
- def test_005D ; assert_equal( false, @d.include?(10) ) ; end
316
- def test_006D ; assert_equal( false, @d.include?(11) ) ; end
317
-
318
- end
319
-
320
- class LrgNumericTest < Test::Unit::TestCase
321
-
322
- def setup
323
- @a = Interval.new(0,100000000)
324
- @b = Interval.new(0,100000000)
325
- end
326
-
327
- def test_001A ; assert_equal( true, @a.include?(0) ) ; end
328
- def test_002A ; assert_equal( true, @a.include?(1000) ) ; end
329
- def test_003A ; assert_equal( true, @a.include?(1000000) ) ; end
330
- def test_004A ; assert_equal( true, @a.include?(100000000) ) ; end
331
- #def test_005A ; assert_equal( false, @a.include?(INFINITY) ) ; end
332
-
333
- def test_001B ; assert_equal( true, @b.include?(0) ) ; end
334
- def test_002B ; assert_equal( true, @b.include?(5) ) ; end
335
- def test_002B ; assert_equal( true, @b.include?(70007) ) ; end
336
- def test_002B ; assert_equal( true, @b.include?(5000005) ) ; end
337
- #def test_002B ; assert_equal( false, @b.include?(INFINITY) ) ; end
338
-
339
- end
340
-
341
- class SelectTest < Test::Unit::TestCase
342
-
343
- def setup
344
- @a = Interval.new( 0,10 )
345
- end
346
-
347
- def test_001
348
- b = @a.collect( 2 ){ |n| n }
349
- assert_equal( [0,2,4,6,8,10], b )
350
- end
351
-
352
- def test_002
353
- b = @a.select{ |n| n % 2 == 0 }
354
- assert_equal( [0,2,4,6,8,10], b )
355
- end
356
-
357
- def test_003
358
- b = @a.collect( 1,2 ){ |n| n }
359
- assert_equal( [0,5,10], b )
360
- end
361
-
362
- def test_004
363
- b = @a.select( 1,2 ){ |n| n % 2 == 0 }
364
- assert_equal( [0,10], b )
365
- end
366
-
367
- end
368
-
369
- class ArrayTest < Test::Unit::TestCase
370
-
371
- def setup
372
- @a = Interval.new( 0,10 )
373
- @b = Interval.new( 0,1 )
374
- end
375
-
376
- def test_001A ; assert_equal( [0,5,10], @a.to_a(1,2) ) ; end
377
-
378
- def test_001B ; assert_equal( [0, 0.25, 0.5, 0.75, 1.0], @b.to_a(1,4) ) ; end
379
-
380
- end
381
-
382
- =end
383
-
384
- =begin
385
- class InfTest < Test::Unit::TestCase
386
-
387
- def setup
388
- @a = Interval.new( -INFINITY, -3 )
389
- @b = Interval.new( -INFINITY, -3, true, false )
390
- @c = Interval.new( -3, INFINITY )
391
- @d = Interval.new( -INFINITY, INFINITY )
392
- @e = Interval.new( -3, -2 )
393
- end
394
-
395
- def test_001A ; assert_equal( true, @a.include?(-INFINITY) ) ; end
396
- def test_002A ; assert_equal( true, @a.include?(-4) ) ; end
397
- def test_003A ; assert_equal( true, @a.include?(-3) ) ; end
398
- def test_004A ; assert_equal( false, @a.include?(-2) ) ; end
399
- def test_005A ; assert_equal( false, @a.include?(INFINITY) ) ; end
400
-
401
- def test_001B ; assert_equal( true, @b.include?(-INFINITY) ) ; end
402
- def test_002B ; assert_equal( true, @b.include?(-4) ) ; end
403
- def test_003B ; assert_equal( false, @b.include?(-3) ) ; end
404
- def test_004B ; assert_equal( false, @b.include?(-2) ) ; end
405
- def test_005B ; assert_equal( false, @b.include?(INFINITY) ) ; end
406
-
407
- def test_001C ; assert_equal( false, @c.include?(-INFINITY) ) ; end
408
- def test_002C ; assert_equal( false, @c.include?(-4) ) ; end
409
- def test_003C ; assert_equal( true, @c.include?(-3) ) ; end
410
- def test_004C ; assert_equal( true, @c.include?(-2) ) ; end
411
- def test_005C ; assert_equal( true, @c.include?(INFINITY) ) ; end
412
-
413
- def test_001D ; assert_equal( true, @d.include?(-INFINITY) ) ; end
414
- def test_002D ; assert_equal( true, @d.include?(-4) ) ; end
415
- def test_003D ; assert_equal( true, @d.include?(-3) ) ; end
416
- def test_004D ; assert_equal( true, @d.include?(-2) ) ; end
417
- def test_005D ; assert_equal( true, @d.include?(INFINITY) ) ; end
418
-
419
- def test_001E ; assert_equal( false, @e.include?(-INFINITY) ) ; end
420
- def test_002E ; assert_equal( false, @e.include?(-4) ) ; end
421
- def test_003E ; assert_equal( true, @e.include?(-3) ) ; end
422
- def test_004E ; assert_equal( true, @e.include?(-2) ) ; end
423
- def test_005E ; assert_equal( false, @e.include?(INFINITY) ) ; end
424
-
425
- end
426
- =end
@@ -1,671 +0,0 @@
1
- #--
2
- # IOReactor
3
- #
4
- # Copyright (c) 2002, 2003 The FaerieMUD Consortium. All rights reserved.
5
- #
6
- # Ruby License
7
- #
8
- # This module is free software. You may use, modify, and/or redistribute this
9
- # software under the same terms as Ruby.
10
- #
11
- # This program is distributed in the hope that it will be useful, but WITHOUT
12
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
- # FOR A PARTICULAR PURPOSE.
14
- #
15
- #
16
- # ==========================================================================
17
- # Revision History ::
18
- # --------------------------------------------------------------------------
19
- # 04.12 Trans * Minor modifications to documentation.
20
- # ==========================================================================
21
- #++
22
-
23
- #:title: IOReactor
24
- #
25
- # An object-oriented multiplexing asynchronous IO mechanism for Ruby.
26
- # It is an implementation of the Reactor design pattern for multiplexed
27
- # asynchronous single-thread IO.
28
- #
29
- # == Details
30
- #
31
- # This module is a pure-Ruby implementation of an asynchronous multiplexed IO
32
- # Reactor which is based on the Reactor design pattern found in _Pattern-Oriented
33
- # Software Architecture, Volume 2: Patterns for Concurrent and Networked
34
- # Objects_. It allows a single thread to demultiplex and dispatch events from one
35
- # or more IO objects to the appropriate handler.
36
- #
37
- # This module used to be called Ruby-Poll, and used to use the poll(2) system
38
- # call, but this strategy was not portable, and didn't work with Ruby's
39
- # threads. It now uses IO::select, which should work everywhere Ruby does.
40
- #
41
- # I would greatly appreciate feedback on any aspect of this software. Suggestions,
42
- # feature requests, questions, design critiques, and bug reports are most
43
- # welcome. Relevant patches and minimal test cases are particularly helpful. I may
44
- # be reached by email at <ged@FaerieMUD.org>.
45
- #
46
- # == Synopsis
47
- #
48
- # require 'mega/ioreactor'
49
- # require 'socket'
50
- #
51
- # reactorobj = IOReactor.new
52
- #
53
- # # Open a listening socket on port 1138 and register it with the
54
- # # reactor. When a :read event occurs on it, it means an incoming
55
- # # connection has been established
56
- # sock = TCPServer::new('localhost', 1138)
57
- # reactorobj.register( sock, :read ) {|sock,event|
58
- # case event
59
- # # Accept the incoming connection, registering it also with
60
- # # the reactor; events on client sockets are handled by the
61
- # # #clientHandler method.
62
- # when :read
63
- # clsock = sock.accept
64
- # reactorobj.register( clsock, :read, :write, &method(:clientHandler) )
65
- # # Errors on the main listening socket cause the whole
66
- # # reactor to be shut down
67
- # when :error
68
- # reactorobj.clear
69
- # $stderr.puts "Server error: Shutting down"
70
- # else
71
- # $stderr.puts "Unhandled event: #{event}"
72
- # end
73
- # }
74
- # # Drive the reactor until it's empty with a single thread
75
- # Thread::new { reactorobj.poll until reactorobj.empty? }
76
- #
77
- # == More Information
78
- #
79
- # You can find more information about IO-Reactor, including the latest version, at
80
- # its project page:
81
- #
82
- # http://www.devEiate.org/code/IO-Reactor.shtml
83
- #
84
- # == Author(s)
85
- #
86
- # * Michael Granger <ged#FaerieMUD.org>
87
- #
88
-
89
- require 'delegate'
90
- require 'rbconfig'
91
-
92
- ### An object-oriented multiplexing asynchronous IO reactor class.
93
- class IOReactor
94
-
95
- ### Class constants
96
- Version = /([\d\.]+)/.match( %q{$Revision: 1.13 $} )[1]
97
- Rcsid = %q$Id: reactor.rb,v 1.13 2003/08/04 23:56:14 deveiant Exp $
98
-
99
- ValidEvents = [:read, :write, :error]
100
-
101
- ### Create and return a new IO reactor object.
102
- def initialize
103
- @handles = Hash::new {|hsh,key|
104
- hsh[ key ] = {
105
- :events => [],
106
- :handler => nil,
107
- :args => [],
108
- }
109
- }
110
- @pendingEvents = Hash::new {|hsh,key| hsh[ key ] = []}
111
- end
112
-
113
-
114
- ######
115
- public
116
- ######
117
-
118
- # The Hash of handles (instances of IO or its subclasses) associated with
119
- # the reactor. The keys are the IO objects, and the values are a Hash of
120
- # event/s => handler.
121
- attr_reader :handles
122
-
123
- # The Hash of unhandled events which occurred in the last call to #poll,
124
- # keyed by handle.
125
- attr_reader :pendingEvents
126
-
127
-
128
- ### Register the specified IO object with the reactor for events given as
129
- ### <tt>args</tt>. The reactor will test the given <tt>io</tt> for the
130
- ### events specified whenever #poll is called. See the #poll method for a
131
- ### list of valid events. If no events are specified, only <tt>:error</tt>
132
- ### events will be polled for.
133
- ###
134
- ### If a <tt>handler</tt> is specified, it will be called whenever the
135
- ### <tt>io</tt> has any of the specified <tt>events</tt> occur to it. It
136
- ### should take at least two parameters: the <tt>io</tt> and the event.
137
- ###
138
- ### If +args+ contains any objects except the Symbols '<tt>:read</tt>',
139
- ### '<tt>:write</tt>', or '<tt>:error</tt>', and a +handler+ is specified,
140
- ### they will be saved and passed to handler for each event.
141
- ###
142
- ### Registering a handle will unregister any previously registered
143
- ### event/handler+arguments pairs associated with the handle.
144
- def register( io, *args, &handler )
145
- events = [:read, :write, :error] & args
146
- args -= events
147
-
148
- self.unregister( io )
149
- self.enableEvents( io, *events )
150
- if handler
151
- self.setHandler( io, *args, &handler )
152
- else
153
- self.setArgs( io, *args )
154
- end
155
-
156
- return self
157
- end
158
- alias_method :add, :register
159
-
160
-
161
- ### Add the specified +events+ to the list that will be polled for on the
162
- ### given +io+ handle.
163
- def enableEvents( io, *events )
164
- @handles[ io ][:events] |= events
165
- end
166
-
167
-
168
- ### Remove the specified +events+ from the list that will be polled for on
169
- ### the given +io+ handle.
170
- def disableEvents( io, *events )
171
- raise RuntimeError, "Cannot disable the :error event" if
172
- events.include?( :error )
173
- @handles[ io ][:events] -= events
174
- end
175
-
176
-
177
- ### Set the handler for events on the given +io+ handle to the specified
178
- ### +handler+. If any +args+ are present, they will be passed as an exploded
179
- ### array to the handler for each event. Returns the previously-registered
180
- ### handler, if any.
181
- def setHandler( io, *args, &handler )
182
- rval = @handles[ io ][:handler]
183
- @handles[ io ][:handler] = handler
184
- self.setArgs( io, *args )
185
- return rval
186
- end
187
-
188
-
189
- ### Remove and return the handler for events on the given +io+ handle.
190
- def removeHandler( io )
191
- rval = @handles[ io ][:handler]
192
- @handles[ io ][:handler] = nil
193
- self.removeArgs( io )
194
- return rval
195
- end
196
-
197
-
198
- ### Set the additional arguments to pass to the handler for the given +io+
199
- ### handle on each event to the given +args+.
200
- def setArgs( io, *args )
201
- rval = @handles[ io ][:args]
202
- @handles[ io ][:args] = args
203
- return rval
204
- end
205
-
206
-
207
- ### Remove the arguments for the given handle to the given +args+.
208
- def removeArgs( io )
209
- return @handles[ io ][:args].clear
210
- end
211
-
212
-
213
- ### Remove the specified <tt>io</tt> from the receiver's list of registered
214
- ### handles, if present. Returns the handle if it was registered, or
215
- ### <tt>nil</tt> if it was not.
216
- def unregister( io )
217
- @pendingEvents.delete( io )
218
- @handles.delete( io )
219
- end
220
- alias_method :remove, :unregister
221
-
222
-
223
- ### Returns true if the specified <tt>io</tt> is registered with the poll
224
- ### object.
225
- def registered?( io )
226
- return @handles.has_key?( io )
227
- end
228
-
229
-
230
- ### Clear all registered handles from the poll object. Returns the handles
231
- ### that were cleared.
232
- def clear
233
- rv = @handles.keys
234
-
235
- @pendingEvents.clear
236
- @handles.clear
237
-
238
- return rv
239
- end
240
-
241
-
242
-
243
- ### Poll the handles registered to the reactor for pending events. The
244
- ### following event types are defined:
245
- ###
246
- ### [<tt>:read</tt>]
247
- ### Data may be read from the handle without blocking.
248
- ### [<tt>:write</tt>]
249
- ### Data may be written to the handle without blocking.
250
- ### [<tt>:error</tt>]
251
- ### An error has occurred on the handle. This event type is always
252
- ### enabled, regardless of whether or not it is passed as one of the
253
- ### <tt>events</tt>.
254
- ###
255
- ### Any handlers specified when the handles were registered are run for
256
- ### those handles with events. If a block is given, it will be invoked once
257
- ### for each handle which doesn't have an explicit handler. If no block is
258
- ### given, events without explicit handlers are inserted into the reactor's
259
- ### <tt>pendingEvents</tt> attribute.
260
- ###
261
- ### The <tt>timeout</tt> argument is the number of floating-point seconds to
262
- ### wait for an event before returning (ie., fourth argument to the
263
- ### underlying <tt>select()</tt> call); negative timeout values will cause
264
- ### #poll to block until there is at least one event to report.
265
- ###
266
- ### This method returns the number of handles on which one or more events
267
- ### occurred.
268
- def poll( timeout=-1 ) # :yields: io, eventMask
269
- timeout = timeout.to_f
270
- @pendingEvents.clear
271
- count = 0
272
-
273
- unless @handles.empty?
274
- timeout = nil if timeout < 0
275
- eventedHandles = self.getPendingEvents( timeout )
276
-
277
- # For each event of each io that had an event happen, call any
278
- # associated callback, or any provided block, or failing both of
279
- # those, add the event to the hash of unhandled pending events.
280
- eventedHandles.each {|io,events|
281
- count += 1
282
- events.each {|ev|
283
- args = @handles[ io ][:args]
284
-
285
- if @handles[ io ][:handler]
286
- @handles[ io ][:handler].call( io, ev, *args )
287
- elsif block_given?
288
- yield( io, ev, *args )
289
- else
290
- @pendingEvents[io].push( ev )
291
- end
292
- }
293
- }
294
- end
295
-
296
- return count
297
- end
298
-
299
-
300
- ### Returns <tt>true</tt> if no handles are associated with the receiver.
301
- def empty?
302
- @handles.empty?
303
- end
304
-
305
-
306
- #########
307
- protected
308
- #########
309
-
310
- ### Select on the registered handles, returning a Hash of handles => events
311
- ### for handles which had events occur.
312
- def getPendingEvents( timeout )
313
- eventHandles = IO::select( self.getReadHandles, self.getWriteHandles,
314
- @handles.keys, timeout ) or return {}
315
- eventHash = Hash::new {|hsh,io| hsh[io] = []}
316
-
317
- # Fill in the hash with pending events of each type
318
- [:read, :write, :error].each_with_index {|event,i|
319
- eventHandles[i].each {|io| eventHash[io].push( event )}
320
- }
321
- return eventHash
322
- end
323
-
324
-
325
- ### Return an Array of handles which have handlers for the <tt>:read</tt>
326
- ### event.
327
- def getReadHandles
328
- @handles.
329
- find_all {|io,hsh| hsh[:events].include?( :read )}.
330
- collect {|io,hsh| io}
331
- end
332
-
333
-
334
- ### Return an Array of handles which have handlers for the <tt>:write</tt>
335
- ### event.
336
- def getWriteHandles
337
- @handles.
338
- find_all {|io,hsh| hsh[:events].include?( :write )}.
339
- collect {|io,hsh| io}
340
- end
341
-
342
-
343
- end # class IO::Reactor
344
-
345
-
346
-
347
- =begin
348
-
349
- == ChangeLog
350
-
351
- * 2003-07-21 09:04 Michael Granger <ged@FaerieMUD.org>
352
-
353
- * README (1.5, RELEASE_0_04):
354
-
355
- - Changed to IO::Reactor.
356
-
357
- * 2003-07-21 08:21 Michael Granger <ged@FaerieMUD.org>
358
-
359
- * install.rb (1.1, RELEASE_0_04):
360
-
361
- Initial checkin.
362
-
363
- * 2003-07-21 00:55 Michael Granger <ged@FaerieMUD.org>
364
-
365
- * test.rb (1.7), utils.rb (1.4), examples/chatserver.rb (1.3),
366
- lib/io/reactor.rb (1.11), CATALOG (1.2) (utags: RELEASE_0_04):
367
-
368
- - Refactored into IO::Reactor from Ruby-Poll.
369
-
370
- * 2003-07-21 00:54 Michael Granger <ged@FaerieMUD.org>
371
-
372
- * extconf.rb (1.6), poll.c (1.6), lib/poll.rb (1.11):
373
-
374
- - Removed for IO::Reactor, which no longer needs a C backend.
375
-
376
- * 2003-05-08 16:49 Michael Granger <ged@FaerieMUD.org>
377
-
378
- * makesitedocs.rb (1.3, RELEASE_0_04):
379
-
380
- makesitedocs.rb
381
-
382
- * 2003-04-20 22:37 Michael Granger <ged@FaerieMUD.org>
383
-
384
- * test.rb (1.6):
385
-
386
- Added workaround for recent versions of Test::Unit's API changes.
387
-
388
- * 2003-04-20 22:34 Michael Granger <ged@FaerieMUD.org>
389
-
390
- * poll.c (1.5):
391
-
392
- Added code for simulating poll(2) with rb_thread_select() for machines without a native poll(). Based on code for Freehaven by
393
- Nick Mathewson <nickm@freehaven.net>.
394
-
395
- * 2003-04-20 22:32 Michael Granger <ged@FaerieMUD.org>
396
-
397
- * extconf.rb (1.5):
398
-
399
- Added fake poll code to allow machines without a poll(2) to use the library. This also might become the primary method of polling, sadly, as Ruby doesn't tolerate other async IO methods very well due to its use of select() for its threading.
400
-
401
- * 2002-10-20 21:47 Michael Granger <ged@FaerieMUD.org>
402
-
403
- * lib/: poll.rb (1.10), io/reactor.rb (1.10) (utags: RELEASE_0_03):
404
-
405
- - Got rid of a type-checking statement, as it didn't account for using an IO
406
- inside a wrappered or delegated object.
407
-
408
- - Fixed use of deprecated 'type' method.
409
-
410
- * 2002-09-18 06:33 Michael Granger <ged@FaerieMUD.org>
411
-
412
- * makedocs.rb (1.3, RELEASE_0_04, RELEASE_0_03, RELEASE_0_02):
413
-
414
- - Removed dependence on as-yet-undistributed xhtml RDoc template.
415
-
416
- * 2002-09-06 10:52 Michael Granger <ged@FaerieMUD.org>
417
-
418
- * poll.c (1.4, RELEASE_0_03, RELEASE_0_02):
419
-
420
- - Added interrupt-handling to the _poll call.
421
-
422
- - Added more-informative debugging.
423
-
424
- * 2002-07-20 10:07 Michael Granger <ged@FaerieMUD.org>
425
-
426
- * lib/: poll.rb (1.9), io/reactor.rb (1.9) (utags: RELEASE_0_02):
427
-
428
- - New method: #setMask().
429
-
430
- - New method: #callback().
431
-
432
- - New method: #args().
433
-
434
- - Implemented the #register() method in terms of the other setter methods to
435
- consolidate the maintenance of internal data structures.
436
-
437
- - Added missing callback *args to #setCallback().
438
-
439
- - Cleared up documentation for #register.
440
-
441
- * 2002-07-20 10:03 Michael Granger <ged@FaerieMUD.org>
442
-
443
- * examples/chatserver.rb (1.2, RELEASE_0_03, RELEASE_0_02):
444
-
445
- - Changed name of user class to 'User' to avoid confusion about its role in the
446
- server.
447
-
448
- * 2002-07-20 10:01 Michael Granger <ged@FaerieMUD.org>
449
-
450
- * test.rb (1.5, RELEASE_0_03, RELEASE_0_02):
451
-
452
- - Added test for the #callback method.
453
-
454
- * 2002-07-20 10:01 Michael Granger <ged@FaerieMUD.org>
455
-
456
- * makedocs.rb (1.2):
457
-
458
- - Added template argument to make it use the xhtml template.
459
-
460
- * 2002-07-19 10:29 Michael Granger <ged@FaerieMUD.org>
461
-
462
- * lib/: poll.rb (1.8), io/reactor.rb (1.8):
463
-
464
- - Fixed a funny typo.
465
-
466
- * 2002-07-18 21:58 Michael Granger <ged@FaerieMUD.org>
467
-
468
- * CATALOG (1.1, RELEASE_0_03, RELEASE_0_02):
469
-
470
- Initial commit.
471
-
472
- * 2002-07-18 21:58 Michael Granger <ged@FaerieMUD.org>
473
-
474
- * utils.rb (1.3, RELEASE_0_03, RELEASE_0_02):
475
-
476
- - Fixed typo in vetManifest()
477
-
478
- - Added case to read the documentation CATALOG in the base directory if it's not
479
- in the docs/ directory.
480
-
481
- * 2002-07-18 21:55 Michael Granger <ged@FaerieMUD.org>
482
-
483
- * makesitedocs.rb (1.2, RELEASE_0_03, RELEASE_0_02):
484
-
485
- - Merged some of the features from the MUES doc-gen script.
486
-
487
- * 2002-07-18 21:52 Michael Granger <ged@FaerieMUD.org>
488
-
489
- * lib/: poll.rb (1.7), io/reactor.rb (1.7):
490
-
491
- - Added callback arguments to the register() method.
492
-
493
- * 2002-07-18 21:52 Michael Granger <ged@FaerieMUD.org>
494
-
495
- * test.rb (1.4):
496
-
497
- - Added test for new "with-args" register() method call.
498
-
499
- * 2002-07-18 09:42 Michael Granger <ged@FaerieMUD.org>
500
-
501
- * utils.rb (1.2):
502
-
503
- - Added a debugMsg function.
504
-
505
- - Qualified all functions as module_functions.
506
-
507
- * 2002-07-18 09:40 Michael Granger <ged@FaerieMUD.org>
508
-
509
- * lib/: poll.rb (1.6), io/reactor.rb (1.6):
510
-
511
- - Fixed some typos
512
-
513
- - Added clarification and additional documentation for some methods.
514
-
515
- * 2002-07-18 09:35 Michael Granger <ged@FaerieMUD.org>
516
-
517
- * README (1.4, RELEASE_0_03, RELEASE_0_02):
518
-
519
- - Fixed a typo.
520
-
521
- * 2002-04-18 16:53 Michael Granger <ged@FaerieMUD.org>
522
-
523
- * extconf.rb (1.4, RELEASE_0_03, RELEASE_0_02):
524
-
525
- - Corrected a bug in the header =:)
526
-
527
- * 2002-04-18 12:01 Michael Granger <ged@FaerieMUD.org>
528
-
529
- * makedist.rb (1.1, RELEASE_0_04, RELEASE_0_03, RELEASE_0_02),
530
- makesitedocs.rb (1.1), utils.rb (1.1) (utags: RELEASE_0_01):
531
-
532
- Initial commit
533
-
534
- * 2002-04-18 11:24 Michael Granger <ged@FaerieMUD.org>
535
-
536
- * extconf.rb (1.3, RELEASE_0_01):
537
-
538
- - Corrected path to the docs-generation script.
539
-
540
- * 2002-04-18 10:23 Michael Granger <ged@FaerieMUD.org>
541
-
542
- * makedocs.rb (1.1, RELEASE_0_01):
543
-
544
- Initial commit
545
-
546
- * 2002-04-18 10:23 Michael Granger <ged@FaerieMUD.org>
547
-
548
- * poll.c (1.3, RELEASE_0_01):
549
-
550
- - Added some comments for RDoc, should it ever parse protected methods.
551
-
552
- - Changed the name of the second arg to _poll() to handleArray, as it wasn't
553
- really an array of file descriptors.
554
-
555
- * 2002-04-18 08:44 Michael Granger <ged@FaerieMUD.org>
556
-
557
- * test.rb (1.3, RELEASE_0_01):
558
-
559
- - Removed the "ext" dir from the ones being added to the LOAD_PATH, as it's gone
560
- away.
561
-
562
- - Removed a require left over from the failed tempfile experiment.
563
-
564
- * 2002-04-18 08:43 Michael Granger <ged@FaerieMUD.org>
565
-
566
- * extconf.rb (1.2):
567
-
568
- - Moved the ext/extconf.rb stuff into this one because the ext directory is
569
- going away.
570
-
571
- * 2002-04-18 08:42 Michael Granger <ged@FaerieMUD.org>
572
-
573
- * README (1.3, RELEASE_0_01):
574
-
575
- - Changed from alpha to beta
576
-
577
- - Added requirements section
578
-
579
- - Modified installation section to use 'site-install' instead of 'install', and
580
- took stuff out that would have been redundant with the requires section.
581
-
582
- * 2002-04-17 15:34 Michael Granger <ged@FaerieMUD.org>
583
-
584
- * lib/: poll.rb (1.5), io/reactor.rb (1.5) (utags: RELEASE_0_01):
585
-
586
- - Added :yeilds: RDoc construct to #poll.
587
-
588
- * 2002-04-17 15:20 Michael Granger <ged@FaerieMUD.org>
589
-
590
- * README (1.2):
591
-
592
- - Separated abstract from header.
593
-
594
- * 2002-04-17 15:18 Michael Granger <ged@FaerieMUD.org>
595
-
596
- * lib/: poll.rb (1.4), io/reactor.rb (1.4):
597
-
598
- - Clarified abstract.
599
-
600
- * 2002-04-17 15:14 Michael Granger <ged@FaerieMUD.org>
601
-
602
- * README (1.1):
603
-
604
- Initial commit
605
-
606
- * 2002-04-17 07:03 Michael Granger <ged@FaerieMUD.org>
607
-
608
- * lib/: poll.rb (1.3), io/reactor.rb (1.3):
609
-
610
- - Fixed documentation for the EventMask bitwise operators.
611
-
612
- * 2002-04-17 06:48 Michael Granger <ged@FaerieMUD.org>
613
-
614
- * lib/: poll.rb (1.2), io/reactor.rb (1.2):
615
-
616
- - Re-implemented after the first one was wiped out by extconf.
617
-
618
- * 2002-04-17 06:47 Michael Granger <ged@FaerieMUD.org>
619
-
620
- * poll.c (1.2):
621
-
622
- - Added shortcut constants
623
-
624
- - Added _GNU_SOURCE define to catch the additional poll.h constants under Linux
625
-
626
- - Changed _poll to a protected method.
627
-
628
- * 2002-04-17 06:46 Michael Granger <ged@FaerieMUD.org>
629
-
630
- * test.rb (1.2):
631
-
632
- - Added lots of stuff, redesigned to match the new API
633
-
634
- * 2002-04-17 06:45 Michael Granger <ged@FaerieMUD.org>
635
-
636
- * examples/chatserver.rb (1.1, RELEASE_0_01):
637
-
638
- Initial commit
639
-
640
- * 2002-04-16 04:47 Michael Granger <ged@FaerieMUD.org>
641
-
642
- * extconf.rb (1.1), poll.c (1.1), test.rb (1.1), lib/poll.rb (1.1),
643
- lib/io/reactor.rb (1.1):
644
-
645
- Initial revision
646
-
647
- * 2002-04-16 04:47 Michael Granger <ged@FaerieMUD.org>
648
-
649
- * extconf.rb (1.1.1.1), poll.c (1.1.1.1), test.rb (1.1.1.1),
650
- lib/poll.rb (1.1.1.1), lib/io/reactor.rb (1.1.1.1) (utags: IMPORT):
651
-
652
- Initial import
653
-
654
- =end
655
-
656
-
657
-
658
- # _____ _
659
- # |_ _|__ ___| |_
660
- # | |/ _ \/ __| __|
661
- # | | __/\__ \ |_
662
- # |_|\___||___/\__|
663
- #
664
-
665
- # TODO
666
-
667
- =begin #testing
668
-
669
- require 'test/unit'
670
-
671
- =end