facets 1.8.54 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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