facets 1.8.54 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2285) hide show
  1. data/AUTHORS +65 -0
  2. data/LICENSE +344 -0
  3. data/README +132 -176
  4. data/demo/bench/bench_factorial.rb +31 -0
  5. data/demo/sample/annotations/annotations1.rb +22 -0
  6. data/demo/{ansicolor → sample/ansicolor}/cdiff.rb +0 -0
  7. data/demo/{ansicolor → sample/ansicolor}/example.rb +0 -0
  8. data/lib/core/facets.rb +46 -0
  9. data/lib/core/facets/1stclassmethod.rb +113 -0
  10. data/lib/core/facets/array.rb +10 -0
  11. data/lib/core/facets/array/conjoin.rb +15 -0
  12. data/lib/core/facets/array/delete.rb +95 -0
  13. data/lib/core/facets/array/indexable.rb +206 -0
  14. data/lib/core/facets/array/merge.rb +62 -0
  15. data/lib/core/facets/array/pad.rb +87 -0
  16. data/lib/core/facets/array/rotate.rb +72 -0
  17. data/lib/core/facets/array/select.rb +39 -0
  18. data/lib/core/facets/array/splice.rb +16 -0
  19. data/lib/core/facets/array/stackable.rb +64 -0
  20. data/lib/core/facets/array/unzip.rb +15 -0
  21. data/lib/core/facets/binding.rb +3 -0
  22. data/lib/core/facets/binding/cflow.rb +121 -0
  23. data/lib/core/facets/binding/eval.rb +83 -0
  24. data/lib/core/facets/binding/vars.rb +86 -0
  25. data/lib/core/facets/boolean.rb +233 -0
  26. data/lib/core/facets/class.rb +2 -0
  27. data/lib/core/facets/class/descendents.rb +68 -0
  28. data/lib/core/facets/class/initializer.rb +66 -0
  29. data/lib/core/facets/comparable.rb +2 -0
  30. data/lib/core/facets/comparable/bound.rb +120 -0
  31. data/lib/core/facets/comparable/cmp.rb +172 -0
  32. data/lib/core/facets/continuation.rb +1 -0
  33. data/lib/{facets/core/continuation/self → core/facets/continuation}/create.rb +0 -0
  34. data/lib/core/facets/conversion.rb +699 -0
  35. data/lib/core/facets/dir.rb +2 -0
  36. data/lib/core/facets/dir/multiglob.rb +143 -0
  37. data/lib/core/facets/dir/traverse.rb +148 -0
  38. data/lib/core/facets/enumerable.rb +9 -0
  39. data/lib/core/facets/enumerable/cartesian.rb +156 -0
  40. data/lib/core/facets/enumerable/collate.rb +115 -0
  41. data/lib/core/facets/enumerable/collect.rb +155 -0
  42. data/lib/core/facets/enumerable/combination.rb +154 -0
  43. data/lib/core/facets/enumerable/count.rb +252 -0
  44. data/lib/core/facets/enumerable/instance_map.rb +0 -0
  45. data/lib/core/facets/enumerable/partition.rb +285 -0
  46. data/lib/core/facets/enumerable/permutation.rb +125 -0
  47. data/lib/core/facets/enumerable/probability.rb +218 -0
  48. data/lib/core/facets/file.rb +3 -0
  49. data/lib/core/facets/file/read.rb +84 -0
  50. data/lib/core/facets/file/topath.rb +153 -0
  51. data/lib/core/facets/file/write.rb +153 -0
  52. data/lib/core/facets/filetest.rb +1 -0
  53. data/lib/core/facets/filetest/root.rb +15 -0
  54. data/lib/core/facets/float.rb +1 -0
  55. data/lib/core/facets/float/round.rb +8 -0
  56. data/lib/core/facets/functor.rb +102 -0
  57. data/lib/core/facets/hash.rb +14 -0
  58. data/lib/core/facets/hash/at.rb +44 -0
  59. data/lib/core/facets/hash/delete.rb +95 -0
  60. data/lib/core/facets/hash/has_keys.rb +70 -0
  61. data/lib/core/facets/hash/insert.rb +52 -0
  62. data/lib/core/facets/hash/inverse.rb +66 -0
  63. data/lib/core/facets/hash/iterate.rb +69 -0
  64. data/lib/core/facets/hash/keyize.rb +249 -0
  65. data/lib/core/facets/hash/merge.rb +63 -0
  66. data/lib/core/facets/hash/new.rb +74 -0
  67. data/lib/core/facets/hash/op.rb +154 -0
  68. data/lib/core/facets/hash/rekey.rb +173 -0
  69. data/lib/core/facets/hash/traverse.rb +81 -0
  70. data/lib/core/facets/hash/update.rb +93 -0
  71. data/lib/core/facets/hash/weave.rb +101 -0
  72. data/lib/core/facets/indexable.rb +213 -0
  73. data/lib/core/facets/integer.rb +4 -0
  74. data/lib/core/facets/integer/bitmask.rb +141 -0
  75. data/lib/core/facets/integer/factorial.rb +72 -0
  76. data/lib/core/facets/integer/multiples.rb +82 -0
  77. data/lib/core/facets/integer/of.rb +49 -0
  78. data/lib/core/facets/kernel.rb +19 -0
  79. data/lib/core/facets/kernel/ask.rb +14 -0
  80. data/lib/core/facets/kernel/callstack.rb +119 -0
  81. data/lib/core/facets/kernel/constant.rb +60 -0
  82. data/lib/core/facets/kernel/deepcopy.rb +111 -0
  83. data/lib/core/facets/kernel/dir.rb +12 -0
  84. data/lib/core/facets/kernel/instance.rb +245 -0
  85. data/lib/core/facets/kernel/metaid.rb +198 -0
  86. data/lib/core/facets/kernel/object.rb +93 -0
  87. data/lib/core/facets/kernel/op_esc.rb +40 -0
  88. data/lib/core/facets/kernel/populate.rb +199 -0
  89. data/lib/core/facets/kernel/report.rb +83 -0
  90. data/lib/core/facets/kernel/require.rb +69 -0
  91. data/lib/core/facets/kernel/require_esc.rb +44 -0
  92. data/lib/core/facets/kernel/respond.rb +13 -0
  93. data/lib/core/facets/kernel/silence.rb +91 -0
  94. data/lib/core/facets/kernel/super.rb +222 -0
  95. data/lib/core/facets/kernel/tap.rb +105 -0
  96. data/lib/core/facets/kernel/val.rb +65 -0
  97. data/lib/core/facets/kernel/withattr.rb +111 -0
  98. data/lib/core/facets/matchdata.rb +1 -0
  99. data/lib/core/facets/matchdata/matchset.rb +98 -0
  100. data/lib/core/facets/module.rb +11 -0
  101. data/lib/core/facets/module/abstract.rb +59 -0
  102. data/lib/core/facets/module/alias.rb +153 -0
  103. data/lib/core/facets/module/attr.rb +139 -0
  104. data/lib/core/facets/module/cattr.rb +178 -0
  105. data/lib/core/facets/module/clone.rb +101 -0
  106. data/lib/core/facets/module/include.rb +229 -0
  107. data/lib/core/facets/module/methods.rb +16 -0
  108. data/lib/core/facets/module/modify.rb +359 -0
  109. data/lib/core/facets/module/name.rb +186 -0
  110. data/lib/core/facets/module/require.rb +62 -0
  111. data/lib/core/facets/module/traits.rb +110 -0
  112. data/lib/core/facets/nilclass.rb +2 -0
  113. data/lib/core/facets/nilclass/ergo.rb +13 -0
  114. data/lib/{facets/core → core/facets}/nilclass/status.rb +0 -0
  115. data/lib/core/facets/numeric.rb +1 -0
  116. data/lib/core/facets/numeric/round.rb +143 -0
  117. data/lib/core/facets/proc.rb +3 -0
  118. data/lib/core/facets/proc/bind.rb +107 -0
  119. data/lib/core/facets/proc/compose.rb +78 -0
  120. data/lib/core/facets/proc/fn.rb +10 -0
  121. data/lib/core/facets/range.rb +2 -0
  122. data/lib/core/facets/range/combine.rb +83 -0
  123. data/lib/core/facets/range/overlap.rb +130 -0
  124. data/lib/core/facets/regexp.rb +1 -0
  125. data/lib/core/facets/regexp/arity.rb +52 -0
  126. data/lib/core/facets/stackable.rb +46 -0
  127. data/lib/core/facets/string.rb +18 -0
  128. data/lib/core/facets/string/align.rb +102 -0
  129. data/lib/core/facets/string/blank.rb +60 -0
  130. data/lib/core/facets/string/bracket.rb +176 -0
  131. data/lib/core/facets/string/case.rb +105 -0
  132. data/lib/core/facets/string/crypt.rb +59 -0
  133. data/lib/core/facets/string/filter.rb +102 -0
  134. data/lib/core/facets/string/format.rb +283 -0
  135. data/lib/core/facets/string/indexable.rb +248 -0
  136. data/lib/core/facets/string/interpolate.rb +70 -0
  137. data/lib/core/facets/string/natcmp.rb +122 -0
  138. data/lib/core/facets/string/nchar.rb +88 -0
  139. data/lib/core/facets/string/partitions.rb +139 -0
  140. data/lib/core/facets/string/range.rb +95 -0
  141. data/lib/core/facets/string/regesc.rb +63 -0
  142. data/lib/core/facets/string/scan.rb +100 -0
  143. data/lib/core/facets/string/splice.rb +29 -0
  144. data/lib/core/facets/string/stackable.rb +181 -0
  145. data/lib/core/facets/string/tabs.rb +202 -0
  146. data/lib/core/facets/symbol.rb +5 -0
  147. data/lib/core/facets/symbol/chomp.rb +41 -0
  148. data/lib/core/facets/symbol/generate.rb +59 -0
  149. data/lib/{facets/core → core/facets}/symbol/not.rb +0 -0
  150. data/lib/core/facets/symbol/shadow.rb +61 -0
  151. data/lib/core/facets/symbol/succ.rb +60 -0
  152. data/lib/core/facets/time.rb +2 -0
  153. data/lib/core/facets/time/change.rb +61 -0
  154. data/lib/core/facets/time/elapse.rb +55 -0
  155. data/lib/core/facets/unboundmethod.rb +2 -0
  156. data/lib/core/facets/unboundmethod/arguments.rb +21 -0
  157. data/lib/core/facets/unboundmethod/name.rb +12 -0
  158. data/lib/methods/facets/array/conjoin.rb +1 -0
  159. data/lib/methods/facets/array/delete_unless.rb +1 -0
  160. data/lib/methods/facets/array/delete_values.rb +1 -0
  161. data/lib/methods/facets/array/delete_values_at.rb +1 -0
  162. data/lib/methods/facets/array/first.rb +1 -0
  163. data/lib/methods/facets/array/join_sentence.rb +1 -0
  164. data/lib/methods/facets/array/last.rb +1 -0
  165. data/lib/methods/facets/array/merge.rb +1 -0
  166. data/lib/methods/facets/array/pad.rb +1 -0
  167. data/lib/methods/facets/array/poke.rb +1 -0
  168. data/lib/methods/facets/array/pull.rb +1 -0
  169. data/lib/methods/facets/array/rotate.rb +1 -0
  170. data/lib/methods/facets/array/select.rb +1 -0
  171. data/lib/methods/facets/array/splice.rb +1 -0
  172. data/lib/methods/facets/array/store.rb +1 -0
  173. data/lib/methods/facets/array/to_b.rb +1 -0
  174. data/lib/methods/facets/array/to_h.rb +1 -0
  175. data/lib/methods/facets/array/to_path.rb +1 -0
  176. data/lib/methods/facets/array/unzip.rb +1 -0
  177. data/lib/methods/facets/binding/__DIR__.rb +1 -0
  178. data/lib/methods/facets/binding/__FILE__.rb +1 -0
  179. data/lib/methods/facets/binding/__LINE__.rb +1 -0
  180. data/lib/methods/facets/binding/call_stack.rb +1 -0
  181. data/lib/methods/facets/binding/called.rb +1 -0
  182. data/lib/methods/facets/binding/caller.rb +1 -0
  183. data/lib/methods/facets/binding/defined.rb +1 -0
  184. data/lib/methods/facets/binding/eval.rb +1 -0
  185. data/lib/methods/facets/binding/included.rb +1 -0
  186. data/lib/methods/facets/binding/local_variables.rb +1 -0
  187. data/lib/methods/facets/binding/methodname.rb +1 -0
  188. data/lib/methods/facets/binding/op_fetch.rb +1 -0
  189. data/lib/methods/facets/binding/self.rb +1 -0
  190. data/lib/methods/facets/class/cattr.rb +1 -0
  191. data/lib/methods/facets/class/cattr_accessor.rb +1 -0
  192. data/lib/methods/facets/class/cattr_reader.rb +1 -0
  193. data/lib/methods/facets/class/cattr_writer.rb +1 -0
  194. data/lib/methods/facets/class/class_load.rb +1 -0
  195. data/lib/methods/facets/class/class_require.rb +1 -0
  196. data/lib/methods/facets/class/descendents.rb +1 -0
  197. data/lib/methods/facets/class/initializer.rb +1 -0
  198. data/lib/methods/facets/class/mattr.rb +1 -0
  199. data/lib/methods/facets/class/mattr_accessor.rb +1 -0
  200. data/lib/methods/facets/class/mattr_reader.rb +1 -0
  201. data/lib/methods/facets/class/mattr_writer.rb +1 -0
  202. data/lib/methods/facets/class/remove_descendents.rb +1 -0
  203. data/lib/methods/facets/class/remove_subclasses.rb +1 -0
  204. data/lib/methods/facets/class/subclasses.rb +1 -0
  205. data/lib/methods/facets/class/to_proc.rb +1 -0
  206. data/lib/methods/facets/comparable/at_least.rb +1 -0
  207. data/lib/methods/facets/comparable/at_most.rb +1 -0
  208. data/lib/methods/facets/comparable/bound.rb +1 -0
  209. data/lib/methods/facets/comparable/cap.rb +1 -0
  210. data/lib/methods/facets/comparable/clip.rb +1 -0
  211. data/lib/methods/facets/comparable/cmp.rb +1 -0
  212. data/lib/methods/facets/dir/ancestor.rb +1 -0
  213. data/lib/methods/facets/dir/ascend.rb +1 -0
  214. data/lib/methods/facets/dir/descend.rb +1 -0
  215. data/lib/methods/facets/dir/ls_r.rb +1 -0
  216. data/lib/methods/facets/dir/multiglob.rb +1 -0
  217. data/lib/methods/facets/dir/multiglob_r.rb +1 -0
  218. data/lib/methods/facets/dir/multiglob_with_default.rb +1 -0
  219. data/lib/methods/facets/dir/parent.rb +1 -0
  220. data/lib/methods/facets/dir/recurse.rb +1 -0
  221. data/lib/methods/facets/enumerable/cart.rb +1 -0
  222. data/lib/methods/facets/enumerable/cartesian_product.rb +1 -0
  223. data/lib/methods/facets/enumerable/cluster_by.rb +1 -0
  224. data/lib/methods/facets/enumerable/collate.rb +1 -0
  225. data/lib/methods/facets/enumerable/collect_if.rb +1 -0
  226. data/lib/methods/facets/enumerable/collect_with_counter.rb +1 -0
  227. data/lib/methods/facets/enumerable/collect_with_index.rb +1 -0
  228. data/lib/methods/facets/enumerable/combinations.rb +1 -0
  229. data/lib/methods/facets/enumerable/combos.rb +1 -0
  230. data/lib/methods/facets/enumerable/commonality.rb +1 -0
  231. data/lib/methods/facets/enumerable/compact_collect.rb +1 -0
  232. data/lib/methods/facets/enumerable/compact_map.rb +1 -0
  233. data/lib/methods/facets/enumerable/count.rb +1 -0
  234. data/lib/methods/facets/enumerable/divide.rb +1 -0
  235. data/lib/methods/facets/enumerable/duplicates.rb +1 -0
  236. data/lib/methods/facets/enumerable/each_by.rb +1 -0
  237. data/lib/methods/facets/enumerable/each_combination.rb +1 -0
  238. data/lib/methods/facets/enumerable/each_combo.rb +1 -0
  239. data/lib/methods/facets/enumerable/each_pair.rb +1 -0
  240. data/lib/methods/facets/enumerable/each_permutation.rb +1 -0
  241. data/lib/methods/facets/enumerable/each_unique_pair.rb +1 -0
  242. data/lib/methods/facets/enumerable/each_with_counter.rb +1 -0
  243. data/lib/methods/facets/enumerable/eachn.rb +1 -0
  244. data/lib/methods/facets/enumerable/entropy.rb +1 -0
  245. data/lib/methods/facets/enumerable/filter_collect.rb +1 -0
  246. data/lib/methods/facets/enumerable/filter_map.rb +1 -0
  247. data/lib/methods/facets/enumerable/frequency.rb +1 -0
  248. data/lib/methods/facets/enumerable/graph.rb +1 -0
  249. data/lib/methods/facets/enumerable/ideal_entropy.rb +1 -0
  250. data/lib/methods/facets/enumerable/injecting.rb +1 -0
  251. data/lib/methods/facets/enumerable/map_if.rb +1 -0
  252. data/lib/methods/facets/enumerable/map_with_counter.rb +1 -0
  253. data/lib/methods/facets/enumerable/map_with_index.rb +1 -0
  254. data/lib/methods/facets/enumerable/mode.rb +1 -0
  255. data/lib/methods/facets/enumerable/none.rb +1 -0
  256. data/lib/methods/facets/enumerable/nonuniq.rb +1 -0
  257. data/lib/methods/facets/enumerable/occur.rb +1 -0
  258. data/lib/methods/facets/enumerable/one.rb +1 -0
  259. data/lib/methods/facets/enumerable/op_pow.rb +1 -0
  260. data/lib/methods/facets/enumerable/partition_by.rb +1 -0
  261. data/lib/methods/facets/enumerable/permutation.rb +1 -0
  262. data/lib/methods/facets/enumerable/permutation_number.rb +1 -0
  263. data/lib/methods/facets/enumerable/permute.rb +1 -0
  264. data/lib/methods/facets/enumerable/probability.rb +1 -0
  265. data/lib/methods/facets/enumerable/sum.rb +1 -0
  266. data/lib/methods/facets/enumerable/to_h.rb +1 -0
  267. data/lib/methods/facets/enumerable/to_hash.rb +1 -0
  268. data/lib/methods/facets/enumerable/uniq_by.rb +1 -0
  269. data/lib/methods/facets/falseclass/to_bool.rb +1 -0
  270. data/lib/methods/facets/file/append.rb +1 -0
  271. data/lib/methods/facets/file/create.rb +1 -0
  272. data/lib/methods/facets/file/null.rb +1 -0
  273. data/lib/methods/facets/file/read_binary.rb +1 -0
  274. data/lib/methods/facets/file/read_list.rb +1 -0
  275. data/lib/methods/facets/file/rewrite.rb +1 -0
  276. data/lib/methods/facets/file/rootname.rb +1 -0
  277. data/lib/methods/facets/file/sanitize.rb +1 -0
  278. data/lib/methods/facets/file/split_all.rb +1 -0
  279. data/lib/methods/facets/file/write.rb +1 -0
  280. data/lib/methods/facets/filetest/root.rb +1 -0
  281. data/lib/methods/facets/float/round_at.rb +1 -0
  282. data/lib/methods/facets/float/round_off.rb +1 -0
  283. data/lib/methods/facets/float/round_to.rb +1 -0
  284. data/lib/methods/facets/hash/alias.rb +1 -0
  285. data/lib/methods/facets/hash/at.rb +1 -0
  286. data/lib/methods/facets/hash/autonew.rb +1 -0
  287. data/lib/methods/facets/hash/collate.rb +1 -0
  288. data/lib/methods/facets/hash/delete_at.rb +1 -0
  289. data/lib/methods/facets/hash/delete_unless.rb +1 -0
  290. data/lib/methods/facets/hash/delete_values.rb +1 -0
  291. data/lib/methods/facets/hash/delete_values_at.rb +1 -0
  292. data/lib/methods/facets/hash/diff.rb +1 -0
  293. data/lib/methods/facets/hash/each_with_index.rb +1 -0
  294. data/lib/methods/facets/hash/each_with_key.rb +1 -0
  295. data/lib/methods/facets/hash/graph.rb +1 -0
  296. data/lib/methods/facets/hash/has_keys.rb +1 -0
  297. data/lib/methods/facets/hash/has_only_keys.rb +1 -0
  298. data/lib/methods/facets/hash/insert.rb +1 -0
  299. data/lib/methods/facets/hash/inverse.rb +1 -0
  300. data/lib/methods/facets/hash/join.rb +1 -0
  301. data/lib/methods/facets/hash/keys_to_s.rb +1 -0
  302. data/lib/methods/facets/hash/keys_to_sym.rb +1 -0
  303. data/lib/methods/facets/hash/normalize_keys.rb +1 -0
  304. data/lib/methods/facets/hash/op_and.rb +1 -0
  305. data/lib/methods/facets/hash/op_div.rb +1 -0
  306. data/lib/methods/facets/hash/op_lshift.rb +1 -0
  307. data/lib/methods/facets/hash/op_minus.rb +1 -0
  308. data/lib/methods/facets/hash/op_mul.rb +1 -0
  309. data/lib/methods/facets/hash/op_or.rb +1 -0
  310. data/lib/methods/facets/hash/op_plus.rb +1 -0
  311. data/lib/methods/facets/hash/pairs_at.rb +1 -0
  312. data/lib/methods/facets/hash/rekey.rb +1 -0
  313. data/lib/methods/facets/hash/replace_each.rb +1 -0
  314. data/lib/methods/facets/hash/reverse_merge.rb +1 -0
  315. data/lib/methods/facets/hash/reverse_update.rb +1 -0
  316. data/lib/methods/facets/hash/stringify_keys.rb +1 -0
  317. data/lib/methods/facets/hash/swap.rb +1 -0
  318. data/lib/methods/facets/hash/swapkey.rb +1 -0
  319. data/lib/methods/facets/hash/symbolize_keys.rb +1 -0
  320. data/lib/methods/facets/hash/to_h.rb +1 -0
  321. data/lib/methods/facets/hash/to_proc.rb +1 -0
  322. data/lib/methods/facets/hash/to_proc_with_reponse.rb +1 -0
  323. data/lib/methods/facets/hash/to_struct.rb +1 -0
  324. data/lib/methods/facets/hash/traverse.rb +1 -0
  325. data/lib/methods/facets/hash/update_each.rb +1 -0
  326. data/lib/methods/facets/hash/update_keys.rb +1 -0
  327. data/lib/methods/facets/hash/update_values.rb +1 -0
  328. data/lib/methods/facets/hash/variablize_keys.rb +1 -0
  329. data/lib/methods/facets/hash/weave.rb +1 -0
  330. data/lib/methods/facets/hash/zipnew.rb +1 -0
  331. data/lib/methods/facets/integer/bit.rb +1 -0
  332. data/lib/methods/facets/integer/bit_set.rb +1 -0
  333. data/lib/methods/facets/integer/bitmask.rb +1 -0
  334. data/lib/methods/facets/integer/clear_bit.rb +1 -0
  335. data/lib/methods/facets/integer/clear_bitmask.rb +1 -0
  336. data/lib/methods/facets/integer/even.rb +1 -0
  337. data/lib/methods/facets/integer/fac.rb +1 -0
  338. data/lib/methods/facets/integer/fact.rb +1 -0
  339. data/lib/methods/facets/integer/factorial.rb +1 -0
  340. data/lib/methods/facets/integer/multiple.rb +1 -0
  341. data/lib/methods/facets/integer/odd.rb +1 -0
  342. data/lib/methods/facets/integer/of.rb +1 -0
  343. data/lib/methods/facets/integer/round_at.rb +1 -0
  344. data/lib/methods/facets/integer/round_to.rb +1 -0
  345. data/lib/methods/facets/integer/set_bit.rb +1 -0
  346. data/lib/methods/facets/integer/set_bitmask.rb +1 -0
  347. data/lib/methods/facets/integer/test_bit.rb +1 -0
  348. data/lib/methods/facets/integer/test_bitmask.rb +1 -0
  349. data/lib/methods/facets/integer/times_collect.rb +1 -0
  350. data/lib/methods/facets/integer/times_map.rb +1 -0
  351. data/lib/methods/facets/kernel/__DIR__.rb +1 -0
  352. data/lib/methods/facets/kernel/__assign__.rb +1 -0
  353. data/lib/methods/facets/kernel/__callee__.rb +1 -0
  354. data/lib/methods/facets/kernel/__class__.rb +1 -0
  355. data/lib/methods/facets/kernel/__get__.rb +1 -0
  356. data/lib/methods/facets/kernel/__method__.rb +1 -0
  357. data/lib/methods/facets/kernel/__real__.rb +1 -0
  358. data/lib/methods/facets/kernel/__set__.rb +1 -0
  359. data/lib/methods/facets/kernel/__singleton_class__.rb +1 -0
  360. data/lib/methods/facets/kernel/as.rb +1 -0
  361. data/lib/methods/facets/kernel/ask.rb +1 -0
  362. data/lib/methods/facets/kernel/assign_from.rb +1 -0
  363. data/lib/methods/facets/kernel/assign_with.rb +1 -0
  364. data/lib/methods/facets/kernel/bitmask.rb +1 -0
  365. data/lib/methods/facets/kernel/bool.rb +1 -0
  366. data/lib/methods/facets/kernel/call_stack.rb +1 -0
  367. data/lib/methods/facets/kernel/called.rb +1 -0
  368. data/lib/methods/facets/kernel/callee.rb +1 -0
  369. data/lib/methods/facets/kernel/class_def.rb +1 -0
  370. data/lib/methods/facets/kernel/complete.rb +1 -0
  371. data/lib/methods/facets/kernel/constant.rb +1 -0
  372. data/lib/methods/facets/kernel/copy.rb +1 -0
  373. data/lib/methods/facets/kernel/d.rb +1 -0
  374. data/lib/methods/facets/kernel/deep_clone.rb +1 -0
  375. data/lib/methods/facets/kernel/deep_copy.rb +1 -0
  376. data/lib/methods/facets/kernel/demo.rb +1 -0
  377. data/lib/methods/facets/kernel/eigenclass.rb +1 -0
  378. data/lib/methods/facets/kernel/enable_warnings.rb +1 -0
  379. data/lib/methods/facets/kernel/false.rb +1 -0
  380. data/lib/methods/facets/kernel/fn.rb +1 -0
  381. data/lib/methods/facets/kernel/here.rb +1 -0
  382. data/lib/methods/facets/kernel/in.rb +1 -0
  383. data/lib/methods/facets/kernel/instance_assign.rb +1 -0
  384. data/lib/methods/facets/kernel/instance_assume.rb +1 -0
  385. data/lib/methods/facets/kernel/instance_class.rb +1 -0
  386. data/lib/methods/facets/kernel/instance_exec.rb +1 -0
  387. data/lib/methods/facets/kernel/instance_send.rb +1 -0
  388. data/lib/methods/facets/kernel/instance_values.rb +1 -0
  389. data/lib/methods/facets/kernel/is.rb +1 -0
  390. data/lib/methods/facets/kernel/load_local.rb +1 -0
  391. data/lib/methods/facets/kernel/meta.rb +1 -0
  392. data/lib/methods/facets/kernel/meta_alias.rb +1 -0
  393. data/lib/methods/facets/kernel/meta_class.rb +1 -0
  394. data/lib/methods/facets/kernel/meta_def.rb +1 -0
  395. data/lib/methods/facets/kernel/meta_eval.rb +1 -0
  396. data/lib/methods/facets/kernel/metaclass.rb +1 -0
  397. data/lib/methods/facets/kernel/method.rb +1 -0
  398. data/lib/methods/facets/kernel/object_class.rb +1 -0
  399. data/lib/methods/facets/kernel/object_clone.rb +1 -0
  400. data/lib/methods/facets/kernel/object_dup.rb +1 -0
  401. data/lib/methods/facets/kernel/object_hexid.rb +1 -0
  402. data/lib/methods/facets/kernel/object_send.rb +1 -0
  403. data/lib/methods/facets/kernel/op_esc.rb +1 -0
  404. data/lib/methods/facets/kernel/p.rb +1 -0
  405. data/lib/methods/facets/kernel/populate.rb +1 -0
  406. data/lib/methods/facets/kernel/pp_call_stack.rb +1 -0
  407. data/lib/methods/facets/kernel/pp_exception.rb +1 -0
  408. data/lib/methods/facets/kernel/qua_class.rb +1 -0
  409. data/lib/methods/facets/kernel/require_all.rb +1 -0
  410. data/lib/methods/facets/kernel/require_esc.rb +1 -0
  411. data/lib/methods/facets/kernel/require_local.rb +1 -0
  412. data/lib/methods/facets/kernel/resc.rb +1 -0
  413. data/lib/methods/facets/kernel/respond.rb +1 -0
  414. data/lib/methods/facets/kernel/returning.rb +1 -0
  415. data/lib/methods/facets/kernel/send_as.rb +1 -0
  416. data/lib/methods/facets/kernel/set_from.rb +1 -0
  417. data/lib/methods/facets/kernel/set_with.rb +1 -0
  418. data/lib/methods/facets/kernel/silence_stderr.rb +1 -0
  419. data/lib/methods/facets/kernel/silence_stream.rb +1 -0
  420. data/lib/methods/facets/kernel/silence_warnings.rb +1 -0
  421. data/lib/methods/facets/kernel/singleton.rb +1 -0
  422. data/lib/methods/facets/kernel/singleton_class.rb +1 -0
  423. data/lib/methods/facets/kernel/super_at.rb +1 -0
  424. data/lib/methods/facets/kernel/super_method.rb +1 -0
  425. data/lib/methods/facets/kernel/superior.rb +1 -0
  426. data/lib/methods/facets/kernel/supermethod.rb +1 -0
  427. data/lib/methods/facets/kernel/suppress.rb +1 -0
  428. data/lib/methods/facets/kernel/tap.rb +1 -0
  429. data/lib/methods/facets/kernel/this.rb +1 -0
  430. data/lib/methods/facets/kernel/to_b.rb +1 -0
  431. data/lib/methods/facets/kernel/true.rb +1 -0
  432. data/lib/methods/facets/kernel/val.rb +1 -0
  433. data/lib/methods/facets/kernel/warn_with_line.rb +1 -0
  434. data/lib/methods/facets/kernel/with.rb +1 -0
  435. data/lib/methods/facets/matchdata/match.rb +1 -0
  436. data/lib/methods/facets/matchdata/matchset.rb +1 -0
  437. data/lib/methods/facets/matchdata/matchtree.rb +1 -0
  438. data/lib/methods/facets/module/abstract.rb +1 -0
  439. data/lib/methods/facets/module/alias_accessor.rb +1 -0
  440. data/lib/methods/facets/module/alias_method_chain.rb +1 -0
  441. data/lib/methods/facets/module/alias_module_function.rb +1 -0
  442. data/lib/methods/facets/module/all_instance_methods.rb +1 -0
  443. data/lib/methods/facets/module/ancestor.rb +1 -0
  444. data/lib/methods/facets/module/attr_setter.rb +1 -0
  445. data/lib/methods/facets/module/attr_tester.rb +1 -0
  446. data/lib/methods/facets/module/attr_toggler.rb +1 -0
  447. data/lib/methods/facets/module/attr_validator.rb +1 -0
  448. data/lib/methods/facets/module/basename.rb +1 -0
  449. data/lib/methods/facets/module/by_name.rb +1 -0
  450. data/lib/methods/facets/module/can.rb +1 -0
  451. data/lib/methods/facets/module/class.rb +1 -0
  452. data/lib/methods/facets/module/clone_removing.rb +1 -0
  453. data/lib/methods/facets/module/clone_renaming.rb +1 -0
  454. data/lib/methods/facets/module/clone_using.rb +1 -0
  455. data/lib/methods/facets/module/dirname.rb +1 -0
  456. data/lib/methods/facets/module/include_and_extend.rb +1 -0
  457. data/lib/methods/facets/module/include_as.rb +1 -0
  458. data/lib/methods/facets/module/include_function_module.rb +1 -0
  459. data/lib/methods/facets/module/instance_method.rb +1 -0
  460. data/lib/methods/facets/module/integrate.rb +1 -0
  461. data/lib/methods/facets/module/is.rb +1 -0
  462. data/lib/methods/facets/module/modspace.rb +1 -0
  463. data/lib/methods/facets/module/module_load.rb +1 -0
  464. data/lib/methods/facets/module/module_method.rb +1 -0
  465. data/lib/methods/facets/module/module_require.rb +1 -0
  466. data/lib/methods/facets/module/nesting.rb +1 -0
  467. data/lib/methods/facets/module/nodef.rb +1 -0
  468. data/lib/methods/facets/module/on_included.rb +1 -0
  469. data/lib/methods/facets/module/op_minus.rb +1 -0
  470. data/lib/methods/facets/module/op_mul.rb +1 -0
  471. data/lib/methods/facets/module/op_plus.rb +1 -0
  472. data/lib/methods/facets/module/redef.rb +1 -0
  473. data/lib/methods/facets/module/redefine_method.rb +1 -0
  474. data/lib/methods/facets/module/redirect.rb +1 -0
  475. data/lib/methods/facets/module/redirect_method.rb +1 -0
  476. data/lib/methods/facets/module/remove.rb +1 -0
  477. data/lib/methods/facets/module/rename.rb +1 -0
  478. data/lib/methods/facets/module/rename_method.rb +1 -0
  479. data/lib/methods/facets/module/revisal.rb +1 -0
  480. data/lib/methods/facets/module/wrap.rb +1 -0
  481. data/lib/methods/facets/module/wrap_method.rb +1 -0
  482. data/lib/methods/facets/nilclass/ergo.rb +1 -0
  483. data/lib/methods/facets/nilclass/status.rb +1 -0
  484. data/lib/methods/facets/nilclass/to_bool.rb +1 -0
  485. data/lib/methods/facets/nilclass/to_f.rb +1 -0
  486. data/lib/methods/facets/nilclass/to_h.rb +1 -0
  487. data/lib/methods/facets/numeric/approx.rb +1 -0
  488. data/lib/methods/facets/numeric/distance.rb +1 -0
  489. data/lib/methods/facets/numeric/pred.rb +1 -0
  490. data/lib/methods/facets/numeric/round_at.rb +1 -0
  491. data/lib/methods/facets/numeric/round_to.rb +1 -0
  492. data/lib/methods/facets/numeric/succ.rb +1 -0
  493. data/lib/methods/facets/numeric/to_b.rb +1 -0
  494. data/lib/methods/facets/object/to_bool.rb +1 -0
  495. data/lib/methods/facets/object/with_accessor.rb +1 -0
  496. data/lib/methods/facets/object/with_reader.rb +1 -0
  497. data/lib/methods/facets/object/with_writer.rb +1 -0
  498. data/lib/methods/facets/proc/bind.rb +1 -0
  499. data/lib/methods/facets/proc/compose.rb +1 -0
  500. data/lib/methods/facets/proc/op_mul.rb +1 -0
  501. data/lib/methods/facets/proc/to_h.rb +1 -0
  502. data/lib/methods/facets/proc/to_method.rb +1 -0
  503. data/lib/methods/facets/proc/update.rb +1 -0
  504. data/lib/methods/facets/range/combine.rb +1 -0
  505. data/lib/methods/facets/range/overlap.rb +1 -0
  506. data/lib/methods/facets/range/to_r.rb +1 -0
  507. data/lib/methods/facets/range/to_range.rb +1 -0
  508. data/lib/methods/facets/range/umbrella.rb +1 -0
  509. data/lib/methods/facets/range/within.rb +1 -0
  510. data/lib/methods/facets/regexp/arity.rb +1 -0
  511. data/lib/methods/facets/regexp/to_re.rb +1 -0
  512. data/lib/methods/facets/regexp/to_regexp.rb +1 -0
  513. data/lib/methods/facets/string/_crypt.rb +1 -0
  514. data/lib/methods/facets/string/align_center.rb +1 -0
  515. data/lib/methods/facets/string/align_left.rb +1 -0
  516. data/lib/methods/facets/string/align_right.rb +1 -0
  517. data/lib/methods/facets/string/at.rb +1 -0
  518. data/lib/methods/facets/string/blank.rb +1 -0
  519. data/lib/methods/facets/string/bracket.rb +1 -0
  520. data/lib/methods/facets/string/brief.rb +1 -0
  521. data/lib/methods/facets/string/bytes.rb +1 -0
  522. data/lib/methods/facets/string/capitalized.rb +1 -0
  523. data/lib/methods/facets/string/chars.rb +1 -0
  524. data/lib/methods/facets/string/cleave.rb +1 -0
  525. data/lib/methods/facets/string/cmp.rb +1 -0
  526. data/lib/methods/facets/string/crypt.rb +1 -0
  527. data/lib/methods/facets/string/dequote.rb +1 -0
  528. data/lib/methods/facets/string/divide.rb +1 -0
  529. data/lib/methods/facets/string/downcase.rb +1 -0
  530. data/lib/methods/facets/string/each_char.rb +1 -0
  531. data/lib/methods/facets/string/each_character.rb +1 -0
  532. data/lib/methods/facets/string/each_word.rb +1 -0
  533. data/lib/methods/facets/string/ends_with.rb +1 -0
  534. data/lib/methods/facets/string/first.rb +1 -0
  535. data/lib/methods/facets/string/fold.rb +1 -0
  536. data/lib/methods/facets/string/format.rb +1 -0
  537. data/lib/methods/facets/string/indent.rb +1 -0
  538. data/lib/methods/facets/string/index_all.rb +1 -0
  539. data/lib/methods/facets/string/interpolate.rb +1 -0
  540. data/lib/methods/facets/string/last.rb +1 -0
  541. data/lib/methods/facets/string/lchomp.rb +1 -0
  542. data/lib/methods/facets/string/line_wrap.rb +1 -0
  543. data/lib/methods/facets/string/lines.rb +1 -0
  544. data/lib/methods/facets/string/lowercase.rb +1 -0
  545. data/lib/methods/facets/string/margin.rb +1 -0
  546. data/lib/methods/facets/string/mscan.rb +1 -0
  547. data/lib/methods/facets/string/natcmp.rb +1 -0
  548. data/lib/methods/facets/string/nchar.rb +1 -0
  549. data/lib/methods/facets/string/peek.rb +1 -0
  550. data/lib/methods/facets/string/poke.rb +1 -0
  551. data/lib/methods/facets/string/pop.rb +1 -0
  552. data/lib/methods/facets/string/pull.rb +1 -0
  553. data/lib/methods/facets/string/push.rb +1 -0
  554. data/lib/methods/facets/string/quote.rb +1 -0
  555. data/lib/methods/facets/string/range.rb +1 -0
  556. data/lib/methods/facets/string/range_all.rb +1 -0
  557. data/lib/methods/facets/string/range_of_line.rb +1 -0
  558. data/lib/methods/facets/string/regesc.rb +1 -0
  559. data/lib/methods/facets/string/rewrite.rb +1 -0
  560. data/lib/methods/facets/string/shatter.rb +1 -0
  561. data/lib/methods/facets/string/shift.rb +1 -0
  562. data/lib/methods/facets/string/splice.rb +1 -0
  563. data/lib/methods/facets/string/sprintf.rb +1 -0
  564. data/lib/methods/facets/string/starts_with.rb +1 -0
  565. data/lib/methods/facets/string/store.rb +1 -0
  566. data/lib/methods/facets/string/succ.rb +1 -0
  567. data/lib/methods/facets/string/tab.rb +1 -0
  568. data/lib/methods/facets/string/tabto.rb +1 -0
  569. data/lib/methods/facets/string/to_b.rb +1 -0
  570. data/lib/methods/facets/string/to_const.rb +1 -0
  571. data/lib/methods/facets/string/to_date.rb +1 -0
  572. data/lib/methods/facets/string/to_proc.rb +1 -0
  573. data/lib/methods/facets/string/to_re.rb +1 -0
  574. data/lib/methods/facets/string/to_rx.rb +1 -0
  575. data/lib/methods/facets/string/to_time.rb +1 -0
  576. data/lib/methods/facets/string/unbracket.rb +1 -0
  577. data/lib/methods/facets/string/unshift.rb +1 -0
  578. data/lib/methods/facets/string/upcase.rb +1 -0
  579. data/lib/methods/facets/string/uppercase.rb +1 -0
  580. data/lib/methods/facets/string/whitespace.rb +1 -0
  581. data/lib/methods/facets/string/word_filter.rb +1 -0
  582. data/lib/methods/facets/string/word_wrap.rb +1 -0
  583. data/lib/methods/facets/string/words.rb +1 -0
  584. data/lib/methods/facets/symbol/chomp.rb +1 -0
  585. data/lib/methods/facets/symbol/generate.rb +1 -0
  586. data/lib/methods/facets/symbol/lchomp.rb +1 -0
  587. data/lib/methods/facets/symbol/not.rb +1 -0
  588. data/lib/methods/facets/symbol/op_tilde.rb +1 -0
  589. data/lib/methods/facets/symbol/pad.rb +1 -0
  590. data/lib/methods/facets/symbol/shadow.rb +1 -0
  591. data/lib/methods/facets/symbol/succ.rb +1 -0
  592. data/lib/methods/facets/symbol/to_const.rb +1 -0
  593. data/lib/methods/facets/symbol/to_proc.rb +1 -0
  594. data/lib/methods/facets/time/change.rb +1 -0
  595. data/lib/methods/facets/time/elapse.rb +1 -0
  596. data/lib/methods/facets/time/stamp.rb +1 -0
  597. data/lib/methods/facets/time/to_date.rb +1 -0
  598. data/lib/methods/facets/time/to_s.rb +1 -0
  599. data/lib/methods/facets/time/to_time.rb +1 -0
  600. data/lib/methods/facets/trueclass/to_bool.rb +1 -0
  601. data/lib/methods/facets/unboundmethod/arguments.rb +1 -0
  602. data/lib/methods/facets/unboundmethod/name.rb +1 -0
  603. data/lib/more/facets/advice.rb +132 -0
  604. data/lib/more/facets/annotations.rb +154 -0
  605. data/lib/more/facets/ansicode.rb +268 -0
  606. data/lib/more/facets/aop.rb +212 -0
  607. data/lib/more/facets/arguments.rb +387 -0
  608. data/lib/more/facets/association.rb +203 -0
  609. data/lib/more/facets/attributes.rb +168 -0
  610. data/lib/more/facets/autoarray.rb +87 -0
  611. data/lib/more/facets/autoreload.rb +150 -0
  612. data/lib/more/facets/basicobject.rb +296 -0
  613. data/lib/more/facets/bbcode.rb +376 -0
  614. data/lib/more/facets/behavior.rb +91 -0
  615. data/lib/more/facets/binreadable.rb +286 -0
  616. data/lib/more/facets/buildable.rb +130 -0
  617. data/lib/more/facets/buildingblock.rb +263 -0
  618. data/lib/more/facets/bytes.rb +244 -0
  619. data/lib/more/facets/cachedelegator.rb +90 -0
  620. data/lib/more/facets/capsule.rb +254 -0
  621. data/lib/more/facets/class_extension.rb +160 -0
  622. data/lib/more/facets/classmethods.rb +221 -0
  623. data/lib/more/facets/cloneable.rb +75 -0
  624. data/lib/more/facets/command.rb +262 -0
  625. data/lib/more/facets/command_options.rb +328 -0
  626. data/lib/more/facets/compare_on.rb +143 -0
  627. data/lib/more/facets/console.rb +107 -0
  628. data/lib/more/facets/coroutine.rb +176 -0
  629. data/lib/more/facets/crypt.rb +214 -0
  630. data/lib/more/facets/curry.rb +96 -0
  631. data/lib/more/facets/cut.rb +217 -0
  632. data/lib/more/facets/daemonize.rb +50 -0
  633. data/lib/more/facets/date.rb +133 -0
  634. data/lib/more/facets/dependency.rb +205 -0
  635. data/lib/more/facets/dictionary.rb +537 -0
  636. data/lib/more/facets/downloader.rb +279 -0
  637. data/lib/more/facets/elementor.rb +288 -0
  638. data/lib/more/facets/enumerablepass.rb +285 -0
  639. data/lib/more/facets/eventhook.rb +121 -0
  640. data/lib/more/facets/expirable.rb +89 -0
  641. data/lib/more/facets/fileable.rb +155 -0
  642. data/lib/more/facets/filelist.rb +493 -0
  643. data/lib/more/facets/fileshell.rb +198 -0
  644. data/lib/more/facets/fileutils.rb +443 -0
  645. data/lib/more/facets/getoptlong.rb +113 -0
  646. data/lib/more/facets/hashbuilder.rb +97 -0
  647. data/lib/more/facets/heap.rb +27 -0
  648. data/lib/more/facets/infinity.rb +229 -0
  649. data/lib/more/facets/inheritor.rb +258 -0
  650. data/lib/more/facets/instantiable.rb +75 -0
  651. data/lib/more/facets/instantise.rb +126 -0
  652. data/lib/more/facets/interface.rb +230 -0
  653. data/lib/more/facets/interval.rb +427 -0
  654. data/lib/more/facets/ioredirect.rb +133 -0
  655. data/lib/more/facets/lazy.rb +245 -0
  656. data/lib/more/facets/let.rb +91 -0
  657. data/lib/more/facets/linkedlist.rb +256 -0
  658. data/lib/more/facets/logger.rb +60 -0
  659. data/lib/more/facets/lrucache.rb +179 -0
  660. data/lib/more/facets/main.rb +77 -0
  661. data/lib/more/facets/mapsend.rb +98 -0
  662. data/lib/more/facets/memoize.rb +155 -0
  663. data/lib/more/facets/minitar.rb +999 -0
  664. data/lib/more/facets/multipliers.rb +209 -0
  665. data/lib/more/facets/multiton.rb +353 -0
  666. data/lib/more/facets/nackclass.rb +43 -0
  667. data/lib/more/facets/namespace.rb +161 -0
  668. data/lib/more/facets/nullclass.rb +79 -0
  669. data/lib/more/facets/opencascade.rb +162 -0
  670. data/lib/more/facets/opencollection.rb +46 -0
  671. data/lib/more/facets/openobject.rb +362 -0
  672. data/lib/more/facets/orderedhash.rb +42 -0
  673. data/lib/more/facets/ostruct.rb +314 -0
  674. data/lib/more/facets/overload.rb +151 -0
  675. data/lib/more/facets/paramix.rb +245 -0
  676. data/lib/more/facets/pathlist.rb +106 -0
  677. data/lib/more/facets/pathname.rb +120 -0
  678. data/lib/more/facets/pool.rb +97 -0
  679. data/lib/more/facets/pqueue.rb +468 -0
  680. data/lib/more/facets/prepend.rb +92 -0
  681. data/lib/more/facets/progressbar.rb +237 -0
  682. data/lib/more/facets/prototype.rb +128 -0
  683. data/lib/more/facets/random.rb +525 -0
  684. data/lib/more/facets/rbconfig.rb +55 -0
  685. data/lib/more/facets/rbsystem.rb +190 -0
  686. data/lib/more/facets/recorder.rb +137 -0
  687. data/lib/more/facets/recursive.rb +67 -0
  688. data/lib/more/facets/reference.rb +100 -0
  689. data/lib/more/facets/reflection.rb +103 -0
  690. data/lib/more/facets/rwdelegator.rb +79 -0
  691. data/lib/more/facets/semaphore.rb +97 -0
  692. data/lib/more/facets/settings.rb +250 -0
  693. data/lib/more/facets/shellwords.rb +43 -0
  694. data/lib/more/facets/smtp_tls.rb +134 -0
  695. data/lib/more/facets/snapshot.rb +206 -0
  696. data/lib/more/facets/stylize.rb +355 -0
  697. data/lib/more/facets/syncarray.rb +146 -0
  698. data/lib/more/facets/synchash.rb +173 -0
  699. data/lib/more/facets/timer.rb +309 -0
  700. data/lib/more/facets/times.rb +444 -0
  701. data/lib/more/facets/tracepoint.rb +194 -0
  702. data/lib/more/facets/tuple.rb +370 -0
  703. data/lib/more/facets/typecast.rb +296 -0
  704. data/lib/more/facets/uninheritable.rb +93 -0
  705. data/lib/more/facets/uploadutils.rb +441 -0
  706. data/lib/more/facets/version.rb +127 -0
  707. data/lib/more/facets/yaml.rb +40 -0
  708. data/lib/more/facets/ziputils.rb +350 -0
  709. data/meta/manifest.txt +969 -0
  710. data/meta/project.yaml +34 -0
  711. data/meta/version.txt +1 -0
  712. data/task/clean +17 -0
  713. data/task/config.yaml +43 -0
  714. data/task/extest +129 -0
  715. data/task/groups +23 -0
  716. data/task/install +92 -0
  717. data/task/load +39 -0
  718. data/task/methods +120 -0
  719. data/task/publish +43 -0
  720. data/task/rdoc +113 -0
  721. data/task/rdoc.yaml +478 -0
  722. data/task/stats +138 -0
  723. data/task/test +25 -0
  724. data/test/unit/array/test_delete.rb +45 -0
  725. data/test/unit/array/test_indexable.rb +136 -0
  726. data/test/unit/array/test_merge.rb +51 -0
  727. data/test/unit/array/test_pad.rb +50 -0
  728. data/test/unit/array/test_rotate.rb +39 -0
  729. data/test/unit/array/test_select.rb +31 -0
  730. data/test/unit/array/test_stackable.rb +36 -0
  731. data/test/unit/binding/test_cflow.rb +62 -0
  732. data/test/unit/binding/test_eval.rb +45 -0
  733. data/test/unit/binding/test_vars.rb +46 -0
  734. data/test/unit/class/test_descendents.rb +38 -0
  735. data/test/unit/class/test_initializer.rb +34 -0
  736. data/test/unit/comparable/test_bound.rb +58 -0
  737. data/test/unit/comparable/test_cmp.rb +78 -0
  738. data/test/unit/continuation/test_create.rb +28 -0
  739. data/test/unit/enumerable/test_cartesian.rb +52 -0
  740. data/test/unit/enumerable/test_collate.rb +55 -0
  741. data/test/unit/enumerable/test_collect.rb +52 -0
  742. data/test/unit/enumerable/test_combination.rb +49 -0
  743. data/test/unit/enumerable/test_count.rb +78 -0
  744. data/test/unit/enumerable/test_partition.rb +134 -0
  745. data/test/unit/enumerable/test_permutation.rb +32 -0
  746. data/test/unit/enumerable/test_probability.rb +57 -0
  747. data/test/unit/file/test_topath.rb +74 -0
  748. data/test/unit/hash/test_at.rb +29 -0
  749. data/test/unit/hash/test_delete.rb +45 -0
  750. data/test/unit/hash/test_has_keys.rb +36 -0
  751. data/test/unit/hash/test_insert.rb +29 -0
  752. data/test/unit/hash/test_inverse.rb +32 -0
  753. data/test/unit/hash/test_iterate.rb +38 -0
  754. data/test/unit/hash/test_keyize.rb +60 -0
  755. data/test/unit/hash/test_merge.rb +31 -0
  756. data/test/unit/hash/test_new.rb +30 -0
  757. data/test/unit/hash/test_op.rb +52 -0
  758. data/test/unit/hash/test_rekey.rb +75 -0
  759. data/test/unit/hash/test_traverse.rb +39 -0
  760. data/test/unit/hash/test_update.rb +50 -0
  761. data/test/unit/hash/test_weave.rb +31 -0
  762. data/test/unit/integer/test_bitmask.rb +49 -0
  763. data/test/unit/integer/test_factorial.rb +32 -0
  764. data/test/unit/integer/test_multiples.rb +45 -0
  765. data/test/unit/integer/test_of.rb +36 -0
  766. data/test/unit/kernel/test_callstack.rb +36 -0
  767. data/test/unit/kernel/test_constant.rb +35 -0
  768. data/test/unit/kernel/test_deepcopy.rb +45 -0
  769. data/test/unit/kernel/test_instance.rb +78 -0
  770. data/test/unit/kernel/test_metaid.rb +62 -0
  771. data/test/unit/kernel/test_object.rb +37 -0
  772. data/test/unit/kernel/test_populate.rb +64 -0
  773. data/test/unit/kernel/test_report.rb +18 -0
  774. data/test/unit/kernel/test_require_esc.rb +29 -0
  775. data/test/unit/kernel/test_silence.rb +30 -0
  776. data/test/unit/kernel/test_super.rb +68 -0
  777. data/test/unit/kernel/test_tap.rb +45 -0
  778. data/test/unit/kernel/test_val.rb +50 -0
  779. data/test/unit/kernel/test_withattr.rb +53 -0
  780. data/test/unit/matchdata/test_matchset.rb +44 -0
  781. data/test/unit/module/test_abstract.rb +38 -0
  782. data/test/unit/module/test_alias.rb +60 -0
  783. data/test/unit/module/test_cattr.rb +65 -0
  784. data/test/unit/module/test_clone.rb +57 -0
  785. data/test/unit/module/test_include.rb +78 -0
  786. data/test/unit/module/test_modify.rb +189 -0
  787. data/test/unit/module/test_name.rb +66 -0
  788. data/test/unit/module/test_traits.rb +52 -0
  789. data/test/unit/numeric/test_round.rb +74 -0
  790. data/test/unit/proc/test_bind.rb +53 -0
  791. data/test/unit/proc/test_compose.rb +43 -0
  792. data/test/unit/range/test_combine.rb +36 -0
  793. data/test/unit/range/test_overlap.rb +56 -0
  794. data/test/unit/regexp/test_arity.rb +35 -0
  795. data/test/unit/string/test_align.rb +36 -0
  796. data/test/unit/string/test_blank.rb +33 -0
  797. data/test/unit/string/test_bracket.rb +79 -0
  798. data/test/unit/string/test_case.rb +48 -0
  799. data/test/unit/string/test_crypt.rb +32 -0
  800. data/test/unit/string/test_filter.rb +42 -0
  801. data/test/unit/string/test_format.rb +96 -0
  802. data/test/unit/string/test_indexable.rb +83 -0
  803. data/test/unit/string/test_interpolate.rb +29 -0
  804. data/test/unit/string/test_natcmp.rb +32 -0
  805. data/test/unit/string/test_nchar.rb +29 -0
  806. data/test/unit/string/test_partitions.rb +67 -0
  807. data/test/unit/string/test_range.rb +40 -0
  808. data/test/unit/string/test_regesc.rb +35 -0
  809. data/test/unit/string/test_scan.rb +46 -0
  810. data/test/unit/string/test_stackable.rb +113 -0
  811. data/test/unit/string/test_tabs.rb +135 -0
  812. data/test/unit/symbol/test_chomp.rb +28 -0
  813. data/test/unit/symbol/test_generate.rb +28 -0
  814. data/test/unit/symbol/test_not.rb +31 -0
  815. data/test/unit/symbol/test_shadow.rb +29 -0
  816. data/test/unit/symbol/test_succ.rb +30 -0
  817. data/test/unit/test_1stclassmethod.rb +21 -0
  818. data/test/unit/test_advice.rb +69 -0
  819. data/test/unit/test_annotations.rb +97 -0
  820. data/test/unit/test_ansicode.rb +20 -0
  821. data/test/unit/test_aop.rb +49 -0
  822. data/test/unit/test_arguments.rb +71 -0
  823. data/test/unit/test_association.rb +53 -0
  824. data/test/unit/test_attributes.rb +41 -0
  825. data/test/unit/test_autoarray.rb +34 -0
  826. data/test/unit/test_basicobject.rb +69 -0
  827. data/test/unit/test_bbcode.rb +36 -0
  828. data/test/unit/test_binreadable.rb +66 -0
  829. data/test/unit/test_boolean.rb +105 -0
  830. data/test/unit/test_buildable.rb +54 -0
  831. data/test/unit/test_buildingblock.rb +50 -0
  832. data/test/unit/test_bytes.rb +86 -0
  833. data/test/unit/test_class_extension.rb +72 -0
  834. data/test/unit/test_classmethods.rb +71 -0
  835. data/test/unit/test_command.rb +260 -0
  836. data/test/unit/test_command_options.rb +29 -0
  837. data/test/unit/test_compare_on.rb +59 -0
  838. data/test/unit/test_conversion.rb +236 -0
  839. data/test/unit/test_coroutine.rb +62 -0
  840. data/test/unit/test_crypt.rb +48 -0
  841. data/test/unit/test_curry.rb +43 -0
  842. data/test/unit/test_cut.rb +37 -0
  843. data/test/unit/test_date.rb +61 -0
  844. data/test/unit/test_dependency.rb +84 -0
  845. data/test/unit/test_dictionary.rb +122 -0
  846. data/test/unit/test_elementor.rb +75 -0
  847. data/test/unit/test_enumerablepass.rb +88 -0
  848. data/test/unit/test_functor.rb +39 -0
  849. data/test/unit/test_getoptlong.rb +41 -0
  850. data/test/unit/test_infinity.rb +52 -0
  851. data/test/unit/test_inheritor.rb +157 -0
  852. data/test/unit/test_instantiable.rb +39 -0
  853. data/test/unit/test_instantise.rb +47 -0
  854. data/test/unit/test_interface.rb +91 -0
  855. data/test/unit/test_interval.rb +121 -0
  856. data/test/unit/test_let.rb +33 -0
  857. data/test/unit/test_linkedlist.rb +55 -0
  858. data/test/unit/test_lrucache.rb +27 -0
  859. data/test/unit/test_mapsend.rb +34 -0
  860. data/test/unit/test_memoize.rb +52 -0
  861. data/test/unit/test_multipliers.rb +116 -0
  862. data/test/unit/test_multiton.rb +184 -0
  863. data/test/unit/test_namespace.rb +67 -0
  864. data/test/unit/test_opencascade.rb +77 -0
  865. data/test/unit/test_openobject.rb +128 -0
  866. data/test/unit/test_ostruct.rb +130 -0
  867. data/test/unit/test_overload.rb +56 -0
  868. data/test/unit/test_paramix.rb +98 -0
  869. data/test/unit/test_prototype.rb +50 -0
  870. data/test/unit/test_random.rb +161 -0
  871. data/test/unit/test_recorder.rb +46 -0
  872. data/test/unit/test_snapshot.rb +36 -0
  873. data/test/unit/test_stylize.rb +154 -0
  874. data/test/unit/test_syncarray.rb +30 -0
  875. data/test/unit/test_synchash.rb +30 -0
  876. data/test/unit/test_timer.rb +68 -0
  877. data/test/unit/test_times.rb +105 -0
  878. data/test/unit/test_tuple.rb +66 -0
  879. data/test/unit/test_typecast.rb +70 -0
  880. data/test/unit/test_uninheritable.rb +44 -0
  881. data/test/unit/time/test_change.rb +32 -0
  882. data/test/unit/time/test_elapse.rb +31 -0
  883. metadata +1158 -1418
  884. data/COPYING +0 -403
  885. data/PROJECT +0 -65
  886. data/VERSION +0 -1
  887. data/data/facets/units/binary/base.yaml +0 -12
  888. data/data/facets/units/binary/extra.yaml +0 -8
  889. data/data/facets/units/cex.yaml +0 -7
  890. data/data/facets/units/currency/base.yaml +0 -268
  891. data/data/facets/units/default.yaml +0 -22
  892. data/data/facets/units/dump_yaml.rb +0 -309
  893. data/data/facets/units/si/base.yaml +0 -36
  894. data/data/facets/units/si/derived.yaml +0 -133
  895. data/data/facets/units/si/extra.yaml +0 -107
  896. data/data/facets/units/standard.yaml +0 -5
  897. data/data/facets/units/uk.yaml +0 -16
  898. data/data/facets/units/uk/base.yaml +0 -107
  899. data/data/facets/units/us.yaml +0 -16
  900. data/data/facets/units/us/base.yaml +0 -112
  901. data/data/facets/units/xmethods/cached.yaml +0 -83
  902. data/data/facets/units/xmethods/mapping.yaml +0 -85
  903. data/demo/annotation/demo_annotation.rb +0 -22
  904. data/demo/cuts/benchmark.rb +0 -71
  905. data/demo/cuts/override.rb +0 -33
  906. data/demo/io-reactor/chatserver.rb +0 -347
  907. data/demo/lisp/game.rb +0 -47
  908. data/demo/tkxml/helloworld.rb +0 -32
  909. data/demo/tkxml/ui.xml +0 -32
  910. data/doc/AUTHORS +0 -54
  911. data/doc/CHANGES +0 -354
  912. data/doc/HISTORY +0 -337
  913. data/doc/LATEST +0 -220
  914. data/doc/misc/history/ANN-0.6.0 +0 -40
  915. data/doc/misc/history/ANN-0.6.1 +0 -36
  916. data/doc/misc/history/ANN-0.6.3 +0 -43
  917. data/doc/misc/history/ANN-0.7.0 +0 -59
  918. data/doc/misc/history/ANN-0.8.1 +0 -127
  919. data/doc/misc/history/ANN-1.4 +0 -41
  920. data/doc/misc/tkxml.txt +0 -555
  921. data/lib/facet/all.rb +0 -1
  922. data/lib/facet/ann.rb +0 -1
  923. data/lib/facet/ann_attr.rb +0 -1
  924. data/lib/facet/ansicode.rb +0 -1
  925. data/lib/facet/arguments.rb +0 -1
  926. data/lib/facet/array/at_rand.rb +0 -1
  927. data/lib/facet/array/body.rb +0 -1
  928. data/lib/facet/array/combos.rb +0 -1
  929. data/lib/facet/array/delete_unless.rb +0 -1
  930. data/lib/facet/array/delete_values.rb +0 -1
  931. data/lib/facet/array/delete_values_at.rb +0 -1
  932. data/lib/facet/array/each_combo.rb +0 -1
  933. data/lib/facet/array/each_with_key.rb +0 -1
  934. data/lib/facet/array/first.rb +0 -1
  935. data/lib/facet/array/foot.rb +0 -1
  936. data/lib/facet/array/head.rb +0 -1
  937. data/lib/facet/array/index.rb +0 -1
  938. data/lib/facet/array/join_sentence.rb +0 -1
  939. data/lib/facet/array/last.rb +0 -1
  940. data/lib/facet/array/last_index.rb +0 -1
  941. data/lib/facet/array/merge.rb +0 -1
  942. data/lib/facet/array/mid.rb +0 -1
  943. data/lib/facet/array/middle.rb +0 -1
  944. data/lib/facet/array/op_div.rb +0 -1
  945. data/lib/facet/array/op_fetch.rb +0 -1
  946. data/lib/facet/array/op_mod.rb +0 -1
  947. data/lib/facet/array/op_store.rb +0 -1
  948. data/lib/facet/array/pad.rb +0 -1
  949. data/lib/facet/array/pick.rb +0 -1
  950. data/lib/facet/array/pos.rb +0 -1
  951. data/lib/facet/array/pot.rb +0 -1
  952. data/lib/facet/array/pull.rb +0 -1
  953. data/lib/facet/array/rand_index.rb +0 -1
  954. data/lib/facet/array/rand_subset.rb +0 -1
  955. data/lib/facet/array/range.rb +0 -1
  956. data/lib/facet/array/rotate.rb +0 -1
  957. data/lib/facet/array/select.rb +0 -1
  958. data/lib/facet/array/shuffle.rb +0 -1
  959. data/lib/facet/array/store.rb +0 -1
  960. data/lib/facet/array/tail.rb +0 -1
  961. data/lib/facet/array/thru.rb +0 -1
  962. data/lib/facet/array/to_b.rb +0 -1
  963. data/lib/facet/array/to_h.rb +0 -1
  964. data/lib/facet/array/to_hash.rb +0 -1
  965. data/lib/facet/array/to_path.rb +0 -1
  966. data/lib/facet/array/unzip.rb +0 -1
  967. data/lib/facet/aspects.rb +0 -1
  968. data/lib/facet/association.rb +0 -1
  969. data/lib/facet/autoarray.rb +0 -1
  970. data/lib/facet/autoscript.rb +0 -1
  971. data/lib/facet/autovivify.rb +0 -1
  972. data/lib/facet/basicobject.rb +0 -1
  973. data/lib/facet/bbcode.rb +0 -1
  974. data/lib/facet/behavior.rb +0 -1
  975. data/lib/facet/binaryreader.rb +0 -1
  976. data/lib/facet/binding.rb +0 -1
  977. data/lib/facet/binding/__DIR__.rb +0 -1
  978. data/lib/facet/binding/__FILE__.rb +0 -1
  979. data/lib/facet/binding/__LINE__.rb +0 -1
  980. data/lib/facet/binding/call_stack.rb +0 -1
  981. data/lib/facet/binding/called.rb +0 -1
  982. data/lib/facet/binding/caller.rb +0 -1
  983. data/lib/facet/binding/defined.rb +0 -1
  984. data/lib/facet/binding/eval.rb +0 -1
  985. data/lib/facet/binding/local_variables.rb +0 -1
  986. data/lib/facet/binding/method_name.rb +0 -1
  987. data/lib/facet/binding/op_fetch.rb +0 -1
  988. data/lib/facet/binding/op_store.rb +0 -1
  989. data/lib/facet/binding/self.rb +0 -1
  990. data/lib/facet/binding/self/of_caller.rb +0 -1
  991. data/lib/facet/bitmask.rb +0 -1
  992. data/lib/facet/buildingblock.rb +0 -1
  993. data/lib/facet/bytes.rb +0 -1
  994. data/lib/facet/cache.rb +0 -1
  995. data/lib/facet/class/by_name.rb +0 -1
  996. data/lib/facet/class/cattr.rb +0 -1
  997. data/lib/facet/class/cattr_accessor.rb +0 -1
  998. data/lib/facet/class/cattr_reader.rb +0 -1
  999. data/lib/facet/class/cattr_writer.rb +0 -1
  1000. data/lib/facet/class/class_load.rb +0 -1
  1001. data/lib/facet/class/class_require.rb +0 -1
  1002. data/lib/facet/class/descendents.rb +0 -1
  1003. data/lib/facet/class/method_name.rb +0 -1
  1004. data/lib/facet/class/remove_descendents.rb +0 -1
  1005. data/lib/facet/class/remove_subclasses.rb +0 -1
  1006. data/lib/facet/class/subclasses.rb +0 -1
  1007. data/lib/facet/class/to_proc.rb +0 -1
  1008. data/lib/facet/class/unix_path.rb +0 -1
  1009. data/lib/facet/classmethods.rb +0 -1
  1010. data/lib/facet/cloneable.rb +0 -1
  1011. data/lib/facet/command.rb +0 -1
  1012. data/lib/facet/comparable/at_least.rb +0 -1
  1013. data/lib/facet/comparable/at_most.rb +0 -1
  1014. data/lib/facet/comparable/cap.rb +0 -1
  1015. data/lib/facet/comparable/clip.rb +0 -1
  1016. data/lib/facet/comparable/cmp.rb +0 -1
  1017. data/lib/facet/config/datadir.rb +0 -1
  1018. data/lib/facet/config/inspect.rb +0 -1
  1019. data/lib/facet/consoleutils.rb +0 -1
  1020. data/lib/facet/continuation/self/create.rb +0 -1
  1021. data/lib/facet/cookie.rb +0 -1
  1022. data/lib/facet/coroutine.rb +0 -1
  1023. data/lib/facet/crypt.rb +0 -1
  1024. data/lib/facet/cut.rb +0 -1
  1025. data/lib/facet/date/days_in_month.rb +0 -1
  1026. data/lib/facet/date/days_of_month.rb +0 -1
  1027. data/lib/facet/date/stamp.rb +0 -1
  1028. data/lib/facet/date/to_date.rb +0 -1
  1029. data/lib/facet/date/to_s.rb +0 -1
  1030. data/lib/facet/date/to_time.rb +0 -1
  1031. data/lib/facet/dependency.rb +0 -1
  1032. data/lib/facet/dictionary.rb +0 -1
  1033. data/lib/facet/dir/self/ancestor.rb +0 -1
  1034. data/lib/facet/dir/self/ascend.rb +0 -1
  1035. data/lib/facet/dir/self/descend.rb +0 -1
  1036. data/lib/facet/dir/self/ls_r.rb +0 -1
  1037. data/lib/facet/dir/self/multiglob.rb +0 -1
  1038. data/lib/facet/dir/self/multiglob_r.rb +0 -1
  1039. data/lib/facet/dir/self/multiglob_with_default.rb +0 -1
  1040. data/lib/facet/dir/self/recurse.rb +0 -1
  1041. data/lib/facet/doublemetaphone.rb +0 -1
  1042. data/lib/facet/downloader.rb +0 -1
  1043. data/lib/facet/elementor.rb +0 -1
  1044. data/lib/facet/enumerable/accumulate.rb +0 -1
  1045. data/lib/facet/enumerable/cart.rb +0 -1
  1046. data/lib/facet/enumerable/cartesian_product.rb +0 -1
  1047. data/lib/facet/enumerable/cascade.rb +0 -1
  1048. data/lib/facet/enumerable/collect_if.rb +0 -1
  1049. data/lib/facet/enumerable/collect_with_counter.rb +0 -1
  1050. data/lib/facet/enumerable/collect_with_index.rb +0 -1
  1051. data/lib/facet/enumerable/commonality.rb +0 -1
  1052. data/lib/facet/enumerable/compact_collect.rb +0 -1
  1053. data/lib/facet/enumerable/compact_map.rb +0 -1
  1054. data/lib/facet/enumerable/count.rb +0 -1
  1055. data/lib/facet/enumerable/divide.rb +0 -1
  1056. data/lib/facet/enumerable/each_by.rb +0 -1
  1057. data/lib/facet/enumerable/each_combination.rb +0 -1
  1058. data/lib/facet/enumerable/each_pair.rb +0 -1
  1059. data/lib/facet/enumerable/each_permutation.rb +0 -1
  1060. data/lib/facet/enumerable/each_slice.rb +0 -1
  1061. data/lib/facet/enumerable/each_unique_pair.rb +0 -1
  1062. data/lib/facet/enumerable/each_with_counter.rb +0 -1
  1063. data/lib/facet/enumerable/eachn.rb +0 -1
  1064. data/lib/facet/enumerable/elementwise.rb +0 -1
  1065. data/lib/facet/enumerable/entropy.rb +0 -1
  1066. data/lib/facet/enumerable/every.rb +0 -1
  1067. data/lib/facet/enumerable/ew.rb +0 -1
  1068. data/lib/facet/enumerable/filter_collect.rb +0 -1
  1069. data/lib/facet/enumerable/filter_map.rb +0 -1
  1070. data/lib/facet/enumerable/find_collisions.rb +0 -1
  1071. data/lib/facet/enumerable/frequency.rb +0 -1
  1072. data/lib/facet/enumerable/graph.rb +0 -1
  1073. data/lib/facet/enumerable/ideal_entropy.rb +0 -1
  1074. data/lib/facet/enumerable/injecting.rb +0 -1
  1075. data/lib/facet/enumerable/map_if.rb +0 -1
  1076. data/lib/facet/enumerable/map_send.rb +0 -1
  1077. data/lib/facet/enumerable/map_with_counter.rb +0 -1
  1078. data/lib/facet/enumerable/map_with_index.rb +0 -1
  1079. data/lib/facet/enumerable/mode.rb +0 -1
  1080. data/lib/facet/enumerable/none.rb +0 -1
  1081. data/lib/facet/enumerable/nonuniq.rb +0 -1
  1082. data/lib/facet/enumerable/occur.rb +0 -1
  1083. data/lib/facet/enumerable/one.rb +0 -1
  1084. data/lib/facet/enumerable/op_pow.rb +0 -1
  1085. data/lib/facet/enumerable/op_tilde_self.rb +0 -1
  1086. data/lib/facet/enumerable/partition_by.rb +0 -1
  1087. data/lib/facet/enumerable/permutation.rb +0 -1
  1088. data/lib/facet/enumerable/probability.rb +0 -1
  1089. data/lib/facet/enumerable/project.rb +0 -1
  1090. data/lib/facet/enumerable/self/cart.rb +0 -1
  1091. data/lib/facet/enumerable/self/cartesian_product.rb +0 -1
  1092. data/lib/facet/enumerable/self/combinations.rb +0 -1
  1093. data/lib/facet/enumerable/sum.rb +0 -1
  1094. data/lib/facet/enumerable/thread_map.rb +0 -1
  1095. data/lib/facet/enumerable/thread_map_send.rb +0 -1
  1096. data/lib/facet/enumerable/to_h.rb +0 -1
  1097. data/lib/facet/enumerable/uniq_by.rb +0 -1
  1098. data/lib/facet/enumerable/where.rb +0 -1
  1099. data/lib/facet/enumerablepass.rb +0 -1
  1100. data/lib/facet/eventhook.rb +0 -1
  1101. data/lib/facet/expirable.rb +0 -1
  1102. data/lib/facet/file/self/append.rb +0 -1
  1103. data/lib/facet/file/self/create.rb +0 -1
  1104. data/lib/facet/file/self/null.rb +0 -1
  1105. data/lib/facet/file/self/open_as_string.rb +0 -1
  1106. data/lib/facet/file/self/read_binary.rb +0 -1
  1107. data/lib/facet/file/self/read_list.rb +0 -1
  1108. data/lib/facet/file/self/rootname.rb +0 -1
  1109. data/lib/facet/file/self/sanitize.rb +0 -1
  1110. data/lib/facet/file/self/split_all.rb +0 -1
  1111. data/lib/facet/file/self/write.rb +0 -1
  1112. data/lib/facet/file/self/yaml.rb +0 -1
  1113. data/lib/facet/filelist.rb +0 -1
  1114. data/lib/facet/filesystem.rb +0 -1
  1115. data/lib/facet/filetest/self/root.rb +0 -1
  1116. data/lib/facet/fileutils/compress.rb +0 -1
  1117. data/lib/facet/fileutils/head.rb +0 -1
  1118. data/lib/facet/fileutils/safe_ln.rb +0 -1
  1119. data/lib/facet/fileutils/slice.rb +0 -1
  1120. data/lib/facet/fileutils/split_all.rb +0 -1
  1121. data/lib/facet/fileutils/stage.rb +0 -1
  1122. data/lib/facet/fileutils/staged.rb +0 -1
  1123. data/lib/facet/fileutils/tail.rb +0 -1
  1124. data/lib/facet/fileutils/wc.rb +0 -1
  1125. data/lib/facet/fileutils/whereis.rb +0 -1
  1126. data/lib/facet/fileutils/which.rb +0 -1
  1127. data/lib/facet/float/approx.rb +0 -1
  1128. data/lib/facet/float/round_at.rb +0 -1
  1129. data/lib/facet/float/round_off.rb +0 -1
  1130. data/lib/facet/float/round_to.rb +0 -1
  1131. data/lib/facet/floatstring.rb +0 -1
  1132. data/lib/facet/functor.rb +0 -1
  1133. data/lib/facet/gem/self/active.rb +0 -1
  1134. data/lib/facet/gem/self/gempath.rb +0 -1
  1135. data/lib/facet/gem/self/gemspec.rb +0 -1
  1136. data/lib/facet/hash/alias.rb +0 -1
  1137. data/lib/facet/hash/assert_has_keys.rb +0 -1
  1138. data/lib/facet/hash/assert_has_only_keys.rb +0 -1
  1139. data/lib/facet/hash/at.rb +0 -1
  1140. data/lib/facet/hash/collate.rb +0 -1
  1141. data/lib/facet/hash/delete_at.rb +0 -1
  1142. data/lib/facet/hash/delete_unless.rb +0 -1
  1143. data/lib/facet/hash/delete_values.rb +0 -1
  1144. data/lib/facet/hash/delete_values_at.rb +0 -1
  1145. data/lib/facet/hash/diff.rb +0 -1
  1146. data/lib/facet/hash/each_with_index.rb +0 -1
  1147. data/lib/facet/hash/each_with_key.rb +0 -1
  1148. data/lib/facet/hash/graph.rb +0 -1
  1149. data/lib/facet/hash/has_keys.rb +0 -1
  1150. data/lib/facet/hash/has_only_keys.rb +0 -1
  1151. data/lib/facet/hash/having_aquisition.rb +0 -1
  1152. data/lib/facet/hash/having_fallback.rb +0 -1
  1153. data/lib/facet/hash/insert.rb +0 -1
  1154. data/lib/facet/hash/inverse.rb +0 -1
  1155. data/lib/facet/hash/join.rb +0 -1
  1156. data/lib/facet/hash/keys_to_s.rb +0 -1
  1157. data/lib/facet/hash/keys_to_sym.rb +0 -1
  1158. data/lib/facet/hash/normalize_keys.rb +0 -1
  1159. data/lib/facet/hash/op_add.rb +0 -1
  1160. data/lib/facet/hash/op_and.rb +0 -1
  1161. data/lib/facet/hash/op_div.rb +0 -1
  1162. data/lib/facet/hash/op_fetch.rb +0 -1
  1163. data/lib/facet/hash/op_lshift.rb +0 -1
  1164. data/lib/facet/hash/op_mul.rb +0 -1
  1165. data/lib/facet/hash/op_or.rb +0 -1
  1166. data/lib/facet/hash/op_store.rb +0 -1
  1167. data/lib/facet/hash/op_sub.rb +0 -1
  1168. data/lib/facet/hash/pairs_at.rb +0 -1
  1169. data/lib/facet/hash/rand_key.rb +0 -1
  1170. data/lib/facet/hash/rand_pair.rb +0 -1
  1171. data/lib/facet/hash/rand_value.rb +0 -1
  1172. data/lib/facet/hash/rekey.rb +0 -1
  1173. data/lib/facet/hash/replace_each.rb +0 -1
  1174. data/lib/facet/hash/reverse_merge.rb +0 -1
  1175. data/lib/facet/hash/reverse_update.rb +0 -1
  1176. data/lib/facet/hash/self/auto.rb +0 -1
  1177. data/lib/facet/hash/self/zipnew.rb +0 -1
  1178. data/lib/facet/hash/shuffle.rb +0 -1
  1179. data/lib/facet/hash/slice.rb +0 -1
  1180. data/lib/facet/hash/stringify_keys.rb +0 -1
  1181. data/lib/facet/hash/swap.rb +0 -1
  1182. data/lib/facet/hash/swapkey.rb +0 -1
  1183. data/lib/facet/hash/symbolize_keys.rb +0 -1
  1184. data/lib/facet/hash/to_h.rb +0 -1
  1185. data/lib/facet/hash/to_ostruct.rb +0 -1
  1186. data/lib/facet/hash/to_ostruct_recurse.rb +0 -1
  1187. data/lib/facet/hash/to_proc.rb +0 -1
  1188. data/lib/facet/hash/to_struct.rb +0 -1
  1189. data/lib/facet/hash/traverse.rb +0 -1
  1190. data/lib/facet/hash/update_each.rb +0 -1
  1191. data/lib/facet/hash/update_keys.rb +0 -1
  1192. data/lib/facet/hash/update_values.rb +0 -1
  1193. data/lib/facet/hash/variablize_keys.rb +0 -1
  1194. data/lib/facet/hash/weave.rb +0 -1
  1195. data/lib/facet/hashbuilder.rb +0 -1
  1196. data/lib/facet/heap.rb +0 -1
  1197. data/lib/facet/htmlbuilder.rb +0 -1
  1198. data/lib/facet/htmlfilter.rb +0 -1
  1199. data/lib/facet/htmlhelper.rb +0 -1
  1200. data/lib/facet/http.rb +0 -1
  1201. data/lib/facet/httpaccess.rb +0 -1
  1202. data/lib/facet/infinity.rb +0 -1
  1203. data/lib/facet/inflect.rb +0 -1
  1204. data/lib/facet/inheritor.rb +0 -1
  1205. data/lib/facet/instance_intercept.rb +0 -1
  1206. data/lib/facet/integer/each.rb +0 -1
  1207. data/lib/facet/integer/even.rb +0 -1
  1208. data/lib/facet/integer/fac.rb +0 -1
  1209. data/lib/facet/integer/fact.rb +0 -1
  1210. data/lib/facet/integer/factorial.rb +0 -1
  1211. data/lib/facet/integer/multiple.rb +0 -1
  1212. data/lib/facet/integer/odd.rb +0 -1
  1213. data/lib/facet/integer/of.rb +0 -1
  1214. data/lib/facet/integer/ordinal.rb +0 -1
  1215. data/lib/facet/integer/times_collect.rb +0 -1
  1216. data/lib/facet/integer/times_map.rb +0 -1
  1217. data/lib/facet/integer/to_roman.rb +0 -1
  1218. data/lib/facet/interval.rb +0 -1
  1219. data/lib/facet/ioredirect.rb +0 -1
  1220. data/lib/facet/json.rb +0 -1
  1221. data/lib/facet/kernel/__DIR__.rb +0 -1
  1222. data/lib/facet/kernel/__callee__.rb +0 -1
  1223. data/lib/facet/kernel/__class__.rb +0 -1
  1224. data/lib/facet/kernel/__get__.rb +0 -1
  1225. data/lib/facet/kernel/__method__.rb +0 -1
  1226. data/lib/facet/kernel/__self__.rb +0 -1
  1227. data/lib/facet/kernel/__set__.rb +0 -1
  1228. data/lib/facet/kernel/as.rb +0 -1
  1229. data/lib/facet/kernel/ask.rb +0 -1
  1230. data/lib/facet/kernel/assign_from.rb +0 -1
  1231. data/lib/facet/kernel/assign_with.rb +0 -1
  1232. data/lib/facet/kernel/autoreload.rb +0 -1
  1233. data/lib/facet/kernel/autoreload_files.rb +0 -1
  1234. data/lib/facet/kernel/autoreload_glob.rb +0 -1
  1235. data/lib/facet/kernel/bool.rb +0 -1
  1236. data/lib/facet/kernel/bug.rb +0 -1
  1237. data/lib/facet/kernel/cache.rb +0 -1
  1238. data/lib/facet/kernel/call_stack.rb +0 -1
  1239. data/lib/facet/kernel/called.rb +0 -1
  1240. data/lib/facet/kernel/callee.rb +0 -1
  1241. data/lib/facet/kernel/class_def.rb +0 -1
  1242. data/lib/facet/kernel/complete.rb +0 -1
  1243. data/lib/facet/kernel/constant.rb +0 -1
  1244. data/lib/facet/kernel/copy.rb +0 -1
  1245. data/lib/facet/kernel/daemonize.rb +0 -1
  1246. data/lib/facet/kernel/deep_clone.rb +0 -1
  1247. data/lib/facet/kernel/deep_copy.rb +0 -1
  1248. data/lib/facet/kernel/demo.rb +0 -1
  1249. data/lib/facet/kernel/eigenclass.rb +0 -1
  1250. data/lib/facet/kernel/enable_warnings.rb +0 -1
  1251. data/lib/facet/kernel/false.rb +0 -1
  1252. data/lib/facet/kernel/fn.rb +0 -1
  1253. data/lib/facet/kernel/get_by_id.rb +0 -1
  1254. data/lib/facet/kernel/here.rb +0 -1
  1255. data/lib/facet/kernel/in.rb +0 -1
  1256. data/lib/facet/kernel/instance_assign.rb +0 -1
  1257. data/lib/facet/kernel/instance_class.rb +0 -1
  1258. data/lib/facet/kernel/instance_exec.rb +0 -1
  1259. data/lib/facet/kernel/instance_values.rb +0 -1
  1260. data/lib/facet/kernel/instvar.rb +0 -1
  1261. data/lib/facet/kernel/is.rb +0 -1
  1262. data/lib/facet/kernel/load_local.rb +0 -1
  1263. data/lib/facet/kernel/maybe.rb +0 -1
  1264. data/lib/facet/kernel/meta.rb +0 -1
  1265. data/lib/facet/kernel/meta_alias.rb +0 -1
  1266. data/lib/facet/kernel/meta_class.rb +0 -1
  1267. data/lib/facet/kernel/meta_def.rb +0 -1
  1268. data/lib/facet/kernel/meta_eval.rb +0 -1
  1269. data/lib/facet/kernel/metaclass.rb +0 -1
  1270. data/lib/facet/kernel/method.rb +0 -1
  1271. data/lib/facet/kernel/methods.rb +0 -1
  1272. data/lib/facet/kernel/nack.rb +0 -1
  1273. data/lib/facet/kernel/new.rb +0 -1
  1274. data/lib/facet/kernel/object_class.rb +0 -1
  1275. data/lib/facet/kernel/object_clone.rb +0 -1
  1276. data/lib/facet/kernel/object_dup.rb +0 -1
  1277. data/lib/facet/kernel/object_hexid.rb +0 -1
  1278. data/lib/facet/kernel/object_send.rb +0 -1
  1279. data/lib/facet/kernel/op_esc.rb +0 -1
  1280. data/lib/facet/kernel/p.rb +0 -1
  1281. data/lib/facet/kernel/populate.rb +0 -1
  1282. data/lib/facet/kernel/pp_exception.rb +0 -1
  1283. data/lib/facet/kernel/qua_class.rb +0 -1
  1284. data/lib/facet/kernel/require_all.rb +0 -1
  1285. data/lib/facet/kernel/require_esc.rb +0 -1
  1286. data/lib/facet/kernel/require_local.rb +0 -1
  1287. data/lib/facet/kernel/resc.rb +0 -1
  1288. data/lib/facet/kernel/respond.rb +0 -1
  1289. data/lib/facet/kernel/returning.rb +0 -1
  1290. data/lib/facet/kernel/send_as.rb +0 -1
  1291. data/lib/facet/kernel/set_from.rb +0 -1
  1292. data/lib/facet/kernel/set_with.rb +0 -1
  1293. data/lib/facet/kernel/silence_stream.rb +0 -1
  1294. data/lib/facet/kernel/silence_warnings.rb +0 -1
  1295. data/lib/facet/kernel/silently.rb +0 -1
  1296. data/lib/facet/kernel/singleton.rb +0 -1
  1297. data/lib/facet/kernel/singleton_class.rb +0 -1
  1298. data/lib/facet/kernel/super_at.rb +0 -1
  1299. data/lib/facet/kernel/supermethod.rb +0 -1
  1300. data/lib/facet/kernel/supress.rb +0 -1
  1301. data/lib/facet/kernel/tap.rb +0 -1
  1302. data/lib/facet/kernel/this.rb +0 -1
  1303. data/lib/facet/kernel/to_b.rb +0 -1
  1304. data/lib/facet/kernel/to_bool.rb +0 -1
  1305. data/lib/facet/kernel/to_data.rb +0 -1
  1306. data/lib/facet/kernel/true.rb +0 -1
  1307. data/lib/facet/kernel/unuri.rb +0 -1
  1308. data/lib/facet/kernel/uri.rb +0 -1
  1309. data/lib/facet/kernel/val.rb +0 -1
  1310. data/lib/facet/kernel/warn_with_line.rb +0 -1
  1311. data/lib/facet/kernel/with.rb +0 -1
  1312. data/lib/facet/kernel/with_accessor.rb +0 -1
  1313. data/lib/facet/kernel/with_reader.rb +0 -1
  1314. data/lib/facet/kernel/with_writer.rb +0 -1
  1315. data/lib/facet/kernel/yaml.rb +0 -1
  1316. data/lib/facet/lazy.rb +0 -1
  1317. data/lib/facet/linkedlist.rb +0 -1
  1318. data/lib/facet/lisp.rb +0 -1
  1319. data/lib/facet/lisp_format.rb +0 -1
  1320. data/lib/facet/logger/format.rb +0 -1
  1321. data/lib/facet/logger/format_message.rb +0 -1
  1322. data/lib/facet/lrucache.rb +0 -1
  1323. data/lib/facet/main_as_module.rb +0 -1
  1324. data/lib/facet/matchdata/match.rb +0 -1
  1325. data/lib/facet/matchdata/matchset.rb +0 -1
  1326. data/lib/facet/matchdata/matchtree.rb +0 -1
  1327. data/lib/facet/mathconstants.rb +0 -1
  1328. data/lib/facet/methodfilter.rb +0 -1
  1329. data/lib/facet/methodprobe.rb +0 -1
  1330. data/lib/facet/minitar.rb +0 -1
  1331. data/lib/facet/mock.rb +0 -1
  1332. data/lib/facet/module/abstract.rb +0 -1
  1333. data/lib/facet/module/alias_accessor.rb +0 -1
  1334. data/lib/facet/module/alias_method_chain.rb +0 -1
  1335. data/lib/facet/module/alias_module_function.rb +0 -1
  1336. data/lib/facet/module/ancestor.rb +0 -1
  1337. data/lib/facet/module/attr.rb +0 -1
  1338. data/lib/facet/module/attr_query.rb +0 -1
  1339. data/lib/facet/module/attr_setter.rb +0 -1
  1340. data/lib/facet/module/attr_tester.rb +0 -1
  1341. data/lib/facet/module/attr_validator.rb +0 -1
  1342. data/lib/facet/module/basename.rb +0 -1
  1343. data/lib/facet/module/by_name.rb +0 -1
  1344. data/lib/facet/module/class.rb +0 -1
  1345. data/lib/facet/module/class_extension.rb +0 -1
  1346. data/lib/facet/module/clone_removing.rb +0 -1
  1347. data/lib/facet/module/clone_renaming.rb +0 -1
  1348. data/lib/facet/module/clone_using.rb +0 -1
  1349. data/lib/facet/module/dirname.rb +0 -1
  1350. data/lib/facet/module/equate_on.rb +0 -1
  1351. data/lib/facet/module/include_and_extend.rb +0 -1
  1352. data/lib/facet/module/include_as.rb +0 -1
  1353. data/lib/facet/module/include_function_module.rb +0 -1
  1354. data/lib/facet/module/initializer.rb +0 -1
  1355. data/lib/facet/module/instance_methods.rb +0 -1
  1356. data/lib/facet/module/integrate.rb +0 -1
  1357. data/lib/facet/module/is.rb +0 -1
  1358. data/lib/facet/module/memoize.rb +0 -1
  1359. data/lib/facet/module/modspace.rb +0 -1
  1360. data/lib/facet/module/module_load.rb +0 -1
  1361. data/lib/facet/module/module_method.rb +0 -1
  1362. data/lib/facet/module/module_require.rb +0 -1
  1363. data/lib/facet/module/namespace.rb +0 -1
  1364. data/lib/facet/module/nesting.rb +0 -1
  1365. data/lib/facet/module/new.rb +0 -1
  1366. data/lib/facet/module/nodef.rb +0 -1
  1367. data/lib/facet/module/on_included.rb +0 -1
  1368. data/lib/facet/module/prepend.rb +0 -1
  1369. data/lib/facet/module/redef.rb +0 -1
  1370. data/lib/facet/module/redefine_method.rb +0 -1
  1371. data/lib/facet/module/redirect.rb +0 -1
  1372. data/lib/facet/module/redirect_method.rb +0 -1
  1373. data/lib/facet/module/remove.rb +0 -1
  1374. data/lib/facet/module/rename.rb +0 -1
  1375. data/lib/facet/module/rename_method.rb +0 -1
  1376. data/lib/facet/module/revisal.rb +0 -1
  1377. data/lib/facet/module/self/op_add.rb +0 -1
  1378. data/lib/facet/module/self/op_sub.rb +0 -1
  1379. data/lib/facet/module/shadow_all.rb +0 -1
  1380. data/lib/facet/module/shadow_method.rb +0 -1
  1381. data/lib/facet/module/sort_on.rb +0 -1
  1382. data/lib/facet/module/this.rb +0 -1
  1383. data/lib/facet/module/wrap.rb +0 -1
  1384. data/lib/facet/module/wrap_method.rb +0 -1
  1385. data/lib/facet/multipliers.rb +0 -1
  1386. data/lib/facet/multiton.rb +0 -1
  1387. data/lib/facet/nackclass.rb +0 -1
  1388. data/lib/facet/nil_as_emptiness.rb +0 -1
  1389. data/lib/facet/nilclass/blank.rb +0 -1
  1390. data/lib/facet/nilclass/empty.rb +0 -1
  1391. data/lib/facet/nilclass/include.rb +0 -1
  1392. data/lib/facet/nilclass/length.rb +0 -1
  1393. data/lib/facet/nilclass/op_cmp.rb +0 -1
  1394. data/lib/facet/nilclass/op_fetch.rb +0 -1
  1395. data/lib/facet/nilclass/size.rb +0 -1
  1396. data/lib/facet/nilclass/status.rb +0 -1
  1397. data/lib/facet/nilclass/succ.rb +0 -1
  1398. data/lib/facet/nilclass/to_h.rb +0 -1
  1399. data/lib/facet/nilclass/to_path.rb +0 -1
  1400. data/lib/facet/nilcomparable.rb +0 -1
  1401. data/lib/facet/nullclass.rb +0 -1
  1402. data/lib/facet/numeric/approx.rb +0 -1
  1403. data/lib/facet/numeric/ceil_multiple.rb +0 -1
  1404. data/lib/facet/numeric/distance.rb +0 -1
  1405. data/lib/facet/numeric/pred.rb +0 -1
  1406. data/lib/facet/numeric/succ.rb +0 -1
  1407. data/lib/facet/numeric/to_b.rb +0 -1
  1408. data/lib/facet/opencascade.rb +0 -1
  1409. data/lib/facet/openobject.rb +0 -1
  1410. data/lib/facet/orderedhash.rb +0 -1
  1411. data/lib/facet/ormsupport.rb +0 -1
  1412. data/lib/facet/ostruct.rb +0 -1
  1413. data/lib/facet/ostruct/__merge__.rb +0 -1
  1414. data/lib/facet/ostruct/__table__.rb +0 -1
  1415. data/lib/facet/ostruct/__update__.rb +0 -1
  1416. data/lib/facet/ostruct/instance_delegate.rb +0 -1
  1417. data/lib/facet/ostruct/op_fetch.rb +0 -1
  1418. data/lib/facet/ostruct/op_store.rb +0 -1
  1419. data/lib/facet/ostruct/to_h.rb +0 -1
  1420. data/lib/facet/overload.rb +0 -1
  1421. data/lib/facet/paramix.rb +0 -1
  1422. data/lib/facet/pathlist.rb +0 -1
  1423. data/lib/facet/pathname/ascend.rb +0 -1
  1424. data/lib/facet/pathname/descend.rb +0 -1
  1425. data/lib/facet/pathname/op_div.rb +0 -1
  1426. data/lib/facet/pool.rb +0 -1
  1427. data/lib/facet/populate.rb +0 -1
  1428. data/lib/facet/pqueue.rb +0 -1
  1429. data/lib/facet/preinitialize.rb +0 -1
  1430. data/lib/facet/proc/bind.rb +0 -1
  1431. data/lib/facet/proc/compose.rb +0 -1
  1432. data/lib/facet/proc/op_mul.rb +0 -1
  1433. data/lib/facet/proc/to_h.rb +0 -1
  1434. data/lib/facet/proc/to_method.rb +0 -1
  1435. data/lib/facet/proc/update.rb +0 -1
  1436. data/lib/facet/progressbar.rb +0 -1
  1437. data/lib/facet/promoteself.rb +0 -1
  1438. data/lib/facet/quaternion.rb +0 -1
  1439. data/lib/facet/random.rb +0 -1
  1440. data/lib/facet/range/combine.rb +0 -1
  1441. data/lib/facet/range/overlap.rb +0 -1
  1442. data/lib/facet/range/to_r.rb +0 -1
  1443. data/lib/facet/range/to_range.rb +0 -1
  1444. data/lib/facet/range/umbrella.rb +0 -1
  1445. data/lib/facet/range/within.rb +0 -1
  1446. data/lib/facet/recorder.rb +0 -1
  1447. data/lib/facet/reference.rb +0 -1
  1448. data/lib/facet/regexp/arity.rb +0 -1
  1449. data/lib/facet/regexp/to_re.rb +0 -1
  1450. data/lib/facet/regexp/to_regexp.rb +0 -1
  1451. data/lib/facet/rexmlbuilder.rb +0 -1
  1452. data/lib/facet/rtals.rb +0 -1
  1453. data/lib/facet/rwdelegator.rb +0 -1
  1454. data/lib/facet/script.rb +0 -1
  1455. data/lib/facet/semaphore.rb +0 -1
  1456. data/lib/facet/settings.rb +0 -1
  1457. data/lib/facet/smtp_tls.rb +0 -1
  1458. data/lib/facet/snapshot.rb +0 -1
  1459. data/lib/facet/stateparser.rb +0 -1
  1460. data/lib/facet/statichash.rb +0 -1
  1461. data/lib/facet/string/align_center.rb +0 -1
  1462. data/lib/facet/string/align_left.rb +0 -1
  1463. data/lib/facet/string/align_right.rb +0 -1
  1464. data/lib/facet/string/at.rb +0 -1
  1465. data/lib/facet/string/at_rand.rb +0 -1
  1466. data/lib/facet/string/basename.rb +0 -1
  1467. data/lib/facet/string/blank.rb +0 -1
  1468. data/lib/facet/string/bracket.rb +0 -1
  1469. data/lib/facet/string/brief.rb +0 -1
  1470. data/lib/facet/string/bytes.rb +0 -1
  1471. data/lib/facet/string/camelcase.rb +0 -1
  1472. data/lib/facet/string/camelize.rb +0 -1
  1473. data/lib/facet/string/capitalize_all.rb +0 -1
  1474. data/lib/facet/string/capitalized.rb +0 -1
  1475. data/lib/facet/string/chars.rb +0 -1
  1476. data/lib/facet/string/cleave.rb +0 -1
  1477. data/lib/facet/string/cmp.rb +0 -1
  1478. data/lib/facet/string/demodulize.rb +0 -1
  1479. data/lib/facet/string/dequote.rb +0 -1
  1480. data/lib/facet/string/divide.rb +0 -1
  1481. data/lib/facet/string/downcase.rb +0 -1
  1482. data/lib/facet/string/dresner.rb +0 -1
  1483. data/lib/facet/string/each_char.rb +0 -1
  1484. data/lib/facet/string/each_word.rb +0 -1
  1485. data/lib/facet/string/ends_with.rb +0 -1
  1486. data/lib/facet/string/first.rb +0 -1
  1487. data/lib/facet/string/first_char.rb +0 -1
  1488. data/lib/facet/string/fold.rb +0 -1
  1489. data/lib/facet/string/format.rb +0 -1
  1490. data/lib/facet/string/humanize.rb +0 -1
  1491. data/lib/facet/string/indent.rb +0 -1
  1492. data/lib/facet/string/index_all.rb +0 -1
  1493. data/lib/facet/string/last.rb +0 -1
  1494. data/lib/facet/string/last_char.rb +0 -1
  1495. data/lib/facet/string/line_wrap.rb +0 -1
  1496. data/lib/facet/string/lines.rb +0 -1
  1497. data/lib/facet/string/lowercase.rb +0 -1
  1498. data/lib/facet/string/margin.rb +0 -1
  1499. data/lib/facet/string/methodize.rb +0 -1
  1500. data/lib/facet/string/modulize.rb +0 -1
  1501. data/lib/facet/string/mscan.rb +0 -1
  1502. data/lib/facet/string/natcmp.rb +0 -1
  1503. data/lib/facet/string/nchar.rb +0 -1
  1504. data/lib/facet/string/ordinal.rb +0 -1
  1505. data/lib/facet/string/pathize.rb +0 -1
  1506. data/lib/facet/string/plural.rb +0 -1
  1507. data/lib/facet/string/pop.rb +0 -1
  1508. data/lib/facet/string/pot.rb +0 -1
  1509. data/lib/facet/string/pull.rb +0 -1
  1510. data/lib/facet/string/push.rb +0 -1
  1511. data/lib/facet/string/quote.rb +0 -1
  1512. data/lib/facet/string/rand_byte.rb +0 -1
  1513. data/lib/facet/string/rand_index.rb +0 -1
  1514. data/lib/facet/string/range.rb +0 -1
  1515. data/lib/facet/string/range_all.rb +0 -1
  1516. data/lib/facet/string/range_of_line.rb +0 -1
  1517. data/lib/facet/string/regesc.rb +0 -1
  1518. data/lib/facet/string/rewrite.rb +0 -1
  1519. data/lib/facet/string/self/format.rb +0 -1
  1520. data/lib/facet/string/self/interpolate.rb +0 -1
  1521. data/lib/facet/string/self/patterns.rb +0 -1
  1522. data/lib/facet/string/self/rand_letter.rb +0 -1
  1523. data/lib/facet/string/self/random.rb +0 -1
  1524. data/lib/facet/string/shatter.rb +0 -1
  1525. data/lib/facet/string/shell_escape.rb +0 -1
  1526. data/lib/facet/string/shift.rb +0 -1
  1527. data/lib/facet/string/shuffle.rb +0 -1
  1528. data/lib/facet/string/similarity.rb +0 -1
  1529. data/lib/facet/string/singular.rb +0 -1
  1530. data/lib/facet/string/soundex.rb +0 -1
  1531. data/lib/facet/string/starts_with.rb +0 -1
  1532. data/lib/facet/string/succ.rb +0 -1
  1533. data/lib/facet/string/tab.rb +0 -1
  1534. data/lib/facet/string/tabto.rb +0 -1
  1535. data/lib/facet/string/to_a.rb +0 -1
  1536. data/lib/facet/string/to_b.rb +0 -1
  1537. data/lib/facet/string/to_const.rb +0 -1
  1538. data/lib/facet/string/to_date.rb +0 -1
  1539. data/lib/facet/string/to_proc.rb +0 -1
  1540. data/lib/facet/string/to_re.rb +0 -1
  1541. data/lib/facet/string/to_rx.rb +0 -1
  1542. data/lib/facet/string/to_time.rb +0 -1
  1543. data/lib/facet/string/unbracket.rb +0 -1
  1544. data/lib/facet/string/underscore.rb +0 -1
  1545. data/lib/facet/string/unix_crypt.rb +0 -1
  1546. data/lib/facet/string/unpack.rb +0 -1
  1547. data/lib/facet/string/unshift.rb +0 -1
  1548. data/lib/facet/string/upcase.rb +0 -1
  1549. data/lib/facet/string/uppercase.rb +0 -1
  1550. data/lib/facet/string/whitespace.rb +0 -1
  1551. data/lib/facet/string/word_filter.rb +0 -1
  1552. data/lib/facet/string/word_wrap.rb +0 -1
  1553. data/lib/facet/string/words.rb +0 -1
  1554. data/lib/facet/string_as_array.rb +0 -1
  1555. data/lib/facet/symbol/camelcase.rb +0 -1
  1556. data/lib/facet/symbol/camelize.rb +0 -1
  1557. data/lib/facet/symbol/capitalize.rb +0 -1
  1558. data/lib/facet/symbol/capitalized.rb +0 -1
  1559. data/lib/facet/symbol/chomp.rb +0 -1
  1560. data/lib/facet/symbol/downcase.rb +0 -1
  1561. data/lib/facet/symbol/not.rb +0 -1
  1562. data/lib/facet/symbol/pad.rb +0 -1
  1563. data/lib/facet/symbol/self/generate.rb +0 -1
  1564. data/lib/facet/symbol/succ.rb +0 -1
  1565. data/lib/facet/symbol/to_const.rb +0 -1
  1566. data/lib/facet/symbol/to_proc.rb +0 -1
  1567. data/lib/facet/symbol/to_s.rb +0 -1
  1568. data/lib/facet/symbol/to_str.rb +0 -1
  1569. data/lib/facet/symbol/underscore.rb +0 -1
  1570. data/lib/facet/symbol/upcase.rb +0 -1
  1571. data/lib/facet/syncarray.rb +0 -1
  1572. data/lib/facet/synchash.rb +0 -1
  1573. data/lib/facet/system.rb +0 -1
  1574. data/lib/facet/tagiterator.rb +0 -1
  1575. data/lib/facet/time/change.rb +0 -1
  1576. data/lib/facet/time/elapse.rb +0 -1
  1577. data/lib/facet/time/self/days_extrema.rb +0 -1
  1578. data/lib/facet/time/self/stamp.rb +0 -1
  1579. data/lib/facet/time/stamp.rb +0 -1
  1580. data/lib/facet/time/to_date.rb +0 -1
  1581. data/lib/facet/time/to_s.rb +0 -1
  1582. data/lib/facet/time/to_time.rb +0 -1
  1583. data/lib/facet/timer.rb +0 -1
  1584. data/lib/facet/times.rb +0 -1
  1585. data/lib/facet/tkxml.rb +0 -1
  1586. data/lib/facet/tracepoint.rb +0 -1
  1587. data/lib/facet/tuple.rb +0 -1
  1588. data/lib/facet/typecast.rb +0 -1
  1589. data/lib/facet/unboundmethod/name.rb +0 -1
  1590. data/lib/facet/uninheritable.rb +0 -1
  1591. data/lib/facet/units.rb +0 -1
  1592. data/lib/facet/uploadutils.rb +0 -1
  1593. data/lib/facet/version_number.rb +0 -1
  1594. data/lib/facet/xmlbuilder.rb +0 -1
  1595. data/lib/facet/xmlhelper.rb +0 -1
  1596. data/lib/facet/xoxo.rb +0 -1
  1597. data/lib/facet/yamlstruct.rb +0 -1
  1598. data/lib/facets.rb +0 -92
  1599. data/lib/facets/automatic.rb +0 -29
  1600. data/lib/facets/core/all.rb +0 -5
  1601. data/lib/facets/core/array/at_rand.rb +0 -52
  1602. data/lib/facets/core/array/body.rb +0 -2
  1603. data/lib/facets/core/array/combos.rb +0 -3
  1604. data/lib/facets/core/array/delete_unless.rb +0 -35
  1605. data/lib/facets/core/array/delete_values.rb +0 -38
  1606. data/lib/facets/core/array/delete_values_at.rb +0 -59
  1607. data/lib/facets/core/array/each_combo.rb +0 -48
  1608. data/lib/facets/core/array/each_with_key.rb +0 -9
  1609. data/lib/facets/core/array/first.rb +0 -84
  1610. data/lib/facets/core/array/foot.rb +0 -2
  1611. data/lib/facets/core/array/head.rb +0 -80
  1612. data/lib/facets/core/array/index.rb +0 -15
  1613. data/lib/facets/core/array/join_sentence.rb +0 -12
  1614. data/lib/facets/core/array/last.rb +0 -2
  1615. data/lib/facets/core/array/last_index.rb +0 -35
  1616. data/lib/facets/core/array/merge.rb +0 -40
  1617. data/lib/facets/core/array/mid.rb +0 -50
  1618. data/lib/facets/core/array/middle.rb +0 -45
  1619. data/lib/facets/core/array/op_div.rb +0 -29
  1620. data/lib/facets/core/array/op_fetch.rb +0 -67
  1621. data/lib/facets/core/array/op_mod.rb +0 -16
  1622. data/lib/facets/core/array/op_store.rb +0 -2
  1623. data/lib/facets/core/array/pad.rb +0 -76
  1624. data/lib/facets/core/array/pick.rb +0 -68
  1625. data/lib/facets/core/array/pos.rb +0 -39
  1626. data/lib/facets/core/array/pot.rb +0 -38
  1627. data/lib/facets/core/array/pull.rb +0 -37
  1628. data/lib/facets/core/array/rand_index.rb +0 -30
  1629. data/lib/facets/core/array/rand_subset.rb +0 -56
  1630. data/lib/facets/core/array/range.rb +0 -47
  1631. data/lib/facets/core/array/rotate.rb +0 -67
  1632. data/lib/facets/core/array/select.rb +0 -37
  1633. data/lib/facets/core/array/shuffle.rb +0 -66
  1634. data/lib/facets/core/array/store.rb +0 -7
  1635. data/lib/facets/core/array/tail.rb +0 -2
  1636. data/lib/facets/core/array/thru.rb +0 -38
  1637. data/lib/facets/core/array/to_b.rb +0 -31
  1638. data/lib/facets/core/array/to_h.rb +0 -57
  1639. data/lib/facets/core/array/to_hash.rb +0 -46
  1640. data/lib/facets/core/array/to_path.rb +0 -11
  1641. data/lib/facets/core/array/unzip.rb +0 -20
  1642. data/lib/facets/core/binding.rb +0 -14
  1643. data/lib/facets/core/binding/__DIR__.rb +0 -2
  1644. data/lib/facets/core/binding/__FILE__.rb +0 -2
  1645. data/lib/facets/core/binding/__LINE__.rb +0 -58
  1646. data/lib/facets/core/binding/call_stack.rb +0 -42
  1647. data/lib/facets/core/binding/called.rb +0 -42
  1648. data/lib/facets/core/binding/caller.rb +0 -42
  1649. data/lib/facets/core/binding/defined.rb +0 -41
  1650. data/lib/facets/core/binding/eval.rb +0 -42
  1651. data/lib/facets/core/binding/local_variables.rb +0 -45
  1652. data/lib/facets/core/binding/method_name.rb +0 -48
  1653. data/lib/facets/core/binding/op_fetch.rb +0 -45
  1654. data/lib/facets/core/binding/op_store.rb +0 -46
  1655. data/lib/facets/core/binding/self.rb +0 -41
  1656. data/lib/facets/core/binding/self/of_caller.rb +0 -122
  1657. data/lib/facets/core/class/by_name.rb +0 -1
  1658. data/lib/facets/core/class/cattr.rb +0 -161
  1659. data/lib/facets/core/class/cattr_accessor.rb +0 -2
  1660. data/lib/facets/core/class/cattr_reader.rb +0 -3
  1661. data/lib/facets/core/class/cattr_writer.rb +0 -2
  1662. data/lib/facets/core/class/class_load.rb +0 -3
  1663. data/lib/facets/core/class/class_require.rb +0 -3
  1664. data/lib/facets/core/class/descendents.rb +0 -44
  1665. data/lib/facets/core/class/method_name.rb +0 -35
  1666. data/lib/facets/core/class/remove_descendents.rb +0 -46
  1667. data/lib/facets/core/class/remove_subclasses.rb +0 -2
  1668. data/lib/facets/core/class/subclasses.rb +0 -2
  1669. data/lib/facets/core/class/to_proc.rb +0 -25
  1670. data/lib/facets/core/class/unix_path.rb +0 -34
  1671. data/lib/facets/core/comparable/at_least.rb +0 -53
  1672. data/lib/facets/core/comparable/at_most.rb +0 -2
  1673. data/lib/facets/core/comparable/cap.rb +0 -2
  1674. data/lib/facets/core/comparable/clip.rb +0 -72
  1675. data/lib/facets/core/comparable/cmp.rb +0 -38
  1676. data/lib/facets/core/config/datadir.rb +0 -20
  1677. data/lib/facets/core/config/inspect.rb +0 -9
  1678. data/lib/facets/core/date/days_in_month.rb +0 -42
  1679. data/lib/facets/core/date/days_of_month.rb +0 -34
  1680. data/lib/facets/core/date/stamp.rb +0 -52
  1681. data/lib/facets/core/date/to_date.rb +0 -36
  1682. data/lib/facets/core/date/to_s.rb +0 -33
  1683. data/lib/facets/core/date/to_time.rb +0 -36
  1684. data/lib/facets/core/dir/self/ancestor.rb +0 -33
  1685. data/lib/facets/core/dir/self/ascend.rb +0 -57
  1686. data/lib/facets/core/dir/self/descend.rb +0 -11
  1687. data/lib/facets/core/dir/self/ls_r.rb +0 -70
  1688. data/lib/facets/core/dir/self/multiglob.rb +0 -110
  1689. data/lib/facets/core/dir/self/multiglob_r.rb +0 -5
  1690. data/lib/facets/core/dir/self/multiglob_with_default.rb +0 -3
  1691. data/lib/facets/core/dir/self/recurse.rb +0 -2
  1692. data/lib/facets/core/enumerable/accumulate.rb +0 -23
  1693. data/lib/facets/core/enumerable/cart.rb +0 -94
  1694. data/lib/facets/core/enumerable/cartesian_product.rb +0 -8
  1695. data/lib/facets/core/enumerable/cascade.rb +0 -16
  1696. data/lib/facets/core/enumerable/collect_if.rb +0 -15
  1697. data/lib/facets/core/enumerable/collect_with_counter.rb +0 -2
  1698. data/lib/facets/core/enumerable/collect_with_index.rb +0 -51
  1699. data/lib/facets/core/enumerable/commonality.rb +0 -63
  1700. data/lib/facets/core/enumerable/compact_collect.rb +0 -50
  1701. data/lib/facets/core/enumerable/compact_map.rb +0 -2
  1702. data/lib/facets/core/enumerable/count.rb +0 -54
  1703. data/lib/facets/core/enumerable/divide.rb +0 -20
  1704. data/lib/facets/core/enumerable/each_by.rb +0 -91
  1705. data/lib/facets/core/enumerable/each_combination.rb +0 -59
  1706. data/lib/facets/core/enumerable/each_pair.rb +0 -50
  1707. data/lib/facets/core/enumerable/each_permutation.rb +0 -2
  1708. data/lib/facets/core/enumerable/each_slice.rb +0 -120
  1709. data/lib/facets/core/enumerable/each_unique_pair.rb +0 -66
  1710. data/lib/facets/core/enumerable/each_with_counter.rb +0 -8
  1711. data/lib/facets/core/enumerable/eachn.rb +0 -41
  1712. data/lib/facets/core/enumerable/elementwise.rb +0 -75
  1713. data/lib/facets/core/enumerable/entropy.rb +0 -52
  1714. data/lib/facets/core/enumerable/every.rb +0 -61
  1715. data/lib/facets/core/enumerable/ew.rb +0 -2
  1716. data/lib/facets/core/enumerable/filter_collect.rb +0 -58
  1717. data/lib/facets/core/enumerable/filter_map.rb +0 -2
  1718. data/lib/facets/core/enumerable/find_collisions.rb +0 -41
  1719. data/lib/facets/core/enumerable/frequency.rb +0 -39
  1720. data/lib/facets/core/enumerable/graph.rb +0 -60
  1721. data/lib/facets/core/enumerable/ideal_entropy.rb +0 -49
  1722. data/lib/facets/core/enumerable/injecting.rb +0 -22
  1723. data/lib/facets/core/enumerable/map_if.rb +0 -3
  1724. data/lib/facets/core/enumerable/map_send.rb +0 -12
  1725. data/lib/facets/core/enumerable/map_with_counter.rb +0 -2
  1726. data/lib/facets/core/enumerable/map_with_index.rb +0 -2
  1727. data/lib/facets/core/enumerable/mode.rb +0 -13
  1728. data/lib/facets/core/enumerable/none.rb +0 -56
  1729. data/lib/facets/core/enumerable/nonuniq.rb +0 -39
  1730. data/lib/facets/core/enumerable/occur.rb +0 -62
  1731. data/lib/facets/core/enumerable/one.rb +0 -65
  1732. data/lib/facets/core/enumerable/op_pow.rb +0 -38
  1733. data/lib/facets/core/enumerable/op_tilde_self.rb +0 -46
  1734. data/lib/facets/core/enumerable/partition_by.rb +0 -57
  1735. data/lib/facets/core/enumerable/permutation.rb +0 -142
  1736. data/lib/facets/core/enumerable/probability.rb +0 -59
  1737. data/lib/facets/core/enumerable/project.rb +0 -11
  1738. data/lib/facets/core/enumerable/self/cart.rb +0 -8
  1739. data/lib/facets/core/enumerable/self/cartesian_product.rb +0 -8
  1740. data/lib/facets/core/enumerable/self/combinations.rb +0 -73
  1741. data/lib/facets/core/enumerable/sum.rb +0 -19
  1742. data/lib/facets/core/enumerable/thread_map.rb +0 -21
  1743. data/lib/facets/core/enumerable/thread_map_send.rb +0 -3
  1744. data/lib/facets/core/enumerable/to_h.rb +0 -50
  1745. data/lib/facets/core/enumerable/uniq_by.rb +0 -39
  1746. data/lib/facets/core/enumerable/where.rb +0 -12
  1747. data/lib/facets/core/file/self/append.rb +0 -8
  1748. data/lib/facets/core/file/self/create.rb +0 -56
  1749. data/lib/facets/core/file/self/null.rb +0 -17
  1750. data/lib/facets/core/file/self/open_as_string.rb +0 -99
  1751. data/lib/facets/core/file/self/read_binary.rb +0 -8
  1752. data/lib/facets/core/file/self/read_list.rb +0 -51
  1753. data/lib/facets/core/file/self/rootname.rb +0 -22
  1754. data/lib/facets/core/file/self/sanitize.rb +0 -50
  1755. data/lib/facets/core/file/self/split_all.rb +0 -36
  1756. data/lib/facets/core/file/self/write.rb +0 -8
  1757. data/lib/facets/core/file/self/yaml.rb +0 -16
  1758. data/lib/facets/core/filetest/self/root.rb +0 -13
  1759. data/lib/facets/core/fileutils/compress.rb +0 -154
  1760. data/lib/facets/core/fileutils/head.rb +0 -2
  1761. data/lib/facets/core/fileutils/safe_ln.rb +0 -38
  1762. data/lib/facets/core/fileutils/slice.rb +0 -152
  1763. data/lib/facets/core/fileutils/split_all.rb +0 -29
  1764. data/lib/facets/core/fileutils/stage.rb +0 -230
  1765. data/lib/facets/core/fileutils/staged.rb +0 -3
  1766. data/lib/facets/core/fileutils/tail.rb +0 -2
  1767. data/lib/facets/core/fileutils/wc.rb +0 -123
  1768. data/lib/facets/core/fileutils/whereis.rb +0 -76
  1769. data/lib/facets/core/fileutils/which.rb +0 -112
  1770. data/lib/facets/core/float/approx.rb +0 -2
  1771. data/lib/facets/core/float/round_at.rb +0 -73
  1772. data/lib/facets/core/float/round_off.rb +0 -8
  1773. data/lib/facets/core/float/round_to.rb +0 -74
  1774. data/lib/facets/core/gem/self/active.rb +0 -9
  1775. data/lib/facets/core/gem/self/gempath.rb +0 -16
  1776. data/lib/facets/core/gem/self/gemspec.rb +0 -10
  1777. data/lib/facets/core/hash/alias.rb +0 -54
  1778. data/lib/facets/core/hash/assert_has_keys.rb +0 -38
  1779. data/lib/facets/core/hash/assert_has_only_keys.rb +0 -38
  1780. data/lib/facets/core/hash/at.rb +0 -26
  1781. data/lib/facets/core/hash/collate.rb +0 -53
  1782. data/lib/facets/core/hash/delete_at.rb +0 -10
  1783. data/lib/facets/core/hash/delete_unless.rb +0 -15
  1784. data/lib/facets/core/hash/delete_values.rb +0 -20
  1785. data/lib/facets/core/hash/delete_values_at.rb +0 -24
  1786. data/lib/facets/core/hash/diff.rb +0 -8
  1787. data/lib/facets/core/hash/each_with_index.rb +0 -35
  1788. data/lib/facets/core/hash/each_with_key.rb +0 -32
  1789. data/lib/facets/core/hash/graph.rb +0 -31
  1790. data/lib/facets/core/hash/has_keys.rb +0 -37
  1791. data/lib/facets/core/hash/has_only_keys.rb +0 -37
  1792. data/lib/facets/core/hash/having_aquisition.rb +0 -37
  1793. data/lib/facets/core/hash/having_fallback.rb +0 -28
  1794. data/lib/facets/core/hash/insert.rb +0 -20
  1795. data/lib/facets/core/hash/inverse.rb +0 -53
  1796. data/lib/facets/core/hash/join.rb +0 -19
  1797. data/lib/facets/core/hash/keys_to_s.rb +0 -2
  1798. data/lib/facets/core/hash/keys_to_sym.rb +0 -2
  1799. data/lib/facets/core/hash/normalize_keys.rb +0 -65
  1800. data/lib/facets/core/hash/op_add.rb +0 -29
  1801. data/lib/facets/core/hash/op_and.rb +0 -37
  1802. data/lib/facets/core/hash/op_div.rb +0 -8
  1803. data/lib/facets/core/hash/op_fetch.rb +0 -146
  1804. data/lib/facets/core/hash/op_lshift.rb +0 -28
  1805. data/lib/facets/core/hash/op_mul.rb +0 -17
  1806. data/lib/facets/core/hash/op_or.rb +0 -2
  1807. data/lib/facets/core/hash/op_store.rb +0 -2
  1808. data/lib/facets/core/hash/op_sub.rb +0 -2
  1809. data/lib/facets/core/hash/pairs_at.rb +0 -17
  1810. data/lib/facets/core/hash/rand_key.rb +0 -47
  1811. data/lib/facets/core/hash/rand_pair.rb +0 -50
  1812. data/lib/facets/core/hash/rand_value.rb +0 -60
  1813. data/lib/facets/core/hash/rekey.rb +0 -85
  1814. data/lib/facets/core/hash/replace_each.rb +0 -33
  1815. data/lib/facets/core/hash/reverse_merge.rb +0 -25
  1816. data/lib/facets/core/hash/reverse_update.rb +0 -3
  1817. data/lib/facets/core/hash/self/auto.rb +0 -28
  1818. data/lib/facets/core/hash/self/zipnew.rb +0 -37
  1819. data/lib/facets/core/hash/shuffle.rb +0 -53
  1820. data/lib/facets/core/hash/slice.rb +0 -33
  1821. data/lib/facets/core/hash/stringify_keys.rb +0 -74
  1822. data/lib/facets/core/hash/swap.rb +0 -36
  1823. data/lib/facets/core/hash/swapkey.rb +0 -44
  1824. data/lib/facets/core/hash/symbolize_keys.rb +0 -87
  1825. data/lib/facets/core/hash/to_h.rb +0 -35
  1826. data/lib/facets/core/hash/to_ostruct.rb +0 -40
  1827. data/lib/facets/core/hash/to_ostruct_recurse.rb +0 -76
  1828. data/lib/facets/core/hash/to_proc.rb +0 -34
  1829. data/lib/facets/core/hash/to_struct.rb +0 -16
  1830. data/lib/facets/core/hash/traverse.rb +0 -68
  1831. data/lib/facets/core/hash/update_each.rb +0 -43
  1832. data/lib/facets/core/hash/update_keys.rb +0 -31
  1833. data/lib/facets/core/hash/update_values.rb +0 -32
  1834. data/lib/facets/core/hash/variablize_keys.rb +0 -54
  1835. data/lib/facets/core/hash/weave.rb +0 -88
  1836. data/lib/facets/core/inflect.rb +0 -64
  1837. data/lib/facets/core/integer/each.rb +0 -9
  1838. data/lib/facets/core/integer/even.rb +0 -2
  1839. data/lib/facets/core/integer/fac.rb +0 -2
  1840. data/lib/facets/core/integer/fact.rb +0 -2
  1841. data/lib/facets/core/integer/factorial.rb +0 -61
  1842. data/lib/facets/core/integer/multiple.rb +0 -69
  1843. data/lib/facets/core/integer/odd.rb +0 -2
  1844. data/lib/facets/core/integer/of.rb +0 -37
  1845. data/lib/facets/core/integer/ordinal.rb +0 -41
  1846. data/lib/facets/core/integer/times_collect.rb +0 -39
  1847. data/lib/facets/core/integer/times_map.rb +0 -2
  1848. data/lib/facets/core/integer/to_roman.rb +0 -20
  1849. data/lib/facets/core/kernel/__DIR__.rb +0 -11
  1850. data/lib/facets/core/kernel/__callee__.rb +0 -2
  1851. data/lib/facets/core/kernel/__class__.rb +0 -31
  1852. data/lib/facets/core/kernel/__get__.rb +0 -5
  1853. data/lib/facets/core/kernel/__method__.rb +0 -2
  1854. data/lib/facets/core/kernel/__self__.rb +0 -32
  1855. data/lib/facets/core/kernel/__set__.rb +0 -2
  1856. data/lib/facets/core/kernel/as.rb +0 -106
  1857. data/lib/facets/core/kernel/ask.rb +0 -14
  1858. data/lib/facets/core/kernel/assign_from.rb +0 -82
  1859. data/lib/facets/core/kernel/assign_with.rb +0 -85
  1860. data/lib/facets/core/kernel/autoreload.rb +0 -122
  1861. data/lib/facets/core/kernel/autoreload_files.rb +0 -2
  1862. data/lib/facets/core/kernel/autoreload_glob.rb +0 -3
  1863. data/lib/facets/core/kernel/bool.rb +0 -77
  1864. data/lib/facets/core/kernel/bug.rb +0 -39
  1865. data/lib/facets/core/kernel/cache.rb +0 -31
  1866. data/lib/facets/core/kernel/call_stack.rb +0 -59
  1867. data/lib/facets/core/kernel/called.rb +0 -40
  1868. data/lib/facets/core/kernel/callee.rb +0 -46
  1869. data/lib/facets/core/kernel/class_def.rb +0 -10
  1870. data/lib/facets/core/kernel/complete.rb +0 -6
  1871. data/lib/facets/core/kernel/constant.rb +0 -52
  1872. data/lib/facets/core/kernel/copy.rb +0 -48
  1873. data/lib/facets/core/kernel/daemonize.rb +0 -21
  1874. data/lib/facets/core/kernel/deep_clone.rb +0 -50
  1875. data/lib/facets/core/kernel/deep_copy.rb +0 -49
  1876. data/lib/facets/core/kernel/demo.rb +0 -50
  1877. data/lib/facets/core/kernel/eigenclass.rb +0 -17
  1878. data/lib/facets/core/kernel/enable_warnings.rb +0 -14
  1879. data/lib/facets/core/kernel/false.rb +0 -2
  1880. data/lib/facets/core/kernel/fn.rb +0 -33
  1881. data/lib/facets/core/kernel/get_by_id.rb +0 -34
  1882. data/lib/facets/core/kernel/here.rb +0 -34
  1883. data/lib/facets/core/kernel/in.rb +0 -35
  1884. data/lib/facets/core/kernel/instance_assign.rb +0 -24
  1885. data/lib/facets/core/kernel/instance_class.rb +0 -40
  1886. data/lib/facets/core/kernel/instance_exec.rb +0 -60
  1887. data/lib/facets/core/kernel/instance_values.rb +0 -12
  1888. data/lib/facets/core/kernel/instvar.rb +0 -13
  1889. data/lib/facets/core/kernel/is.rb +0 -7
  1890. data/lib/facets/core/kernel/load_local.rb +0 -26
  1891. data/lib/facets/core/kernel/maybe.rb +0 -41
  1892. data/lib/facets/core/kernel/meta.rb +0 -21
  1893. data/lib/facets/core/kernel/meta_alias.rb +0 -14
  1894. data/lib/facets/core/kernel/meta_class.rb +0 -38
  1895. data/lib/facets/core/kernel/meta_def.rb +0 -14
  1896. data/lib/facets/core/kernel/meta_eval.rb +0 -16
  1897. data/lib/facets/core/kernel/metaclass.rb +0 -38
  1898. data/lib/facets/core/kernel/method.rb +0 -94
  1899. data/lib/facets/core/kernel/methods.rb +0 -79
  1900. data/lib/facets/core/kernel/nack.rb +0 -12
  1901. data/lib/facets/core/kernel/new.rb +0 -40
  1902. data/lib/facets/core/kernel/object_class.rb +0 -31
  1903. data/lib/facets/core/kernel/object_clone.rb +0 -4
  1904. data/lib/facets/core/kernel/object_dup.rb +0 -2
  1905. data/lib/facets/core/kernel/object_hexid.rb +0 -35
  1906. data/lib/facets/core/kernel/object_send.rb +0 -21
  1907. data/lib/facets/core/kernel/op_esc.rb +0 -37
  1908. data/lib/facets/core/kernel/p.rb +0 -12
  1909. data/lib/facets/core/kernel/populate.rb +0 -39
  1910. data/lib/facets/core/kernel/pp_exception.rb +0 -17
  1911. data/lib/facets/core/kernel/qua_class.rb +0 -41
  1912. data/lib/facets/core/kernel/require_all.rb +0 -46
  1913. data/lib/facets/core/kernel/require_esc.rb +0 -44
  1914. data/lib/facets/core/kernel/require_local.rb +0 -26
  1915. data/lib/facets/core/kernel/resc.rb +0 -32
  1916. data/lib/facets/core/kernel/respond.rb +0 -14
  1917. data/lib/facets/core/kernel/returning.rb +0 -9
  1918. data/lib/facets/core/kernel/send_as.rb +0 -40
  1919. data/lib/facets/core/kernel/set_from.rb +0 -69
  1920. data/lib/facets/core/kernel/set_with.rb +0 -92
  1921. data/lib/facets/core/kernel/silence_stream.rb +0 -22
  1922. data/lib/facets/core/kernel/silence_warnings.rb +0 -2
  1923. data/lib/facets/core/kernel/silently.rb +0 -41
  1924. data/lib/facets/core/kernel/singleton.rb +0 -48
  1925. data/lib/facets/core/kernel/singleton_class.rb +0 -36
  1926. data/lib/facets/core/kernel/super_at.rb +0 -56
  1927. data/lib/facets/core/kernel/supermethod.rb +0 -44
  1928. data/lib/facets/core/kernel/supress.rb +0 -15
  1929. data/lib/facets/core/kernel/tap.rb +0 -42
  1930. data/lib/facets/core/kernel/this.rb +0 -33
  1931. data/lib/facets/core/kernel/to_b.rb +0 -41
  1932. data/lib/facets/core/kernel/to_bool.rb +0 -47
  1933. data/lib/facets/core/kernel/to_data.rb +0 -116
  1934. data/lib/facets/core/kernel/true.rb +0 -2
  1935. data/lib/facets/core/kernel/unuri.rb +0 -2
  1936. data/lib/facets/core/kernel/uri.rb +0 -38
  1937. data/lib/facets/core/kernel/val.rb +0 -52
  1938. data/lib/facets/core/kernel/warn_with_line.rb +0 -30
  1939. data/lib/facets/core/kernel/with.rb +0 -57
  1940. data/lib/facets/core/kernel/with_accessor.rb +0 -94
  1941. data/lib/facets/core/kernel/with_reader.rb +0 -2
  1942. data/lib/facets/core/kernel/with_writer.rb +0 -2
  1943. data/lib/facets/core/kernel/yaml.rb +0 -7
  1944. data/lib/facets/core/logger/format.rb +0 -28
  1945. data/lib/facets/core/logger/format_message.rb +0 -1
  1946. data/lib/facets/core/matchdata/match.rb +0 -37
  1947. data/lib/facets/core/matchdata/matchset.rb +0 -2
  1948. data/lib/facets/core/matchdata/matchtree.rb +0 -72
  1949. data/lib/facets/core/module/abstract.rb +0 -50
  1950. data/lib/facets/core/module/alias_accessor.rb +0 -19
  1951. data/lib/facets/core/module/alias_method_chain.rb +0 -72
  1952. data/lib/facets/core/module/alias_module_function.rb +0 -57
  1953. data/lib/facets/core/module/ancestor.rb +0 -38
  1954. data/lib/facets/core/module/attr.rb +0 -26
  1955. data/lib/facets/core/module/attr_query.rb +0 -56
  1956. data/lib/facets/core/module/attr_setter.rb +0 -48
  1957. data/lib/facets/core/module/attr_tester.rb +0 -84
  1958. data/lib/facets/core/module/attr_validator.rb +0 -18
  1959. data/lib/facets/core/module/basename.rb +0 -50
  1960. data/lib/facets/core/module/by_name.rb +0 -68
  1961. data/lib/facets/core/module/class.rb +0 -3
  1962. data/lib/facets/core/module/class_extension.rb +0 -153
  1963. data/lib/facets/core/module/clone_removing.rb +0 -2
  1964. data/lib/facets/core/module/clone_renaming.rb +0 -2
  1965. data/lib/facets/core/module/clone_using.rb +0 -87
  1966. data/lib/facets/core/module/dirname.rb +0 -42
  1967. data/lib/facets/core/module/equate_on.rb +0 -70
  1968. data/lib/facets/core/module/include_and_extend.rb +0 -10
  1969. data/lib/facets/core/module/include_as.rb +0 -103
  1970. data/lib/facets/core/module/include_function_module.rb +0 -13
  1971. data/lib/facets/core/module/initializer.rb +0 -65
  1972. data/lib/facets/core/module/instance_methods.rb +0 -186
  1973. data/lib/facets/core/module/integrate.rb +0 -78
  1974. data/lib/facets/core/module/is.rb +0 -35
  1975. data/lib/facets/core/module/memoize.rb +0 -96
  1976. data/lib/facets/core/module/modspace.rb +0 -43
  1977. data/lib/facets/core/module/module_load.rb +0 -51
  1978. data/lib/facets/core/module/module_method.rb +0 -13
  1979. data/lib/facets/core/module/module_require.rb +0 -3
  1980. data/lib/facets/core/module/namespace.rb +0 -122
  1981. data/lib/facets/core/module/nesting.rb +0 -45
  1982. data/lib/facets/core/module/new.rb +0 -37
  1983. data/lib/facets/core/module/nodef.rb +0 -34
  1984. data/lib/facets/core/module/on_included.rb +0 -48
  1985. data/lib/facets/core/module/prepend.rb +0 -63
  1986. data/lib/facets/core/module/redef.rb +0 -31
  1987. data/lib/facets/core/module/redefine_method.rb +0 -57
  1988. data/lib/facets/core/module/redirect.rb +0 -30
  1989. data/lib/facets/core/module/redirect_method.rb +0 -64
  1990. data/lib/facets/core/module/remove.rb +0 -29
  1991. data/lib/facets/core/module/rename.rb +0 -31
  1992. data/lib/facets/core/module/rename_method.rb +0 -38
  1993. data/lib/facets/core/module/revisal.rb +0 -49
  1994. data/lib/facets/core/module/self/op_add.rb +0 -99
  1995. data/lib/facets/core/module/self/op_sub.rb +0 -3
  1996. data/lib/facets/core/module/shadow_all.rb +0 -17
  1997. data/lib/facets/core/module/shadow_method.rb +0 -42
  1998. data/lib/facets/core/module/sort_on.rb +0 -73
  1999. data/lib/facets/core/module/this.rb +0 -64
  2000. data/lib/facets/core/module/wrap.rb +0 -30
  2001. data/lib/facets/core/module/wrap_method.rb +0 -53
  2002. data/lib/facets/core/nil_as_emptiness.rb +0 -34
  2003. data/lib/facets/core/nilclass/blank.rb +0 -32
  2004. data/lib/facets/core/nilclass/empty.rb +0 -32
  2005. data/lib/facets/core/nilclass/include.rb +0 -32
  2006. data/lib/facets/core/nilclass/length.rb +0 -2
  2007. data/lib/facets/core/nilclass/op_cmp.rb +0 -12
  2008. data/lib/facets/core/nilclass/op_fetch.rb +0 -37
  2009. data/lib/facets/core/nilclass/size.rb +0 -44
  2010. data/lib/facets/core/nilclass/succ.rb +0 -5
  2011. data/lib/facets/core/nilclass/to_h.rb +0 -33
  2012. data/lib/facets/core/nilclass/to_path.rb +0 -18
  2013. data/lib/facets/core/numeric/approx.rb +0 -34
  2014. data/lib/facets/core/numeric/ceil_multiple.rb +0 -40
  2015. data/lib/facets/core/numeric/distance.rb +0 -37
  2016. data/lib/facets/core/numeric/pred.rb +0 -2
  2017. data/lib/facets/core/numeric/succ.rb +0 -69
  2018. data/lib/facets/core/numeric/to_b.rb +0 -38
  2019. data/lib/facets/core/ostruct.rb +0 -36
  2020. data/lib/facets/core/ostruct/__merge__.rb +0 -5
  2021. data/lib/facets/core/ostruct/__table__.rb +0 -10
  2022. data/lib/facets/core/ostruct/__update__.rb +0 -75
  2023. data/lib/facets/core/ostruct/instance_delegate.rb +0 -60
  2024. data/lib/facets/core/ostruct/op_fetch.rb +0 -58
  2025. data/lib/facets/core/ostruct/op_store.rb +0 -5
  2026. data/lib/facets/core/ostruct/to_h.rb +0 -8
  2027. data/lib/facets/core/pathname/ascend.rb +0 -22
  2028. data/lib/facets/core/pathname/descend.rb +0 -20
  2029. data/lib/facets/core/pathname/op_div.rb +0 -4
  2030. data/lib/facets/core/proc/bind.rb +0 -35
  2031. data/lib/facets/core/proc/compose.rb +0 -44
  2032. data/lib/facets/core/proc/op_mul.rb +0 -51
  2033. data/lib/facets/core/proc/to_h.rb +0 -27
  2034. data/lib/facets/core/proc/to_method.rb +0 -61
  2035. data/lib/facets/core/proc/update.rb +0 -11
  2036. data/lib/facets/core/random.rb +0 -21
  2037. data/lib/facets/core/range/combine.rb +0 -62
  2038. data/lib/facets/core/range/overlap.rb +0 -10
  2039. data/lib/facets/core/range/to_r.rb +0 -32
  2040. data/lib/facets/core/range/to_range.rb +0 -36
  2041. data/lib/facets/core/range/umbrella.rb +0 -67
  2042. data/lib/facets/core/range/within.rb +0 -44
  2043. data/lib/facets/core/regexp/arity.rb +0 -41
  2044. data/lib/facets/core/regexp/to_re.rb +0 -38
  2045. data/lib/facets/core/regexp/to_regexp.rb +0 -36
  2046. data/lib/facets/core/string/align_center.rb +0 -87
  2047. data/lib/facets/core/string/align_left.rb +0 -2
  2048. data/lib/facets/core/string/align_right.rb +0 -2
  2049. data/lib/facets/core/string/at.rb +0 -8
  2050. data/lib/facets/core/string/at_rand.rb +0 -65
  2051. data/lib/facets/core/string/basename.rb +0 -48
  2052. data/lib/facets/core/string/blank.rb +0 -36
  2053. data/lib/facets/core/string/bracket.rb +0 -70
  2054. data/lib/facets/core/string/brief.rb +0 -33
  2055. data/lib/facets/core/string/bytes.rb +0 -31
  2056. data/lib/facets/core/string/camelcase.rb +0 -58
  2057. data/lib/facets/core/string/camelize.rb +0 -35
  2058. data/lib/facets/core/string/capitalize_all.rb +0 -30
  2059. data/lib/facets/core/string/capitalized.rb +0 -36
  2060. data/lib/facets/core/string/chars.rb +0 -34
  2061. data/lib/facets/core/string/cleave.rb +0 -66
  2062. data/lib/facets/core/string/cmp.rb +0 -43
  2063. data/lib/facets/core/string/demodulize.rb +0 -40
  2064. data/lib/facets/core/string/dequote.rb +0 -29
  2065. data/lib/facets/core/string/divide.rb +0 -43
  2066. data/lib/facets/core/string/downcase.rb +0 -37
  2067. data/lib/facets/core/string/dresner.rb +0 -49
  2068. data/lib/facets/core/string/each_char.rb +0 -35
  2069. data/lib/facets/core/string/each_word.rb +0 -50
  2070. data/lib/facets/core/string/ends_with.rb +0 -2
  2071. data/lib/facets/core/string/first.rb +0 -94
  2072. data/lib/facets/core/string/first_char.rb +0 -20
  2073. data/lib/facets/core/string/fold.rb +0 -67
  2074. data/lib/facets/core/string/format.rb +0 -17
  2075. data/lib/facets/core/string/humanize.rb +0 -31
  2076. data/lib/facets/core/string/indent.rb +0 -68
  2077. data/lib/facets/core/string/index_all.rb +0 -40
  2078. data/lib/facets/core/string/last.rb +0 -94
  2079. data/lib/facets/core/string/last_char.rb +0 -22
  2080. data/lib/facets/core/string/line_wrap.rb +0 -77
  2081. data/lib/facets/core/string/lines.rb +0 -33
  2082. data/lib/facets/core/string/lowercase.rb +0 -32
  2083. data/lib/facets/core/string/margin.rb +0 -138
  2084. data/lib/facets/core/string/methodize.rb +0 -45
  2085. data/lib/facets/core/string/modulize.rb +0 -44
  2086. data/lib/facets/core/string/mscan.rb +0 -42
  2087. data/lib/facets/core/string/natcmp.rb +0 -108
  2088. data/lib/facets/core/string/nchar.rb +0 -45
  2089. data/lib/facets/core/string/ordinal.rb +0 -16
  2090. data/lib/facets/core/string/pathize.rb +0 -46
  2091. data/lib/facets/core/string/plural.rb +0 -2
  2092. data/lib/facets/core/string/pop.rb +0 -54
  2093. data/lib/facets/core/string/pot.rb +0 -45
  2094. data/lib/facets/core/string/pull.rb +0 -17
  2095. data/lib/facets/core/string/push.rb +0 -44
  2096. data/lib/facets/core/string/quote.rb +0 -68
  2097. data/lib/facets/core/string/rand_byte.rb +0 -55
  2098. data/lib/facets/core/string/rand_index.rb +0 -29
  2099. data/lib/facets/core/string/range.rb +0 -37
  2100. data/lib/facets/core/string/range_all.rb +0 -48
  2101. data/lib/facets/core/string/range_of_line.rb +0 -42
  2102. data/lib/facets/core/string/regesc.rb +0 -32
  2103. data/lib/facets/core/string/rewrite.rb +0 -34
  2104. data/lib/facets/core/string/self/format.rb +0 -17
  2105. data/lib/facets/core/string/self/interpolate.rb +0 -31
  2106. data/lib/facets/core/string/self/patterns.rb +0 -51
  2107. data/lib/facets/core/string/self/rand_letter.rb +0 -34
  2108. data/lib/facets/core/string/self/random.rb +0 -37
  2109. data/lib/facets/core/string/shatter.rb +0 -45
  2110. data/lib/facets/core/string/shell_escape.rb +0 -11
  2111. data/lib/facets/core/string/shift.rb +0 -42
  2112. data/lib/facets/core/string/shuffle.rb +0 -42
  2113. data/lib/facets/core/string/similarity.rb +0 -108
  2114. data/lib/facets/core/string/singular.rb +0 -202
  2115. data/lib/facets/core/string/soundex.rb +0 -102
  2116. data/lib/facets/core/string/starts_with.rb +0 -24
  2117. data/lib/facets/core/string/succ.rb +0 -38
  2118. data/lib/facets/core/string/tab.rb +0 -2
  2119. data/lib/facets/core/string/tabto.rb +0 -2
  2120. data/lib/facets/core/string/to_a.rb +0 -41
  2121. data/lib/facets/core/string/to_b.rb +0 -64
  2122. data/lib/facets/core/string/to_const.rb +0 -39
  2123. data/lib/facets/core/string/to_date.rb +0 -35
  2124. data/lib/facets/core/string/to_proc.rb +0 -54
  2125. data/lib/facets/core/string/to_re.rb +0 -46
  2126. data/lib/facets/core/string/to_rx.rb +0 -2
  2127. data/lib/facets/core/string/to_time.rb +0 -34
  2128. data/lib/facets/core/string/unbracket.rb +0 -46
  2129. data/lib/facets/core/string/underscore.rb +0 -18
  2130. data/lib/facets/core/string/unix_crypt.rb +0 -41
  2131. data/lib/facets/core/string/unpack.rb +0 -45
  2132. data/lib/facets/core/string/unshift.rb +0 -42
  2133. data/lib/facets/core/string/upcase.rb +0 -45
  2134. data/lib/facets/core/string/uppercase.rb +0 -2
  2135. data/lib/facets/core/string/whitespace.rb +0 -27
  2136. data/lib/facets/core/string/word_filter.rb +0 -61
  2137. data/lib/facets/core/string/word_wrap.rb +0 -90
  2138. data/lib/facets/core/string/words.rb +0 -45
  2139. data/lib/facets/core/string_as_array.rb +0 -17
  2140. data/lib/facets/core/symbol/camelcase.rb +0 -42
  2141. data/lib/facets/core/symbol/camelize.rb +0 -33
  2142. data/lib/facets/core/symbol/capitalize.rb +0 -31
  2143. data/lib/facets/core/symbol/capitalized.rb +0 -33
  2144. data/lib/facets/core/symbol/chomp.rb +0 -9
  2145. data/lib/facets/core/symbol/downcase.rb +0 -36
  2146. data/lib/facets/core/symbol/pad.rb +0 -43
  2147. data/lib/facets/core/symbol/self/generate.rb +0 -19
  2148. data/lib/facets/core/symbol/succ.rb +0 -42
  2149. data/lib/facets/core/symbol/to_const.rb +0 -40
  2150. data/lib/facets/core/symbol/to_proc.rb +0 -54
  2151. data/lib/facets/core/symbol/to_s.rb +0 -12
  2152. data/lib/facets/core/symbol/to_str.rb +0 -39
  2153. data/lib/facets/core/symbol/underscore.rb +0 -32
  2154. data/lib/facets/core/symbol/upcase.rb +0 -37
  2155. data/lib/facets/core/time/change.rb +0 -51
  2156. data/lib/facets/core/time/elapse.rb +0 -41
  2157. data/lib/facets/core/time/self/days_extrema.rb +0 -22
  2158. data/lib/facets/core/time/self/stamp.rb +0 -2
  2159. data/lib/facets/core/time/stamp.rb +0 -67
  2160. data/lib/facets/core/time/to_date.rb +0 -37
  2161. data/lib/facets/core/time/to_s.rb +0 -33
  2162. data/lib/facets/core/time/to_time.rb +0 -36
  2163. data/lib/facets/core/unboundmethod/name.rb +0 -8
  2164. data/lib/facets/more/ann.rb +0 -250
  2165. data/lib/facets/more/ann_attr.rb +0 -161
  2166. data/lib/facets/more/ansicode.rb +0 -300
  2167. data/lib/facets/more/arguments.rb +0 -497
  2168. data/lib/facets/more/aspects.rb +0 -246
  2169. data/lib/facets/more/association.rb +0 -197
  2170. data/lib/facets/more/autoarray.rb +0 -82
  2171. data/lib/facets/more/autoscript.rb +0 -34
  2172. data/lib/facets/more/autovivify.rb +0 -16
  2173. data/lib/facets/more/basicobject.rb +0 -291
  2174. data/lib/facets/more/bbcode.rb +0 -375
  2175. data/lib/facets/more/behavior.rb +0 -59
  2176. data/lib/facets/more/binaryreader.rb +0 -275
  2177. data/lib/facets/more/bitmask.rb +0 -112
  2178. data/lib/facets/more/buildingblock.rb +0 -208
  2179. data/lib/facets/more/bytes.rb +0 -231
  2180. data/lib/facets/more/cache.rb +0 -81
  2181. data/lib/facets/more/classmethods.rb +0 -206
  2182. data/lib/facets/more/cloneable.rb +0 -67
  2183. data/lib/facets/more/command.rb +0 -748
  2184. data/lib/facets/more/consoleutils.rb +0 -45
  2185. data/lib/facets/more/cookie.rb +0 -559
  2186. data/lib/facets/more/coroutine.rb +0 -168
  2187. data/lib/facets/more/crypt.rb +0 -205
  2188. data/lib/facets/more/cut.rb +0 -507
  2189. data/lib/facets/more/dependency.rb +0 -199
  2190. data/lib/facets/more/dictionary.rb +0 -497
  2191. data/lib/facets/more/doublemetaphone.rb +0 -371
  2192. data/lib/facets/more/downloader.rb +0 -279
  2193. data/lib/facets/more/elementor.rb +0 -136
  2194. data/lib/facets/more/enumerablepass.rb +0 -277
  2195. data/lib/facets/more/eventhook.rb +0 -113
  2196. data/lib/facets/more/expirable.rb +0 -82
  2197. data/lib/facets/more/filelist.rb +0 -487
  2198. data/lib/facets/more/filesystem.rb +0 -43
  2199. data/lib/facets/more/floatstring.rb +0 -170
  2200. data/lib/facets/more/functor.rb +0 -132
  2201. data/lib/facets/more/hashbuilder.rb +0 -80
  2202. data/lib/facets/more/heap.rb +0 -3
  2203. data/lib/facets/more/htmlbuilder.rb +0 -71
  2204. data/lib/facets/more/htmlfilter.rb +0 -566
  2205. data/lib/facets/more/htmlhelper.rb +0 -92
  2206. data/lib/facets/more/http.rb +0 -569
  2207. data/lib/facets/more/httpaccess.rb +0 -1608
  2208. data/lib/facets/more/infinity.rb +0 -221
  2209. data/lib/facets/more/inheritor.rb +0 -251
  2210. data/lib/facets/more/instance_intercept.rb +0 -131
  2211. data/lib/facets/more/interval.rb +0 -420
  2212. data/lib/facets/more/ioredirect.rb +0 -126
  2213. data/lib/facets/more/json.rb +0 -917
  2214. data/lib/facets/more/lazy.rb +0 -238
  2215. data/lib/facets/more/linkedlist.rb +0 -254
  2216. data/lib/facets/more/lisp.rb +0 -384
  2217. data/lib/facets/more/lisp_format.rb +0 -1851
  2218. data/lib/facets/more/lrucache.rb +0 -173
  2219. data/lib/facets/more/main_as_module.rb +0 -44
  2220. data/lib/facets/more/mathconstants.rb +0 -302
  2221. data/lib/facets/more/methodfilter.rb +0 -122
  2222. data/lib/facets/more/methodprobe.rb +0 -210
  2223. data/lib/facets/more/minitar.rb +0 -981
  2224. data/lib/facets/more/mock.rb +0 -240
  2225. data/lib/facets/more/multipliers.rb +0 -195
  2226. data/lib/facets/more/multiton.rb +0 -377
  2227. data/lib/facets/more/nackclass.rb +0 -158
  2228. data/lib/facets/more/nilcomparable.rb +0 -174
  2229. data/lib/facets/more/nullclass.rb +0 -69
  2230. data/lib/facets/more/opencascade.rb +0 -156
  2231. data/lib/facets/more/openobject.rb +0 -354
  2232. data/lib/facets/more/orderedhash.rb +0 -14
  2233. data/lib/facets/more/ormsupport.rb +0 -224
  2234. data/lib/facets/more/overload.rb +0 -146
  2235. data/lib/facets/more/paramix.rb +0 -239
  2236. data/lib/facets/more/pathlist.rb +0 -99
  2237. data/lib/facets/more/pool.rb +0 -90
  2238. data/lib/facets/more/populate.rb +0 -37
  2239. data/lib/facets/more/pqueue.rb +0 -456
  2240. data/lib/facets/more/preinitialize.rb +0 -151
  2241. data/lib/facets/more/progressbar.rb +0 -237
  2242. data/lib/facets/more/promoteself.rb +0 -100
  2243. data/lib/facets/more/quaternion.rb +0 -560
  2244. data/lib/facets/more/recorder.rb +0 -126
  2245. data/lib/facets/more/reference.rb +0 -91
  2246. data/lib/facets/more/rexmlbuilder.rb +0 -280
  2247. data/lib/facets/more/rtals.rb +0 -212
  2248. data/lib/facets/more/rwdelegator.rb +0 -51
  2249. data/lib/facets/more/script.rb +0 -157
  2250. data/lib/facets/more/semaphore.rb +0 -90
  2251. data/lib/facets/more/settings.rb +0 -219
  2252. data/lib/facets/more/smtp_tls.rb +0 -65
  2253. data/lib/facets/more/snapshot.rb +0 -196
  2254. data/lib/facets/more/stateparser.rb +0 -569
  2255. data/lib/facets/more/statichash.rb +0 -95
  2256. data/lib/facets/more/syncarray.rb +0 -136
  2257. data/lib/facets/more/synchash.rb +0 -164
  2258. data/lib/facets/more/system.rb +0 -177
  2259. data/lib/facets/more/tagiterator.rb +0 -363
  2260. data/lib/facets/more/timer.rb +0 -303
  2261. data/lib/facets/more/times.rb +0 -413
  2262. data/lib/facets/more/tkxml.rb +0 -171
  2263. data/lib/facets/more/tracepoint.rb +0 -185
  2264. data/lib/facets/more/tuple.rb +0 -366
  2265. data/lib/facets/more/typecast.rb +0 -288
  2266. data/lib/facets/more/uninheritable.rb +0 -83
  2267. data/lib/facets/more/units.rb +0 -939
  2268. data/lib/facets/more/uploadutils.rb +0 -410
  2269. data/lib/facets/more/version_number.rb +0 -98
  2270. data/lib/facets/more/xmlbuilder.rb +0 -86
  2271. data/lib/facets/more/xmlhelper.rb +0 -168
  2272. data/lib/facets/more/xoxo.rb +0 -541
  2273. data/lib/facets/more/yamlstruct.rb +0 -93
  2274. data/lib/facets/sys.rb +0 -213
  2275. data/lib/facets/yore/annattr.rb +0 -148
  2276. data/lib/facets/yore/annotation.rb +0 -558
  2277. data/lib/facets/yore/builderobject.rb +0 -222
  2278. data/lib/facets/yore/enumerable/cross.rb +0 -117
  2279. data/lib/facets/yore/kernel/own.rb +0 -17
  2280. data/lib/facets/yore/kernel/require_facet.rb +0 -43
  2281. data/lib/facets/yore/module/inject.rb +0 -9
  2282. data/lib/facets/yore/module/namespace.rb +0 -62
  2283. data/rakefile.rb +0 -150
  2284. data/setup.rb +0 -1587
  2285. data/test/special/main_as_module.rb +0 -14
@@ -1,384 +0,0 @@
1
- # = lisp.rb
2
- #
3
- # == Copyright (C) 2003 Florian Frank
4
- #
5
- # Ruby License
6
- #
7
- # This module is free software. You may use, modify, and/or redistribute this
8
- # software under the same terms as Ruby.
9
- #
10
- # This program is distributed in the hope that it will be useful, but WITHOUT
11
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
- # FOR A PARTICULAR PURPOSE.
13
- #
14
- # == Author(s)
15
- #
16
- # * Florian Frank
17
- #
18
- # == Developers Notes
19
- #
20
- # TODO Changed the name of Pair class to DottedPair (good change?)
21
- # and then added a new method #pair! which converts an array
22
- # to a DottedPair. This is then used in #car and
23
- # #cdr to automatically convert arrays passed to 'em.
24
- # There may be other places that #pair! conversion is needed.
25
-
26
- # Author:: Florian Frank
27
- # Copyright:: Copyright (c) 2003 Florian Frank
28
- # License:: Ruby License
29
-
30
- # = Lisp Mixin
31
- #
32
- # This module provides Lisp-like functional notation.
33
- # With this module it almost possible to write real
34
- # Lisp code in Ruby.
35
- #
36
- # == Usage
37
- #
38
- # It's hardly believable, but the following IS valid ruby code:
39
- #
40
- # (def accumulate (fun, x, list)
41
- # (if (null? list)
42
- # x
43
- # else
44
- # (accumulate fun, (fun.call x, (car list)), (cdr list))
45
- # end)
46
- # end)
47
- #
48
- # A real programmer can write LISP in any language ;)
49
-
50
- module Lisp
51
-
52
- # DottedPair
53
-
54
- class DottedPair
55
-
56
- include Lisp
57
- include Enumerable
58
-
59
- def initialize(first = nil, second = nil)
60
- @first, @second = first, second
61
- end
62
-
63
- attr_accessor :first, :second
64
-
65
- def DottedPair.[](*array)
66
- if array.empty?
67
- nil
68
- else
69
- DottedPair.new(array.shift, DottedPair[*array])
70
- end
71
- end
72
-
73
- def each(&block)
74
- if @first
75
- if @first.is_a? DottedPair
76
- @first.each(&block)
77
- else
78
- block.call(@first)
79
- end
80
- end
81
- if @second
82
- if @second.is_a? DottedPair
83
- @second.each(&block)
84
- else
85
- block.call(@second)
86
- end
87
- end
88
- end
89
-
90
- def to_s
91
- '(' + repr + ')'
92
- end
93
-
94
- def inspect
95
- '(' + repr + ')'
96
- end
97
-
98
- def to_a
99
- a = []
100
- each { |e| a << e }
101
- a
102
- end
103
-
104
- def ==(other)
105
- if pair?(self) and pair?(other)
106
- car(self) == car(other) and cdr(self) == cdr(other)
107
- else
108
- if pair?(self) then false else self == other end
109
- end
110
- end
111
-
112
- protected
113
-
114
- def repr
115
- case @second
116
- when DottedPair then @first.to_s + ' ' + @second.repr
117
- when nil then @first.to_s
118
- else @first.to_s + ' . ' + @second.to_s
119
- end
120
- end
121
-
122
- end # DottedPair
123
-
124
- # Functional API
125
-
126
- def cons(car, cdr)
127
- DottedPair.new(car, cdr)
128
- end
129
-
130
- def consonto(cdr, car)
131
- DottedPair.new(car, cdr)
132
- end
133
-
134
- def car(pair)
135
- pair = pair!(pair)
136
- pair.first
137
- end
138
-
139
- def cdr(pair)
140
- pair = pair!(pair)
141
- pair.second
142
- end
143
-
144
- def set(var, val, binding)
145
- eval "var = #{val}", binding
146
- end
147
-
148
- def set_car!(pair, val)
149
- pair.first = val
150
- end
151
-
152
- def set_cdr!(pair, val)
153
- pair.second = val
154
- end
155
-
156
- def null?(x)
157
- x == nil
158
- end
159
-
160
- def pair?(x)
161
- x.is_a?(DottedPair)
162
- end
163
-
164
- def pair!(x)
165
- return x if pair?(x)
166
- return DottedPair[*x]
167
- end
168
-
169
- def atom?(x)
170
- not pair?(x) || null?(x)
171
- end
172
-
173
- def equal?(l, m)
174
- l == m
175
- end
176
-
177
- def list(*elms)
178
- if elms.empty?
179
- nil
180
- else
181
- cons(elms.shift, list(*elms))
182
- end
183
- end
184
-
185
- def append(l, m)
186
- if null?(l)
187
- if null?(m)
188
- nil
189
- else
190
- cons(car(m), append(l, cdr(m)))
191
- end
192
- else
193
- cons(car(l), append(cdr(l), m))
194
- end
195
- end
196
-
197
- def length(list)
198
- if null?(list)
199
- 0
200
- else
201
- 1 + length(cdr(list))
202
- end
203
- end
204
-
205
- def map(fun, list)
206
- if null?(list)
207
- nil
208
- else
209
- cons(fun.call(car(list)), map(fun, cdr(list)))
210
- end
211
- end
212
-
213
- def zip(fun, l, m)
214
- if null?(l) and null?(m)
215
- nil
216
- elsif null?(l) or null?(m)
217
- raise ArgumentError.new("zip with unequal length lists")
218
- else
219
- cons(fun.call(car(l), car(m)), zip(fun, cdr(l), cdr(m)))
220
- end
221
- end
222
-
223
- def pairlis(l, m)
224
- zip(lambda { |x, y| cons(x, y) }, l, m)
225
- end
226
-
227
- def member?(x, list)
228
- if null?(list)
229
- false
230
- else
231
- if x == car(list)
232
- true
233
- else
234
- member?(x, cdr(list))
235
- end
236
- end
237
- end
238
-
239
- def filter(pred, list)
240
- if null?(list)
241
- nil
242
- else
243
- if pred.call(car(list))
244
- cons(car(list), filter(pred, cdr(list)))
245
- else
246
- filter(pred, cdr(list))
247
- end
248
- end
249
- end
250
-
251
- def assoc(x, list)
252
- f = filter(lambda { |y| x == car(y)}, list)
253
- if null?(f) then nil else car(f) end
254
- end
255
-
256
- def exists?(pred, list)
257
- if null?(list)
258
- false
259
- else
260
- if pred.call(car(list))
261
- true
262
- else
263
- exists?(pred, cdr(list))
264
- end
265
- end
266
- end
267
-
268
- def all?(pred, list)
269
- if null?(list)
270
- true
271
- else
272
- if pred.call(car(list))
273
- all?(pred, cdr(list))
274
- else
275
- false
276
- end
277
- end
278
- end
279
-
280
- def accumulate(fun, x, list)
281
- if null?(list)
282
- x
283
- else
284
- accumulate(fun, fun.call(x, car(list)), cdr(list))
285
- end
286
- end
287
-
288
- alias foldleft accumulate
289
-
290
- def reduce(fun, x, list)
291
- if null?(list)
292
- x
293
- else
294
- fun.call(car(list), reduce(fun, x, cdr(list)))
295
- end
296
- end
297
-
298
- alias foldright reduce
299
-
300
- def link(lists)
301
- accumulate(lambda { |x, y| append(x, y) }, nil, lists)
302
- end
303
-
304
- def explode(string)
305
- list(*(string.split(//)))
306
- end
307
-
308
- def implode(list)
309
- accumulate(lambda { |x, y| x + y }, '', list)
310
- end
311
-
312
- def sum(list)
313
- accumulate(lambda { |x, y| x + y }, 0, list)
314
- end
315
-
316
- def prod(list)
317
- accumulate(lambda { |x, y| x * y }, 1, list)
318
- end
319
-
320
- def reverse(lists)
321
- accumulate(lambda { |x, y| consonto(x, y) }, nil, lists)
322
- end
323
-
324
- def take(l, n)
325
- if n > 0 and not null?(l)
326
- cons(car(l), take(cdr(l), n - 1))
327
- else
328
- nil
329
- end
330
- end
331
-
332
- def drop(l, n)
333
- if n > 0 and not null?(l)
334
- drop(cdr(l), n - 1)
335
- else
336
- l
337
- end
338
- end
339
-
340
- end
341
-
342
-
343
-
344
- # _____ _
345
- # |_ _|__ ___| |_
346
- # | |/ _ \/ __| __|
347
- # | | __/\__ \ |_
348
- # |_|\___||___/\__|
349
- #
350
-
351
- =begin test
352
-
353
- require 'test/unit'
354
-
355
- # fixture
356
-
357
- class T
358
-
359
- include Lisp
360
-
361
- (def accumulate (fun, x, list)
362
- (if (null? list)
363
- x
364
- else
365
- (accumulate fun, (fun.call x, (car list)), (cdr list))
366
- end)
367
- end)
368
-
369
- end
370
-
371
- # test
372
-
373
- class TC_Lisp < Test::Unit::TestCase
374
-
375
- include Lisp
376
-
377
- def test_accumulate
378
- t = T.new
379
- t.accumulate( proc{ |x,y| x+y }, 0, [1,2,3] )
380
- end
381
-
382
- end
383
-
384
- =end
@@ -1,1851 +0,0 @@
1
- # = lisp_format.rb
2
- #
3
- # == Copyright (C) 2003 Nikolai Weibull
4
- #
5
- # GNU Lesser General Public License (LGPL)
6
- #
7
- # This library is free software; you can redistribute it and/or
8
- # modify it under the terms of the GNU Lesser General Public
9
- # License as published by the Free Software Foundation; either
10
- # version 2.1 of the License, or (at your option) any later version.
11
- #
12
- # This library is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
- # Lesser General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Lesser General Public
18
- # License along with this library; if not, write to the Free Software
19
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
- #
21
- # == Developer Notes
22
- #
23
- # TODO The floating point functions are rather horendous.
24
- #
25
- # TODO More modules may be added later.
26
- #
27
- # == Author(s)
28
- #
29
- # * Nikolai Weibull
30
- #
31
- # == Additional Information
32
- #
33
- # The project website for ruby-lisp is currently located at
34
- # http://ned.rubyforge.org/.
35
-
36
- # Author:: Nikolai Weibull
37
- # Copyright:: Copyright (c) 2003 Nikolai Weibull <source@pcppopper.org>
38
- # License:: General Public License (GPL)
39
-
40
- # Lisp namespace.
41
-
42
- module Lisp
43
-
44
- # Apply lisp format.
45
-
46
- def self.format(format, *args)
47
- begin
48
- state = Format::State.new(args, Format::Output.new)
49
- formatter = Format::Formatter.new(format, state)
50
- formatter.run
51
- rescue => e
52
- puts 'Format error: ' + e.message
53
- puts format
54
- puts ' ' * (e.pos - 1) + '^' if e.respond_to? :pos
55
- raise
56
- end
57
- end
58
-
59
- # See Lisp::format.
60
-
61
- def format(format, *args)
62
- Lisp.format(format, *args)
63
- end
64
-
65
- # = Lisp::Format
66
- #
67
- # "So what is *ruby-lisp*?", you ask. Well, it is a module for implementing nice
68
- # Lisp features for use in Ruby. Currently the only sub-module that exists is
69
- # Lisp::Format, which implements Lisp's (format) function and its formatting
70
- # language. For people not familiar with this language, it is a very expressive
71
- # string formatting language, much like sprintf()'s, but much more powerful. It
72
- # allows for iteration, case conversion, conditionals, and much more. If you
73
- # have ever felt stupid while creating a string iteratively, to print an array or
74
- # some such, this is definitely for you!
75
- #
76
- # This module contains various Lisp facilities that are of general usefulness.
77
- # Lisp's rich string formatting language is implemented in the Format module.
78
- # More modules may be added later.
79
- #
80
- # This has been (very simply) integrated into the namespace of Lisp from lisp.rb.
81
- #
82
- # This module implements the Common Lisp (format) function and it's language.
83
-
84
- module Format
85
-
86
- # An error, positioned somewhere in the input format. This is used to be
87
- # able to show the user exactly where something failed in the input format
88
- # string.
89
- module Positioned #:nodoc:
90
- # Create at a given position.
91
- def initialize(pos = -1)
92
- @pos = pos
93
- end
94
-
95
- # The position at which the error occured.
96
- attr :pos, true
97
- end
98
-
99
- # An argument was of the wrong type, or there aren't enough arguments.
100
- class ArgumentError < ArgumentError #:nodoc:
101
- include Positioned
102
- end
103
-
104
- # An index was not valid. Used for argument jumping errors.
105
- class IndexError < IndexError #:nodoc:
106
- include Positioned
107
- end
108
-
109
- # A parameter was wrong in some sense.
110
- class ParameterError < ArgumentError #:nodoc:
111
- include Positioned
112
- end
113
-
114
- # The format string contained a syntax error.
115
- class SyntaxError < SyntaxError #:nodoc:
116
- include Positioned
117
- end
118
-
119
- # The format string was ended before a parameter could be read.
120
- class MissingParameterError < SyntaxError #:nodoc:
121
- end
122
-
123
- # The format string was ended before a parameter could be completed.
124
- class IncompleteParameterError < SyntaxError #:nodoc:
125
- end
126
-
127
- # The format string was malformed somehow.
128
- class MalformedError < SyntaxError #:nodoc:
129
- end
130
-
131
- # A modifier was wrongly given, or there were too many of the same.
132
- class ModifierError < SyntaxError #:nodoc:
133
- end
134
-
135
- # Represents output for a State object.
136
- class Output #:nodoc:
137
- # Create a new Output object.
138
- def initialize(str = '', col = 0)
139
- @output, @col = str, col
140
- end
141
-
142
- # Add +str+ to the output.
143
- def <<(str)
144
- if str.is_a? Fixnum
145
- @output << str.chr
146
- # How should tabs be handled here? They should perhaps be
147
- # interpreted as eight (8) characters wide? This of course depends
148
- # on where @col is already at (8 - @col % 8).
149
- @col = str == ?\n ? 0 : @col + 1
150
- else
151
- @output << str
152
- @col += str.length - (str.rindex(?\n) or 0)
153
- end
154
- end
155
-
156
- # Convert this object to its string representation, which is the output
157
- # gathered so far.
158
- # TODO: this is rather silly
159
- def to_s
160
- @output
161
- end
162
-
163
- # The current output column.
164
- attr :col, true
165
- end
166
-
167
- # This class represents the state of a given Formatter. It keeps track of
168
- # output gathered and arguments left to be processed.
169
- class State #:nodoc:
170
- # Create a state from arguments and a destination output
171
- def initialize(args, output)
172
- @args = args
173
- @arg_pos = 0
174
- @outputs = [output]
175
- @case_conv = nil
176
- end
177
-
178
- # Push a new Output buffer to collect output in.
179
- def push_output
180
- @outputs << Output.new('', @outputs.last.col)
181
- end
182
-
183
- # Pop and return the latest output buffer.
184
- def pop_output
185
- @outputs.pop
186
- end
187
-
188
- # Delegates output to the top-most output buffer.
189
- def output(str)
190
- @outputs.last << str
191
- end
192
-
193
- # Retrieve the current output column.
194
- def col
195
- @outputs.last.col
196
- end
197
-
198
- # Retrieve the latest output buffer.
199
- def latest_output
200
- @outputs.last
201
- end
202
-
203
- # Move +n+ steps forward or backward depending on sign amongst the
204
- # arguments. Movement is relative or absolute depending on the boolean
205
- # value of +relative+.
206
- def args_move(n = 1, relative = true)
207
- @arg_pos = relative ? @arg_pos + n : n
208
- raise IndexError.new,
209
- 'too few arguments' if @arg_pos > @args.size
210
- raise IndexError.new,
211
- 'cannot move past first argument' if @arg_pos < 0
212
- end
213
-
214
- # Get the current argument and move forward one argument.
215
- def next_arg
216
- args_move(1, true)
217
- @args[@arg_pos - 1]
218
- end
219
-
220
- # Get the previously returned argument, without moving.
221
- def previous_arg
222
- args_move(-1, relative)
223
- next_arg
224
- end
225
-
226
- # Push back the previously returned argument.
227
- def push_back_arg
228
- args_move(-1, true)
229
- end
230
-
231
- # Get the number of arguments left to process
232
- def args_left
233
- @args.size - @arg_pos
234
- end
235
-
236
- attr :case_conv, true
237
- end
238
-
239
- # Given a format string, this class lexes it and returns directives it
240
- # finds. This includes gathering parameters and modifiers for the coming
241
- # directives. The necessary information to create a directive is gathered
242
- # and then passed to Directives::Factory#build. Error checking
243
- # is performed, so that incomplete parameters are caught and malformed
244
- # modifiers are supressed.
245
- class Lexer #:nodoc:
246
- @@errorstates = {
247
- :START => [MissingParameterError,
248
- 'format string ended before parameter was found'],
249
- :CHAR => [IncompleteParameterError,
250
- 'format string ended before character parameter could be read'],
251
- :INTEGER => [IncompleteParameterError,
252
- 'format string ended before integer parameter could be read'],
253
- }
254
-
255
- # Create a new Lexer using the given format string +format+.
256
- def initialize(format)
257
- @format = format
258
- @pos = 0
259
- end
260
-
261
- # Read the next token, given the previous one in +previous+, and return
262
- # it. This may either be a 'real' directive created by
263
- # Directives::Factory#build, or a Literal created in-line. If no more
264
- # tokens remain, +nil+ is returned.
265
- def next_token(previous)
266
- if have_more_input
267
- ch = next_char
268
- if ch == ?~
269
- return Directives::Factory.build(params, modifiers, directive,
270
- previous, @pos)
271
- else
272
- literal = Directives::Literal.new(ch.chr)
273
- while have_more_input and (ch = peek_char) != ?~
274
- literal << next_char.chr
275
- end
276
- literal << ch.chr if not have_more_input and ch == ?~
277
- return [literal, 0]
278
- end
279
- else
280
- return nil
281
- end
282
- end
283
-
284
- private
285
-
286
- # Returns +true+ if more input exists.
287
- def have_more_input
288
- @pos < @format.length
289
- end
290
-
291
- # Reads next character in input.
292
- def next_char
293
- @pos += 1
294
- @format[@pos - 1]
295
- end
296
-
297
- # View the next character in input.
298
- def peek_char
299
- @format[@pos]
300
- end
301
-
302
- # Unread previously read character in input.
303
- def unget_char
304
- @pos -= 1
305
- end
306
-
307
- # Read parameters to the coming directive. Raises various errors
308
- # sub-classed from PositionedError when given incomplete
309
- # parameters, e.g. when it runs out of input.
310
- def params
311
- params = []
312
- sign = 1
313
- value = 0
314
- state = :START
315
- while have_more_input
316
- ch = next_char
317
- case state
318
- when :START
319
- case ch
320
- when ?'
321
- state = :CHAR
322
- when ?V, ?v
323
- params << Parameters::Argument.new(@pos)
324
- state = :DONE
325
- when ?#
326
- params << Parameters::ArgumentCount.new(@pos)
327
- state = :DONE
328
- when ?,
329
- params << Parameters::Default.new(@pos)
330
- state = :START
331
- when ?+, ?-, ?0, ?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9
332
- sign = (ch == ?-) ? -1 : 1
333
- value = (ch == ?+ or ch == ?-) ? 0 : (ch - ?0)
334
- state = :INTEGER
335
- else
336
- unget_char
337
- state = :DONE
338
- end
339
- when :INTEGER
340
- if (?0..?9).to_a.include? ch
341
- value = value * 10 + (ch - ?0)
342
- else
343
- unget_char
344
- value *= sign
345
- params << Parameters::Integer.new(@pos, value)
346
- state = :DONE
347
- end
348
- when :CHAR
349
- params << Parameters::Character.new(@pos, ch)
350
- state = :DONE
351
- when :DONE
352
- if ch == ?,
353
- state = :START
354
- else
355
- unget_char
356
- break
357
- end
358
- end
359
- end
360
- unless state == :DONE
361
- raise @@errorstates[state][0].new(@pos), @@errorstates[state][1]
362
- end
363
- return params
364
- end
365
-
366
- # Read modifiers to the coming directive. Raises ModifierError if
367
- # a specific modifier is given more than once.
368
- def modifiers
369
- modifiers = []
370
- while have_more_input
371
- ch = next_char
372
- if ch == ?: or ch == ?@
373
- unless modifiers.include? ch
374
- modifiers << ch
375
- else
376
- raise ModifierError.new(@pos), "duplicate #{ch.chr} modifier"
377
- end
378
- else
379
- unget_char
380
- break
381
- end
382
- end
383
- return modifiers
384
- end
385
-
386
- # Reads the directive. Raises MalformedFormatError if no input
387
- # remains to read the directive from.
388
- def directive
389
- unless have_more_input
390
- raise MalformedFormatError.new(@pos),
391
- 'format string ended before directive was found'
392
- end
393
- next_char
394
- end
395
- end
396
-
397
- # Given a lexer, parses the tokens it constructs.
398
- # It works, quite simply, by maintaining a stack of nesting levels and
399
- # directives/tokens are added to the current stack level. When a directive
400
- # removes a level of nesting the previous level's last directive gets
401
- # connected, using Directive#connect.
402
- class Parser #:nodoc:
403
- # Create a Parser, given a Lexer, +lexer+.
404
- def initialize(lexer)
405
- @lexer = lexer
406
- end
407
-
408
- # Do the actual parsing of the tokens. Returns a list of the
409
- # top-level tokens to run.
410
- def parse
411
- stacks = [[]]
412
- level = 0
413
- until (token = @lexer.next_token(stacks[level>0?level-1:0].last)).nil?
414
- directive = token[0]
415
- nesting = token[1]
416
- ntop = stacks[level].last.nil? ?
417
- directive : stacks[level].last.join(directive)
418
- stacks[level] << directive
419
- if nesting > 0
420
- stacks.push []
421
- level += 1
422
- elsif nesting < 0
423
- directives = stacks.pop
424
- level -= 1
425
- stacks[level].last.connect directives
426
- end
427
- end
428
- if stacks.size > 1
429
- raise SyntaxError.new(stacks[-2].last.pos), 'unterminated directive'
430
- end
431
- return stacks[0]
432
- end
433
- end
434
-
435
- # Engine for the format Lexer and Parser. Given an input format string and
436
- # an initial State, it lets the Parser create the directives and then
437
- # simply iterates over them, Directive#execute:ing them each.
438
- class Formatter #:nodoc:
439
- # Create a Formatter from a String +format+ and a State +state+.
440
- def initialize(format, state)
441
- @parser, @state = Parser.new(Lexer.new(format)), state
442
- end
443
-
444
- # Parse and run the result.
445
- def run
446
- Format.execute_directives(@state, @parser.parse)
447
- return @state.latest_output.to_s
448
- end
449
- end
450
-
451
- # This module includes format parameter representation classes. These are
452
- # passed to directives when they are created.
453
- module Parameters #:nodoc: all
454
- # Base class from which the sub-classes get their behavior. Every
455
- # parameter should sub-class from this class.
456
- class Parameter
457
- # Create a parameter, found at +pos+ in the input format, and with
458
- # +value+ as its value - if it has one.
459
- def initialize(pos, value = nil)
460
- @pos, @value = pos, value
461
- end
462
-
463
- # Retrieve this parameters value in the given State, using +default+ if
464
- # it is not defined.
465
- def value(state, default)
466
- @value or default
467
- end
468
-
469
- # Position in the input format that this parameter was found.
470
- attr :pos
471
- end
472
-
473
- # Represents the +V+ and +v+ parameters, which retrieve their value from
474
- # the current argument.
475
- class Argument < Parameter
476
- # Retrieve this parameters value by getting the value of the current
477
- # arguments integral value.
478
- def value(state, default)
479
- begin
480
- arg = state.next_arg
481
- rescue => e
482
- e.pos = @pos if e.respond_to?(:pos) and e.pos == -1
483
- raise
484
- end
485
- if arg.nil?
486
- default
487
- elsif arg.respond_to? :to_i
488
- arg.to_i
489
- else
490
- raise ArgumentError.new(@pos),
491
- 'argument not a number or a number string'
492
- end
493
- end
494
- end
495
-
496
- # Represents the <tt>#</tt> parameter, which retrieves the number of
497
- # arguments left to process.
498
- class ArgumentCount < Parameter
499
- # Retrieve this parameters value by getting the number of arguments
500
- # left to process.
501
- def value(state, default)
502
- state.args_left
503
- end
504
- end
505
-
506
- # Parameter used when the parameter was not specified, so use its default
507
- # value.
508
- class Default < Parameter; end
509
-
510
- # Represents integral parameters, specified directly in the input format.
511
- class Integer < Parameter; end
512
-
513
- # Represents character parameters, specified directly in the input
514
- # format.
515
- class Character < Parameter; end
516
- end
517
-
518
- # This module contains all the formatting directives that are defined in
519
- # the Lisp formatting embedded language. The base class for all directives
520
- # is aptly named Directive, and all directive classes should sub-class from
521
- # it.
522
- module Directives #:nodoc: all
523
- # An unknown directive was found in the format string.
524
- class UnknownDirectiveError < SyntaxError; end
525
-
526
- # Represents a string literal in the input format. This is used for
527
- # combining running lengths of characters with a single pseudo-directive.
528
- class Literal < String
529
- # Outputs the string literal this instance represents to the output
530
- # stream.
531
- def execute(state)
532
- state.output self
533
- end
534
-
535
- # If the following directive is also a Literal, its contents is simply
536
- # added to this ones, and returns self. Otherwise the other directive
537
- # is returned.
538
- def join(other)
539
- other.is_a?(Literal) ? self << other : other
540
- end
541
- end
542
-
543
- # Base class for formatting directives. This class makes it easy for
544
- # sub-classes to access the parameters and modifiers that were given to
545
- # it when created.
546
- class Directive
547
- # Given a set of parameters, modifiers, an owning directive if
548
- # available, and a position in the output string, create a new
549
- # Directive.
550
- def initialize(params, modifiers, top, pos)
551
- @params, @modifiers, @pos = params, modifiers, pos
552
- end
553
-
554
- # This method should be overridden in sub-classes. It gets called when
555
- # the directive is to be executed. It does nothing by default.
556
- def execute(state); end
557
-
558
- # Join this directive with the following one, given in +other+. The
559
- # default is to simply return +other+. The only known use for this is
560
- # in SkipWhitespace, where some processing of other is done if it is a
561
- # Literal.
562
- def join(other)
563
- other
564
- end
565
-
566
- # The position at which this directive occurs in the input string.
567
- attr :pos
568
-
569
- protected
570
-
571
- # Read the +param+:th parameter in the Lisp::Format::State +state+,
572
- # using +default+ as a default value if the parameter was not given.
573
- def param(param, state, default)
574
- param < @params.size ? @params[param].value(state, default) : default
575
- end
576
-
577
- # Check if the colon (<tt>:</tt>) modifier was given.
578
- def colon_mod?
579
- modifier? ?:
580
- end
581
-
582
- # Check if the at (<tt>@</tt>) modifier was given.
583
- def at_mod?
584
- modifier? ?@
585
- end
586
-
587
- # Check if the given +modifier+ was given. This method should not
588
- # generally be called, as #colon_mod? and #at_mod? are easier and
589
- # better to use.
590
- def modifier?(modifier)
591
- @modifiers.include? modifier
592
- end
593
-
594
- def arg_error(message)
595
- raise ArgumentError.new(@pos), message
596
- end
597
-
598
- def param_error(pnum, message)
599
- raise ParameterError.new(@params[pnum].pos), message
600
- end
601
- end
602
-
603
- # Super-class for 'printing' directives, namely ~A (Ascii) and ~S
604
- # (SExpression). These directives print, in some sense, their argument
605
- # in a Ruby friendly manner. This means that their argument is either
606
- # converted to a string using Object#to_s or Object#inspect.
607
- class Print < Directive
608
- # All parameters except +inspect+ are simply passed on to
609
- # Directive#initialize. If +inspect+ is true, string arguments are
610
- # inspected as well as all other objects.
611
- def initialize(params, modifiers, top, pos, inspect = false)
612
- super params, modifiers, top, pos
613
- @inspect = inspect
614
- end
615
-
616
- # Output the given argument as it generally prints in Ruby. The full
617
- # form is:
618
- # ~mincol,colinc,minpad,padchar:@[AS]
619
- # with the following interpretations
620
- # [+mincol+ (0)]
621
- # minimum number of columns to output,
622
- # [+colinc+ (1)]
623
- # number of columns to increase by, until +mincol+ is reached,
624
- # [+minpad+ (0)]
625
- # minimum amount of padding to add (added before +mincol+ is
626
- # checked),
627
- # [+padchar+ (?\s)]
628
- # character to pad with,
629
- # [:]
630
- # +nil+ is output as +nil+ (In Lisp, this outputs +nil+ as
631
- # <tt>()</tt>, which isn't generally useful in Ruby. TODO: come up
632
- # with better use for this modifier),
633
- # [@]
634
- # padding is done on the right.
635
- def execute(state)
636
- padmethod = at_mod? ? :rjust : :ljust
637
- mincol = param(0, state, 0)
638
- colinc = param(1, state, 1)
639
- minpad = param(2, state, 0)
640
- padchar = param(3, state, ?\s).chr
641
- arg = state.next_arg
642
- # XXX: this needs checking use .to_s here?
643
- str = (arg.is_a? String and not @inspect) ? arg.to_s : arg.inspect
644
- str = str.send(padmethod, str.length + minpad, padchar)
645
- k = ((mincol - str.length) / colinc.to_f).ceil
646
- if k > 0
647
- str = str.send(padmethod, str.length + colinc * k, padchar)
648
- end
649
- state.output str
650
- end
651
- end
652
-
653
- # Represents the ~A (Ascii) directive.
654
- class Ascii < Print; end
655
-
656
- # Represents the ~S (S-Expression) directive.
657
- class SExpression < Print
658
- # Sets +inspect+ to +true+ in the argument list.
659
- def initialize(*args)
660
- super(*args << true)
661
- end
662
- end
663
-
664
- # Super-class for number printing directives, namely ~D (Decimal, ~B
665
- # (Binary), ~O (Octal), and ~X (Hexadecimal). The only difference
666
- # between these directives is the output radix, which defaults to ten
667
- # (10), which is decimal.
668
- class Number < Directive
669
- # Create a Number directive, using the given output radix +radix+.
670
- def initialize(params, modifiers, top, pos, radix = 10)
671
- super params, modifiers, top, pos
672
- @radix = radix
673
- end
674
-
675
- # Output the given argument using its integral representation. The
676
- # argument must respond to the :to_int message, or else it isn't
677
- # considered an integer. This is the normal way in which Ruby
678
- # operates. The full form is
679
- # ~mincol,padchar,commachar,commainterval:@[DBOX]
680
- # with the following interpretations
681
- # [+mincol+ (0)]
682
- # minimum number of columns to output,
683
- # [+padchar+ (?\s)]
684
- # character to pad with,
685
- # [+commachar+ (,)]
686
- # character to use for number grouping (see : below),
687
- # [+commainterval+ (3)]
688
- # how often to output +commachar+ above,
689
- # [:]
690
- # the number is output, with numbers grouped into +commainterval+
691
- # sized groups of numbers, using +commachar+ as separator,
692
- # [@]
693
- # numbers are always output with sign prepended.
694
- #
695
- # An ArgumentError is raised if the argument does not respond to the
696
- # #to_int message.
697
- def execute(state)
698
- mincol = param(0, state, 0)
699
- padchar = param(1, state, ?\s).chr
700
- commachar = param(2, state, ?,).chr
701
- interval = param(3, state, 3)
702
- arg = state.next_arg
703
- if arg.respond_to? :to_int
704
- num = arg.to_int
705
- str = num.to_s(@radix)
706
- if colon_mod?
707
- str.gsub!(/(\d)(?=(\d{#{interval}})+(?!\d))/, "\\1#{commachar}")
708
- end
709
- str = '+' + str if at_mod? and num >= 0
710
- # puts(str.rjust(mincol, '-'))
711
- state.output str.rjust(mincol, padchar)
712
- else
713
- arg_error 'argument is not an integer'
714
- end
715
- end
716
- end
717
-
718
- # Represents the ~D (Decimal) directive.
719
- class Decimal < Number; end
720
-
721
- # Represents the ~B (Binary) directive.
722
- class Binary < Number
723
- # Set +radix+ to 2.
724
- def initialize(args)
725
- super(*args << 2)
726
- end
727
- end
728
-
729
- # Represents the ~O (Octal) directive.
730
- class Octal < Number
731
- # Set +radix+ to 8.
732
- def initialize(args)
733
- super(*args << 8)
734
- end
735
- end
736
-
737
- # Represents the ~X (Hexadecimal) directive.
738
- class Hexadecimal < Number
739
- # Set +radix+ to 16.
740
- def initialize(args)
741
- super(*args << 16)
742
- end
743
- end
744
-
745
- # Represents the ~R (Radix) directive. This outputs numbers in a given
746
- # radix, or using alternative forms, such as Roman numerals or
747
- # cardinal/ordinal English numbers.
748
- class Radix < Directive
749
- @@names = {
750
- 1 => 'one', 2 => 'two', 3 => 'three',
751
- 4 => 'four', 5 => 'five', 6 => 'six',
752
- 7 => 'seven', 8 => 'eight', 9 => 'nine',
753
- 10 => 'ten', 11 => 'eleven', 12 => 'twelve',
754
- 13 => 'thirteen', 14 => 'fourteen', 15 => 'fifteen',
755
- 16 => 'sixteen', 17 => 'seventeen', 18 => 'eighteen',
756
- 19 => 'nineteen', 20 => 'twenty', 30 => 'thirty',
757
- 40 => 'forty', 50 => 'fifty', 60 => 'sixty',
758
- 70 => 'seventy', 80 => 'eighty', 90 => 'ninety'
759
- }
760
- @@illions = %w[ \
761
- thousand million billion trillion
762
- quadrillion quintillion sextillion septillion
763
- octillion nonillion decillion undecillion
764
- duodecillion tredecillion quattuordecillion quindecillion
765
- sexdecillion septendecillion octodecillion novemdecillion
766
- vigintillion
767
- ]
768
- @@ordinal_ones = %w[
769
- \ first second third fourth
770
- fifth sixth seventh eight ninth
771
- tenth eleventh twelfth thirteenth fourteenth
772
- fifteenth sixteenth seventeenth eighteenth nineteenth
773
- ]
774
- @@ordinal_tens = %w[
775
- \ \ twentieth thirtieth fortieth
776
- fiftieth sixtieth seventieth eightieth ninetieth
777
- ]
778
- @@romans = [
779
- [1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'], [100, 'C'],
780
- [90, 'XC'], [50, 'L'], [40, 'XL'], [10, 'X'], [9, 'IX'],
781
- [5, 'V'], [4, 'IV'], [1, 'I']
782
- ]
783
- @@old_romans = [
784
- [1000, 'M'], [900, 'DCCCC'], [500, 'D'], [400, 'CCCC'],
785
- [100, 'C'], [90, 'LXXXX'], [50, 'L'], [40, 'XXXX'],
786
- [10, 'X'], [9, 'VIIII'], [5, 'V'], [4, 'IIII'],
787
- [1, 'I']
788
- ]
789
-
790
- # Output the given argument using one of a variety of methods. Either
791
- # the argument is output using a specific radix, using cardinal or
792
- # ordinal English numbers, or Roman numerals. The full form is
793
- # ~radix,mincol,padchar,commachar,commainterval:@R
794
- # with the same interpretation as for ~D (Decimal / Number), but using
795
- # the given +radix+ instead. An ArgumentError is raised if the
796
- # argument is not an integer, or, in the case of Roman numerals, if the
797
- # argument is not a Fixnum value.
798
- #
799
- # If none of the parameters are given the output instead depends on the
800
- # combination of modifiers:
801
- # [<em>no modifiers</em>]
802
- # the number is output as a cardinal English number,
803
- # [:]
804
- # the number is output as an ordinal English number,
805
- # [@]
806
- # the number is output as a Roman numeral,
807
- # [:@]
808
- # the number is output as an old Roman numeral.
809
- #
810
- # An ArgumentError is raised if the argument is not an integer.
811
- def execute(state)
812
- if @params.size > 0
813
- # XXX: may be ugly to modify these
814
- n = @params.shift.value
815
- Factory.build(@params, @modifiers, nil, @pos, n).execute(state)
816
- else
817
- arg = state.next_arg
818
- if arg.respond_to? :to_int
819
- conversion = :cardinal
820
- conversion = :ordinal if colon_mod?
821
- conversion = :roman if at_mod?
822
- conversion = :old_roman if colon_mod? and at_mod?
823
- state.output self.send(conversion, arg.to_int)
824
- else
825
- arg_error 'argument is not an integer'
826
- end
827
- end
828
- end
829
-
830
- private
831
-
832
- # Convert the given number to a cardinal English number string.
833
- def cardinal(n)
834
- return 'zero' if n.zero?
835
- out = []
836
- negative = n < 0
837
- n = n.abs
838
- power = 0
839
- while n > 0
840
- before, after = n.divmod(1000)
841
- if after > 0
842
- block = cardinal_100s(after) + (power.zero? ? '' : ' ')
843
- if power < @@illions.size
844
- block << @@illions[power]
845
- else
846
- block << 'times ten to the ' + (power * 3).to_s + ' power'
847
- end
848
- out << block
849
- end
850
- n = before
851
- power += 1
852
- end
853
- negative and out << 'minus'
854
- out.reverse.join(', ')
855
- end
856
-
857
- # Deal with hundreds for cardinals.
858
- def cardinal_100s(n)
859
- out = []
860
- q, r = n.divmod(100)
861
- out << @@names[q] + ' hundred' if q > 0
862
- if r >= 20
863
- out << @@names[r / 10 * 10] + (r%10>0 ? '-' + @@names[r % 10] : '')
864
- elsif r > 0
865
- out << @@names[r]
866
- end
867
- out.join(' ')
868
- end
869
-
870
- # Convert the given number to an ordinal English number string.
871
- def ordinal(n)
872
- return 'zeroth' if n.zero?
873
- out = []
874
- if n < 0
875
- out << 'minus'
876
- n = n.abs
877
- end
878
- hundreds, tens_ones = n.divmod(100)
879
- if hundreds > 0
880
- out << cardinal(hundreds * 100) + (tens_ones.zero? ? 'th' : '')
881
- end
882
- if tens_ones >= 20
883
- tens, ones = tens_ones.divmod(10)
884
- if ones.zero?
885
- out << @@ordinal_tens[tens]
886
- else
887
- out << @@names[tens * 10] + '-' + @@ordinal_ones[ones]
888
- end
889
- elsif tens_ones > 0
890
- out << @@ordinal_ones[tens_ones]
891
- end
892
- out.join(' ')
893
- end
894
-
895
- # Helper method for roman numerals.
896
- def roman_helper(n, table)
897
- unless n.is_a? Fixnum
898
- arg_error 'only Fixnum values can be converted to roman numerals'
899
- end
900
- out = []
901
- table.each do |decimal, roman|
902
- q, r = n.divmod(decimal)
903
- if q > 0
904
- out << roman * q
905
- n = r
906
- end
907
- end
908
- out.join('')
909
- end
910
-
911
- # Convert the given number to a Roman numeral.
912
- def roman(n)
913
- roman_helper(n, @@romans)
914
- end
915
-
916
- # Convert the given number to an old Roman numeral.
917
- def old_roman(n)
918
- roman_helper(n, @@old_romans)
919
- end
920
- end
921
-
922
- # Represents the ~R (Plural) directive. It outputs English plural
923
- # suffixes depending on the given argument.
924
- class Plural < Directive
925
- # Outputs the given argument as an English plural suffix depending on
926
- # the arguments value. If arg is not #eql? to 1, a lowercase +s+ is
927
- # output, else nothing is output. The meaning of modifiers are:
928
- # [:]
929
- # backs up one argument before checking,
930
- # [@]
931
- # outputs +y+ or +ies+ instead of +s+ and _nothing_,
932
- # [:@]
933
- # a combination of the two above.
934
- def execute(state)
935
- arg = colon_mod? ? state.previous_arg : state.next_arg
936
- if at_mod?
937
- state.output((arg.eql? 1) ? 'y' : 'ies')
938
- else
939
- state.output(?s) unless arg.eql? 1
940
- end
941
- end
942
- end
943
-
944
- # Represents the ~C (Character) directive. It outputs a character
945
- # argument in one of several different representations depending on given
946
- # modifiers.
947
- # TODO: UNICODE this shit.
948
- class Character < Directive
949
- # Outputs the given argument in one of the ways described in the table
950
- # below depending on given modifiers:
951
- # [<tt>no modifiers</tt>]
952
- # simply output the character as a normal character,
953
- # [:]
954
- # spells out control-bits on the input character, such as
955
- # Control-Meta-X,
956
- # [@]
957
- # outputs the character in such as way that it can be read in by the
958
- # Ruby interpreter again as input, using the ?_char_ syntax,
959
- # [:@]
960
- # has the same effect as : only. The CLTL2 suggests that this
961
- # outputs unusual shift keys in a manner to make it easy to locate
962
- # them on a keyboard, but since no such standard has arisen, this is
963
- # not done.
964
- def execute(state)
965
- arg = state.next_arg
966
- arg_error 'argument not a Fixnum' unless arg.is_a? Fixnum
967
- ch = arg & 0xff
968
- if colon_mod?
969
- state.output('Control-') if (ch & 0x7f) < 0x1f
970
- state.output('Meta-') if ch >= 0x7f
971
- state.output(ch & 0x7f | 0x60)
972
- elsif at_mod?
973
- state.output('?' + convert_char(ch))
974
- else
975
- state.output ch
976
- end
977
- end
978
-
979
- private
980
-
981
- # Convert a character to a escaped character string if possible.
982
- # XXX: This should perhaps only use \x or \NNN syntax
983
- def convert_char(ch)
984
- if [?\\, ?\n, ?\t, ?\r, ?\f, ?\v, ?\a, ?\e, ?\b, ?\s].include? ch
985
- ch.chr.inspect[1..-2]
986
- else
987
- if (ch & 0x7f) < 0x1f
988
- "\\C-" + convert_char(ch | 0x60)
989
- elsif ch >= 0x7f
990
- "\\M-" + convert_char(ch & 0x7f | 0x60)
991
- else
992
- ch
993
- end
994
- end
995
- end
996
- end
997
-
998
- # Represents the ~F (Fixed-format floating-point) directive. This
999
- # outputs floating point values with various kinds of padding and such.
1000
- class FFFP < Directive
1001
- # Outputs the given argument using a floating-point representation.
1002
- # The full form is
1003
- # ~w,d,k,overflowchar,padchar@F
1004
- # with the following interpretations
1005
- # [+w+ (+nil+)]
1006
- # if non-+nil+, the output will be exactly +w+ characters long,
1007
- # [+d+ (+nil+)]
1008
- # if non-+nil+, this is the number of digits output after the decimal
1009
- # point (<tt>.</tt>),
1010
- # [+k+ (0)]
1011
- # scaling factor - the number is first scaled using this value,
1012
- # [+overflowchar+ (+nil+)]
1013
- # if non-+nil+, this character is used when this directive would
1014
- # produce output longer than that specified with the +w+ directive,
1015
- # [+padchar+ (?\s)]
1016
- # character to pad with if +w+ is non-nil and output isn't wide
1017
- # enough yet,
1018
- # [@]
1019
- # numbers are always output with sign prepended.
1020
- #
1021
- # An ArgumentError is raised if the argument is not a number or a
1022
- # string that can be converted to a number.
1023
- def execute(state)
1024
- width = param(0, state, nil)
1025
- digits = param(1, state, nil)
1026
- scale = param(2, state, 0)
1027
- overflowchar = param(3, state, nil)
1028
- padchar = param(4, state, ?\s)
1029
- arg = state.next_arg
1030
- if arg.respond_to? :to_f
1031
- num = arg.to_f * (10 ** scale)
1032
- str = (at_mod? and num >= 0) ? '+' : ''
1033
- str = sign + (digits.nil? ? num.to_s : sprintf("%.#{digits}f",num))
1034
- str = sign + sprintf("%.#{$1}f", num) if str =~ /e-([0-9]+)$/
1035
- unless width.nil?
1036
- if not digits.nil? and width == digits + 1
1037
- str.sub!(/^([+-]?)0\./, '\1.')
1038
- end
1039
- str = str.rjust(width, padchar.chr) if str.length < width
1040
- if str.length > width and digits.nil?
1041
- prec = width - (str.index(/\./) + 1)
1042
- str = sign + sprintf("%#.#{prec}f", num)
1043
- end
1044
- str.sub!(/\.$/, '') if str.length > width and digits.nil?
1045
- if str.length > width and not overflowchar.nil?
1046
- str = overflowchar.chr * width
1047
- end
1048
- end
1049
- state.output str
1050
- elsif arg.respond_to? :to_int
1051
- state.push_back_arg
1052
- parameters = @params[0].nil? ? [] : [@params[0]]
1053
- Factory.build(parameters, [], ?D, nil, @pos).execute(state)
1054
- else
1055
- arg_error 'argument is not a number or a number string'
1056
- end
1057
- end
1058
- end
1059
-
1060
- # Represents the ~E (Exponential floating-point) directive. This outputs
1061
- # floating point values in what is known as exponential or scientific
1062
- # floating point format, such as 1.0e+3 for 1000.
1063
- class ExpFP < Directive
1064
-
1065
- # Outputs the argument using exponential floating-point format. The
1066
- # full form is
1067
- # ~w,d,e,k,overflowchar,padchar,exponentchar@E
1068
- # with the following interpretations
1069
- # [+w+ (+nil+)]
1070
- # if non-+nil+, the output will be exactly +w+ characters long,
1071
- # [+d+ (+nil+)]
1072
- # if non-+nil+, this is the number of digits output after the decimal
1073
- # point (<tt>.</tt>),
1074
- # [+e+ (+nil+)]
1075
- # if non-+nil+, the exponent part of the output will be exactly +e+
1076
- # characters long,
1077
- # [+k+ (1)]
1078
- # scaling factor - the number is first scaled using this value,
1079
- # [+overflowchar+ (+nil+)]
1080
- # if non-+nil+, this character is used when this directive would
1081
- # produce output longer than that specified with the +w+ directive,
1082
- # [+padchar+ (?\s)]
1083
- # character to pad with if +w+ is non-nil and output isn't wide
1084
- # enough yet,
1085
- # [+exponentchar+ (?e)]
1086
- # character to use for exponent divider,
1087
- # [@]
1088
- # numbers are always output with sign prepended.
1089
- #
1090
- # An ArgumentError is raised if the argument is not a number or a
1091
- # string that can be converted to a number.
1092
- def execute(state)
1093
- width = param(0, state, nil)
1094
- digits = param(1, state, nil)
1095
- edigits = param(2, state, nil)
1096
- scale = param(3, state, 1)
1097
- overflowchar = param(4, state, nil)
1098
- padchar = param(5, state, ?\s).chr
1099
- exponentchar = param(6, state, ?e).chr
1100
- arg = state.next_arg
1101
- if arg.respond_to? :to_f
1102
- num = arg.to_f
1103
- sign = (num >= 0 and at_mod?) ? '+' : ''
1104
- exp = Math.log10(num.abs).floor - (scale - 1)
1105
- exp_str = exponentchar + (exp >= 0 ? '+' : '-') +
1106
- (edigits.nil? ? exp.abs.to_s : exp.abs.to_s.rjust(edigits, '0'))
1107
- if digits.nil? and width.nil? and edigits.nil?
1108
- str = sign + (num * (10 ** -exp)).to_s + exp_str
1109
- else
1110
- if digits.nil?
1111
- prec = width - sign.length -
1112
- ((num * (10 ** -exp)).to_s.index(/\./) + 1) - exp_str.length
1113
- str = sign + sprintf("%#.#{prec}f", num) + exp_str
1114
- else
1115
- if scale > 0
1116
- if scale < digits + 2
1117
- prec = digits - scale + 1
1118
- else
1119
- param_error 3, 'scale must be < digits + 2'
1120
- end
1121
- else
1122
- prec = -scale + (digits + scale)
1123
- end
1124
- str = sign + sprintf("%#.#{prec}f", num * (10**-exp)) + exp_str
1125
- end
1126
- unless width.nil?
1127
- if scale <= 0 and str.length > width
1128
- str.sub!(/^([+-]?)0\./, '\1.')
1129
- end
1130
- str = str.rjust(width, padchar) if str.length < width
1131
- end
1132
- unless width.nil? and overflowchar.nil?
1133
- if not edigits.nil? and (exp_str.length - 2) > edigits
1134
- str = overflowchar.chr * width
1135
- end
1136
- end
1137
- end
1138
- state.output str
1139
- elsif arg.respond_to? :to_int
1140
- state.push_back_arg
1141
- parameters = @params[0].nil? ? [] : [@params[0]]
1142
- Factory.build(parameters, [], ?D, nil, @pos).execute(state)
1143
- else
1144
- arg_error 'argument is not a number or a number string'
1145
- end
1146
- end
1147
- end
1148
-
1149
- # Represents the ~G (General floating-point) directive. This outputs its
1150
- # argument using either a format like ~F or ~E depending upon given
1151
- # parameters and the magnitude of the argument.
1152
- class GeneralFP < Directive
1153
- # Outputs the argument using exponential floating-point format. The
1154
- # algorithm to decide what format to use looks something like
1155
- # let
1156
- # 10^n-1 <= arg < 10^n, or n = 0 if arg = 0,
1157
- # ee = e + 2, or ee = 4 if e undefined,
1158
- # ww = w - ee, or ww = nil if w undefined,
1159
- # dd = d - n, or dd = max(q, min(n, 7)) where q = number of
1160
- # characters necessary to print arg without loss of information
1161
- # in
1162
- # 0 <= dd <= d, and print using
1163
- # ~ww,dd,,overflowchar,padcharF~ee@T
1164
- # or print using
1165
- # ~w,d,e,k,overflowchar,padchar,exponentcharG
1166
- # Use of the @ modifier in the directives above depends on if it was
1167
- # passed to ~G in the first place.
1168
- #
1169
- # The full form is
1170
- # ~w,d,e,k,overflowchar,padchar,exponentchar@G
1171
- # with the following interpretations
1172
- # [+w+ (+nil+)]
1173
- # if non-+nil+, the output will be exactly +w+ characters long,
1174
- # [+d+ (+nil+)]
1175
- # if non-+nil+, this is the number of digits output after the decimal
1176
- # point (<tt>.</tt>),
1177
- # [+e+ (+nil+)]
1178
- # if non-+nil+, the exponent part of the output will be exactly +e+
1179
- # characters long,
1180
- # [+k+ (1)]
1181
- # scaling factor - the number is first scaled using this value,
1182
- # [+overflowchar+ (+nil+)]
1183
- # if non-+nil+, this character is used when this directive would
1184
- # produce output longer than that specified with the +w+ directive,
1185
- # [+padchar+ (?\s)]
1186
- # character to pad with if +w+ is non-nil and output isn't wide
1187
- # enough yet,
1188
- # [+exponentchar+ (?e)]
1189
- # character to use for exponent divider,
1190
- # [@]
1191
- # numbers are always output with sign prepended.
1192
- #
1193
- # An ArgumentError is raised if the argument is not a number or a
1194
- # string that can be converted to a number.
1195
- def execute(state)
1196
- width = param(0, state, nil)
1197
- digits = param(1, state, nil)
1198
- edigits = param(2, state, nil)
1199
- scale = param(3, state, 1)
1200
- overflowchar = param(4, state, nil)
1201
- padchar = param(5, state, ?\s)
1202
- exponentchar = param(6, state, nil)
1203
- arg = state.next_arg
1204
- if arg.respond_to? :to_f
1205
- num = arg.to_f
1206
- n = num == 0.0 ? 0 : Math.log10(num.abs).floor + 1
1207
- ee = edigits.nil? ? 4 : edigits + 2
1208
- ww = w.nil? ? nil : w - ee
1209
- if d.nil?
1210
- q = num.to_s.length
1211
- d = Math.max(q, Math.min(n, 7))
1212
- end
1213
- dd = d - n
1214
- if 0 <= dd and dd <= d
1215
- state.push_back_arg
1216
- parameters = [
1217
- Parameters::Integer.new(@pos, ww),
1218
- Parameters::Integer.new(@pos, dd),
1219
- Parameters::Default.new(@pos),
1220
- overflowchar.nil? ?
1221
- Parameters::Default.new(@pos) :
1222
- Parameters::Character.new(@pos, overflowchar),
1223
- padchar.nil? ?
1224
- Parameters::Default.new(@pos) :
1225
- Parameters::Character.new(@pos, padchar),
1226
- ]
1227
- Factory.build(parameters, @modifiers, ?F, nil,
1228
- @pos).execute(state)
1229
- Factory.build([Parameters::Integere.new(@pos, ee)], @modifiers,
1230
- ?T, nil, @pos).execute(state)
1231
- else
1232
- state.push_back_arg
1233
- Factory.build(@params, @modifiers, ?E, nil, @pos).execute(state)
1234
- end
1235
- elsif arg.respond_to? :to_int
1236
- state.push_back_arg
1237
- parameters = @params[0].nil? ? [] : [@params[0]]
1238
- Factory.build(parameters, [], ?D, nil, @pos).execute(state)
1239
- else
1240
- arg_error 'argument is not a number or a number string'
1241
- end
1242
- end
1243
- end
1244
-
1245
- # Represents the ~$ (Dollars floating-point) directive. This directive
1246
- # outputs a floating point argument
1247
- class DollarFP < Directive
1248
- # Outputs the argument using a floating point format that suits dollar
1249
- # values. The full form is
1250
- # ~d,n,w,padchar:@$
1251
- # with the following interpretations
1252
- # [+d+ (2)]
1253
- # number of digits to print after the decimal point (<tt>.</tt>),
1254
- # [+n+ (1)]
1255
- # number of digits to print before the decimal point (<tt>.</tt>),
1256
- # [+w+ (0)]
1257
- # minimum width of the field,
1258
- # [+padchar+ (?\s)]
1259
- # character used to produce right-adjusting padding with,
1260
- # [:]
1261
- # the sign of the value is output before any padding,
1262
- # [@]
1263
- # numbers are always output with sign prepended.
1264
- def execute(state)
1265
- digits = param(0, state, 2)
1266
- idigits = param(1, state, 1)
1267
- width = param(2, state, 0)
1268
- padchar = param(3, state, ?\s)
1269
- arg = state.next_arg
1270
- if arg.respond_to :to_int
1271
- sign = (arg >= 0 ? (at_mod? ? '+' : '') : '-')
1272
- str = sprintf("%0#{idigits + digits + 1}.#{digits}f", arg.abs)
1273
- if colon_mod?
1274
- str = sign + str.rjust(width, padchar.chr)
1275
- else
1276
- str = (sign + str).rjust(width, padchar.chr)
1277
- end
1278
- state.output str
1279
- elsif arg.respond_to? :to_i
1280
- state.push_back_arg
1281
- parameters = @params[2].nil? ? [] : [@params[2]]
1282
- Factory.build(?D, parameters, [], nil, @pos).execute(state)
1283
- else
1284
- arg_error 'argument is not a number or a number string'
1285
- end
1286
- end
1287
- end
1288
-
1289
- # Parent class for character outputting directives, such as ~% (NewLine),
1290
- # ~| (NewPage), and ~~ (Tilde), which output the same character a given
1291
- # number of times.
1292
- class CharacterDirective < Directive
1293
- # Create and set the character to use to +ch+.
1294
- def initialize(params, modifiers, top, pos, ch)
1295
- super params, modifiers, top, pos
1296
- @ch = ch
1297
- end
1298
-
1299
- # Outputs the specific character (depending on the
1300
- # sub-classing directive) a given number of times. The full form is
1301
- # ~n[%|~]
1302
- # with the following interpretations
1303
- # [+n+ (1)]
1304
- # number of times to output the specific character.
1305
- def execute(state)
1306
- n = param(0, state, 1)
1307
- state.output(@ch.chr * n)
1308
- end
1309
- end
1310
-
1311
- # Represents the ~% (Newline) directive. This outputs a new-line (?\n)
1312
- # character a given number of times.
1313
- class NewLine < CharacterDirective
1314
- # Set the output character to a new-line (?\n).
1315
- def initialize(*args)
1316
- super(*args << ?\n)
1317
- end
1318
- end
1319
-
1320
- # Represents the ~% (Freshline) directive. This outputs a new-line (?\n)
1321
- # character a given number of times, depending on if it is already at the
1322
- # first output column or not.
1323
- class FreshLine < Directive
1324
- # Outputs a new-line character a given number of times depending on if
1325
- # it is already at the first output column or not. If it is it outputs
1326
- # it the given number minus one (1). The full form is
1327
- # ~n&
1328
- # with the following interpretations
1329
- # [+n+ (1)]
1330
- # number of times to output the specific character (maybe minus one).
1331
- def execute(state)
1332
- n = param(0, state, 1)
1333
- return if n.zero?
1334
- state.output(?\n) if state._col > 0
1335
- (n - 1).times do state.output(?\n) end
1336
- end
1337
- end
1338
-
1339
- # Represents the ~| (Newpage) directive. This outputs a new-page (?\f)
1340
- # character a given number of times.
1341
- class NewPage < CharacterDirective
1342
- # Set the output character to a new-page (?\f).
1343
- def initialize(*args)
1344
- super(*args << ?\f)
1345
- end
1346
- end
1347
-
1348
- # Represents the ~~ (Tilde) directive. This outputs a tilde (~)
1349
- # character a given number of times.
1350
- class Tilde < CharacterDirective
1351
- # Set the output character to a tilde (~).
1352
- def initialize(*args)
1353
- super(*args << ?~)
1354
- end
1355
- end
1356
-
1357
- # Represents the ~?\n (Real new-line) directive. This is used to skip
1358
- # the new-line and any following white-space characters in the input
1359
- # format. This is useful in long format strings, where the string has to
1360
- # be split into multiple lines without ruining indentation.
1361
- class SkipWhitespace < Directive
1362
- # Join this directive with the following. This removes any new-line
1363
- # and/or following white-space from the directive that follows, if it
1364
- # is a string Literal.
1365
- def join(other)
1366
- return other if not other.is_a?(FormatLiteral) or colon_mod?
1367
- other.sub!(/^[\s\t]+/, '')
1368
- other[0,0] = '\n' if at_mod?
1369
- other
1370
- end
1371
- end
1372
-
1373
- # Represents the ~T (Tabulate) directive. This tabulates to a given
1374
- # position in the output using white-space.
1375
- class Tabulate < Directive
1376
- # The output is spaced over to a given position, depending on where it
1377
- # already is and parameters given to this directive.
1378
- # ~colnum,colinc:@T
1379
- # with the following interpretations
1380
- # [+colnum+ (1)]
1381
- # column to move to,
1382
- # [+colinc+ (1)]
1383
- # number of columns to space over by if already at or beyond
1384
- # +colnum+,
1385
- # [@]
1386
- # performs relative tabulation. +colnum+ is treated as the column to
1387
- # begin from (spacing over to it if necessary), and then moves over
1388
- # to a column that is the smallest multiple of +colinc+.
1389
- #
1390
- # If output is already at or beyond +colnum+, then output is spaced
1391
- # over to column <em>colnum + k * colinc</em>, for the smallest _k_
1392
- # possible. An example of the @ modifiers effect is for the instance
1393
- # of the ~T directive ~3,8@T, which moves over three columns, and then
1394
- # to the first eight-sized tab-stop.
1395
- def execute(state)
1396
- colnum = param(0, state, 1)
1397
- colinc = param(1, state, 1)
1398
- padchar = ?\s.chr
1399
- if at_mod?
1400
- state.output(padchar * colnum)
1401
- state.output(padchar * (colinc - state.col % colinc))
1402
- else
1403
- if state.col < colnum
1404
- state.output(padchar * (colnum - state.col))
1405
- elsif colinc > 0
1406
- k = 1 + (state.col - colnum) / colinc
1407
- state.output(padchar * ((colnum + k * colinc) - state.col))
1408
- end
1409
- end
1410
- end
1411
- end
1412
-
1413
- # Represents the ~* (Argument jumping) directive. This moves arbitrarily
1414
- # amongst the arguments passed to the formatting engine.
1415
- class ArgJump < Directive
1416
- # Moves backwards or forwards, relative or absolute, among the
1417
- # formatting arguments. The full form is
1418
- # ~n:@*
1419
- # with the following interpretations
1420
- # [+n+ (1)]
1421
- # the amount of arguments to move or the argument to move to if
1422
- # moving to an absolute position, indexed from zero (0),
1423
- # [:]
1424
- # move backwards +n+ arguments
1425
- # [@]
1426
- # move to the +n+:th argument, using zero-based indexing (absolute).
1427
- def execute(state)
1428
- n = param(0, state, 1)
1429
- state.args_move(colon_mod? ? -n : n, !at_mod?)
1430
- end
1431
- end
1432
-
1433
- # Represents the ~? (Indirection) directive. This takes the two
1434
- # following arguments and formats them, using the first as the formatting
1435
- # string, and the second as its arguments and inserts it into the output.
1436
- class Indirection < Directive
1437
- # Uses the next argument as a formatting string and then, depending on
1438
- # modifiers specified, uses one of a set of different arguments as
1439
- # input to this formatting. The full form is
1440
- # ~@?
1441
- # with the following interpretations
1442
- # [@]
1443
- # the formatting string is, much like a macro, inserted into the
1444
- # formatting stream, so to speak, and consumes arguments and so on
1445
- # from the current state, instead, as per default, consuming a second
1446
- # argument and reading arguments from it.
1447
- def execute(state)
1448
- if at_mod?
1449
- formatter = Formatter.new(state.next_arg, state)
1450
- else
1451
- format = state.next_arg
1452
- state = State.new(state.next_arg, state.latest_output)
1453
- formatter = Formatter.new(format, state)
1454
- end
1455
- formatter.run
1456
- end
1457
- end
1458
-
1459
- # Represents the ~( (Begin case-conversion) directive. Everything
1460
- # contained within it and its matching pair ~) (End case-conversion)
1461
- # directive is subject to case conversion, such as upcasing or
1462
- # capitalization.
1463
- class BeginCaseConversion < Directive
1464
- # Outputs the contained output case converted using some method that
1465
- # depends on the combination of modifiers given to this directive. The
1466
- # full form is
1467
- # ~:@(
1468
- # with the following interpretations
1469
- # [<em>no modifiers</em>]
1470
- # output is downcased,
1471
- # [:]
1472
- # every word is capitalized in the output,
1473
- # [@]
1474
- # the first word is capitalized in the output,
1475
- # [:@]
1476
- # output is upcased.
1477
- def execute(state)
1478
- conv = :DOWN
1479
- conv = :CAP if colon_mod?
1480
- conv = :CAP_FIRST if at_mod?
1481
- conv = :UP if colon_mod? and at_mod?
1482
- state.case_conv = conv
1483
- state.push_output
1484
- end
1485
- end
1486
-
1487
- # Represents the ~) (End case-conversion) directive. Everything
1488
- # contained within it and its matching pair ~( (Begin case-conversion)
1489
- # directive is subject to case conversion, such as upcasing or
1490
- # capitalization.
1491
- class EndCaseConversion < Directive
1492
- # This does the actual work for the ~( directive, in that it collects
1493
- # all the output between its matching directive (~() and outputs it
1494
- # using one of the conversions set up by the ~( (BeginCaseConversion)
1495
- # directive.
1496
- def execute(state)
1497
- output = state.pop_output.to_s
1498
- state.output(
1499
- case state.case_conv
1500
- when :DOWN
1501
- output.downcase
1502
- when :CAP
1503
- output.gsub(/\w+/) do |w| w.capitalize end
1504
- when :CAP_FIRST
1505
- output.capitalize
1506
- when :UP
1507
- output.upcase
1508
- end
1509
- )
1510
- end
1511
- end
1512
-
1513
- # Represents the ~[ (Begin conditional expression) directive. This is
1514
- # useful to choose among a set of directives depending on arguments and
1515
- # numbers.
1516
- class BeginConditional < Directive
1517
- # Set up some variables and basically pass on to super.
1518
- def initialize(*args)
1519
- super(*args)
1520
- if (colon_mod? or at_mod?) and @params.size > 0
1521
- param_error 0, 'no parameters allowed together with' +
1522
- ': and/or @ modifiers'
1523
- end
1524
- @clauses = []
1525
- @default = -1
1526
- end
1527
-
1528
- # Process one of the given clauses, depending on the numeric value of
1529
- # the given argument, or a specified parameter. The full form is
1530
- # ~n[clause0~;clause1~:;clause2~]
1531
- # or
1532
- # ~:[clause0~;clause1~]
1533
- # or
1534
- # ~@[clause0~]
1535
- # with the following interpretations
1536
- # [+n+ (nil)]
1537
- # if given, this value will be used to choose a clause instead of
1538
- # reading an arguments value. This is only useful if +n+ is in fact
1539
- # the arguments left parameter (<tt>#</tt>). An error is raised if
1540
- # this argument does not #respond_to? :to_int,
1541
- # [:]
1542
- # instead of choosing a clause by number, the argument is tested as a
1543
- # boolean value, and if false, then first clause is executed, else
1544
- # the second one is,
1545
- # [@]
1546
- # instead of choosing a clause by number, the argument is tested as a
1547
- # boolean value, and if true, the single clause is executed.
1548
- def execute(state)
1549
- test = state.next_arg if colon_mod? or at_mod?
1550
- if colon_mod?
1551
- c = test ? 1 : 0
1552
- elsif at_mod?
1553
- if test
1554
- state.push_back_arg
1555
- c = 0
1556
- end
1557
- else
1558
- n = param(0, state, nil)
1559
- if n.nil?
1560
- arg = state.next_arg
1561
- if arg.respond_to? :to_int
1562
- n = arg.to_int
1563
- else
1564
- arg_error 'argument is not an integral value'
1565
- end
1566
- end
1567
- if n < @clauses.size
1568
- c = n
1569
- elsif @default != -1
1570
- c = @default
1571
- end
1572
- end
1573
- Format.execute_directives(state, @clauses[c]) unless c.nil?
1574
- end
1575
-
1576
- # Connect a set of directives to this conditional directive.
1577
- # A SyntaxError is raised if multiple clauses have been marked as
1578
- # 'default', or if too many clauses have been specified for a given
1579
- # set of modifiers.
1580
- def connect(directives)
1581
- @clauses = []
1582
- clause = []
1583
- directives.each do |d|
1584
- if d.is_a? ClauseSeparator
1585
- @clauses << clause
1586
- clause = []
1587
- if d.colon_mod?
1588
- if @default == -1
1589
- @default = @clauses.size
1590
- else
1591
- raise SyntaxError.new(d.pos),
1592
- 'default clause has already been set'
1593
- end
1594
- end
1595
- elsif d.is_a? EndConditional
1596
- @clauses << clause
1597
- break
1598
- else
1599
- clause << d
1600
- end
1601
- end
1602
- must = 'two' if colon_mod? and @clauses.size != 2
1603
- must = 'one' if at_mod? and @clauses.size != 1
1604
- unless must.nil?
1605
- raise SyntaxError.new(@pos), "must specify exactly #{must} clauses"
1606
- end
1607
- end
1608
- end
1609
-
1610
- # Represents the ~; (Clause separator) directive. It separates clauses
1611
- # inside conditional and justifying directives (~[...~] and ~<...~>). It
1612
- # may not appear anywhere else.
1613
- class ClauseSeparator < Directive
1614
- # Check that +top+ is either a BeginConditional or a
1615
- # BeginJustification. If not, a SyntaxError is raised.
1616
- def initialize(params, modifiers, top, pos)
1617
- super params, modifiers, top, pos
1618
- unless top.is_a? BeginConditional
1619
- raise SyntaxError.new(@pos),
1620
- '~; directive must be contained within a conditional (~[...~])' +
1621
- ' or a justification (~<...~>)'
1622
- end
1623
- end
1624
- end
1625
-
1626
- # Represents the ~] (End conditional expression) directive. It ends a
1627
- # conditional expression, and is an error if it appears without a
1628
- # matching opening conditional expression.
1629
- class EndConditional < Directive
1630
- def initialize(params, modifiers, top, pos)
1631
- super params, modifiers, top, pos
1632
- unless top.is_a? BeginConditional
1633
- raise SyntaxError.new(@pos), '~) without matching ~('
1634
- end
1635
- end
1636
- end
1637
-
1638
- # Represents the ~{ (Begin iteration) directive. A given set of
1639
- # directives is used iteratively over a set of arguments (depends on the
1640
- # modifiers specified) a given number of times, or until it runs out of
1641
- # arguments.
1642
- class BeginIteration < Directive
1643
- # Create and set up some private variables
1644
- def initialize(params, modifiers, top, pos)
1645
- super params, modifiers, top, pos
1646
- @directives = []
1647
- end
1648
-
1649
- # Iteratively run the contained directives using sets of arguments
1650
- # depending upon what modifiers where given. The full form is
1651
- # ~n:@{...~}
1652
- # with the following interpretations
1653
- # [n]
1654
- # maximum number of times the iteration should be performed,
1655
- # [<em>no modifiers</em>]
1656
- # the iteration reads an argument, which must be an Array, and uses
1657
- # it as the arguments to the contained directives,
1658
- # [:]
1659
- # the iteration reads an argument, which must be an Array
1660
- # containing sub-arrays, and uses the sub-arrays as the arguments to
1661
- # the contained directives, moving to the next one on each iteration,
1662
- # [@]
1663
- # the iteration uses the rest of the arguments as arguments to the
1664
- # contained directives,
1665
- # [:@]
1666
- # the iteration uses the rest of the arguments, which must be Arrays,
1667
- # using each Array as the set of arguments to the contained
1668
- # directives.
1669
- def execute(state)
1670
- n = param(0, state, nil)
1671
- return if not n.nil? and n == 0
1672
- if colon_mod? and at_mod?
1673
- execute_sets(n, state, false)
1674
- elsif at_mod?
1675
- execute_args(n, nil, state, false)
1676
- elsif colon_mod?
1677
- execute_sets(n, state, true)
1678
- else
1679
- execute_args(n, state.next_arg, state, true)
1680
- end
1681
- end
1682
-
1683
- # Connect a set of directives to this iteration directive.
1684
- def connect(directives)
1685
- directives.pop
1686
- @directives = directives
1687
- end
1688
-
1689
- private
1690
-
1691
- # Execute the iteration using sub-lists either from the following
1692
- # argument or from the remaining arguments.
1693
- def execute_sets(n, state, use_next_arg)
1694
- if use_next_arg
1695
- sets = state.next_arg
1696
- arg_error 'argument not an array' unless sets.is_a? Array
1697
- sets = sets[0...n] unless n.nil?
1698
- else
1699
- m = n
1700
- sets = []
1701
- while state.args_left > 0 and (m.nil? or m > 0)
1702
- sets << state.next_arg
1703
- m -= 1 unless m.nil?
1704
- end
1705
- end
1706
- sets.each do |set|
1707
- execute_args(nil, set, state, true)
1708
- end
1709
- end
1710
-
1711
- # Execute the iteration while there are arguments left and we haven't
1712
- # reached our limit of iterations.
1713
- def execute_args(n, args, state, use_new_state)
1714
- if use_new_state
1715
- arg_error 'argument not an array' unless args.is_a? Array
1716
- state = State.new(args, state.latest_output)
1717
- end
1718
- while state.args_left > 0 and (n.nil? or n > 0)
1719
- Format.execute_directives(state, @directives)
1720
- n -= 1 unless n.nil?
1721
- end
1722
- end
1723
- end
1724
-
1725
- # Represents the ~} (End iteration) directive. See BeginIteration for an
1726
- # explanation of how these directives work together.
1727
- class EndIteration < Directive
1728
- # Raise a SyntaxError if +top+ is not a BeginIteration.
1729
- def initialize(params, modifiers, top, pos)
1730
- super params, modifiers, top, pos
1731
- unless top.is_a? BeginIteration
1732
- raise SynaxError, '~} without matching ~{'
1733
- end
1734
- end
1735
- end
1736
-
1737
- # Factory for directives. Formatting directives should be created using
1738
- # singleton methods in this class.
1739
- class Factory
1740
- @@directives = {
1741
- ?A => [Ascii, 4, [], 0],
1742
- ?S => [SExpression, 4, [], 0],
1743
- ?D => [Decimal, 4, [], 0],
1744
- ?B => [Binary, 4, [], 0],
1745
- ?O => [Octal, 4, [], 0],
1746
- ?X => [Hexadecimal, 4, [], 0],
1747
- ?R => [Radix, 5, [], 0],
1748
- ?P => [Plural, 0, [], 0],
1749
- ?C => [Character, 0, [], 0],
1750
- ?F => [FFFP, 5, [?:], 0],
1751
- ?E => [ExpFP, 7, [?:], 0],
1752
- ?G => [GeneralFP, 7, [?:], 0],
1753
- ?$ => [DollarFP, 4, [], 0],
1754
- ?% => [NewLine, 1, [?:, ?@], 0],
1755
- ?& => [FreshLine, 1, [?:, ?@], 0],
1756
- ?| => [NewPage, 1, [?:, ?@], 0],
1757
- ?~ => [Tilde, 0, [?:, ?@], 0],
1758
- ?\n => [SkipWhitespace, 0, [[?:, ?@]], 0],
1759
- ?T => [Tabulate, 2, [], 0],
1760
- ?* => [ArgJump, 1, [[?:, ?@]], 0],
1761
- ?? => [Indirection, 0, [?:], 0],
1762
- ?( => [BeginCaseConversion, 0, [], 0],
1763
- ?) => [EndCaseConversion, 0, [?:, ?@], 0],
1764
- ?[ => [BeginConditional, 1, [[?:, ?@]], 1],
1765
- ?; => [ClauseSeparator, 0, [?@], 0],
1766
- ?] => [EndConditional, 0, [?@], -1],
1767
- ?{ => [BeginIteration, 1, [], 1],
1768
- ?} => [EndIteration, 0, [?:, ?@], -1],
1769
- }
1770
-
1771
- # Create a directive given a set of paramaters, modifiers, the
1772
- # character representing the directive, possible owning directive, and
1773
- # position in the format string.
1774
- def self.build(params, modifiers, directive, top, pos)
1775
- @@directives.include? directive or
1776
- raise UnknownDirectiveError.new(pos), 'unknown format directive'
1777
- idx = directive.chr.upcase[0]
1778
- params.size <= @@directives[idx][1] or
1779
- raise ParameterError.new(pos),
1780
- 'too many parameters given, expected no more than ' +
1781
- @@directives[idx][1].to_s
1782
- @@directives[idx][2].each do |illegal|
1783
- if illegal.is_a? Array and (modifiers == illegal or
1784
- modifiers.reverse == illegal)
1785
- raise ModifierError.new(pos),
1786
- 'cannot specify both : and @ modifiers'
1787
- elsif modifiers.include? illegal
1788
- raise ModifierError.new(pos),
1789
- 'cannot specify the ' + mod.chr + 'modifier'
1790
- end
1791
- end
1792
- return [
1793
- @@directives[idx][0].new(params, modifiers, top, pos),
1794
- @@directives[idx][3]
1795
- ]
1796
- end
1797
- end #class Factory
1798
-
1799
- end #module Directives
1800
-
1801
- private
1802
-
1803
- # Execute a set of directives in a given state.
1804
- def self.execute_directives(state, directives)
1805
- directives.each do |directive|
1806
- begin
1807
- directive.execute state
1808
- rescue => e
1809
- e.pos = d.pos if e.respond_to?(:pos) and e.pos == -1
1810
- raise
1811
- end
1812
- end
1813
- end
1814
-
1815
- end #module Format
1816
-
1817
- end #module Lisp
1818
-
1819
-
1820
-
1821
- # _____ _
1822
- # |_ _|__ ___| |_
1823
- # | |/ _ \/ __| __|
1824
- # | | __/\__ \ |_
1825
- # |_|\___||___/\__|
1826
- #
1827
-
1828
- =begin test
1829
-
1830
- require 'test/unit'
1831
-
1832
- class FormatTest < Test::Unit::TestCase
1833
-
1834
- def test_decimal
1835
- assert( Lisp.format("~D", 1) == "1" )
1836
- end
1837
-
1838
- def test_decimal_params
1839
- assert( Lisp.format("~5,'-D~6D", 1, 2) == "----1 2" )
1840
- end
1841
-
1842
- def test_decimal_modifiers
1843
- assert( Lisp.format("~5,'-,'.:@D~@D", 1013, 2) == "+1.013+2" )
1844
- assert( Lisp.format("~7,,,2:@D~@D", 1013, 2) == " +10,13+2" )
1845
- end
1846
-
1847
- # Tests for ~v, ~V, ~#
1848
-
1849
- end
1850
-
1851
- =end