facets 1.8.20 → 1.8.49

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 (571) hide show
  1. data/PROJECT +1 -1
  2. data/Rakefile +29 -21
  3. data/VERSION +1 -1
  4. data/doc/{ChangeLog → CHANGES} +87 -0
  5. data/doc/{History → HISTORY} +0 -0
  6. data/lib/facet/behavior.rb +1 -0
  7. data/lib/facets/core/array/body.rb +1 -1
  8. data/lib/facets/core/array/first.rb +1 -1
  9. data/lib/facets/core/array/foot.rb +1 -1
  10. data/lib/facets/core/array/last.rb +1 -1
  11. data/lib/facets/core/array/op_div.rb +18 -0
  12. data/lib/facets/core/array/tail.rb +1 -1
  13. data/lib/facets/core/class/by_name.rb +1 -1
  14. data/lib/facets/core/class/method_name.rb +3 -1
  15. data/lib/facets/core/class/remove_descendents.rb +1 -1
  16. data/lib/facets/core/class/remove_subclasses.rb +1 -1
  17. data/lib/facets/core/class/subclasses.rb +1 -1
  18. data/lib/facets/core/class/unix_path.rb +1 -1
  19. data/lib/facets/core/comparable/at_most.rb +1 -1
  20. data/lib/facets/core/comparable/cap.rb +1 -1
  21. data/lib/facets/core/date/days_of_month.rb +1 -1
  22. data/lib/facets/core/date/to_s.rb +1 -1
  23. data/lib/facets/core/dir/self/recurse.rb +1 -1
  24. data/lib/facets/core/enumerable/collect_with_counter.rb +1 -1
  25. data/lib/facets/core/enumerable/compact_collect.rb +1 -1
  26. data/lib/facets/core/enumerable/compact_map.rb +1 -1
  27. data/lib/facets/core/enumerable/each_permutation.rb +1 -1
  28. data/lib/facets/core/enumerable/each_unique_pair.rb +1 -1
  29. data/lib/facets/core/enumerable/elementwise.rb +75 -2
  30. data/lib/facets/core/enumerable/entropy.rb +2 -2
  31. data/lib/facets/core/enumerable/ew.rb +2 -60
  32. data/lib/facets/core/enumerable/filter_map.rb +1 -1
  33. data/lib/facets/core/enumerable/find_collisions.rb +1 -1
  34. data/lib/facets/core/enumerable/graph.rb +1 -1
  35. data/lib/facets/core/enumerable/map_send.rb +12 -0
  36. data/lib/facets/core/enumerable/map_with_counter.rb +1 -1
  37. data/lib/facets/core/enumerable/map_with_index.rb +1 -1
  38. data/lib/facets/core/enumerable/op_pow.rb +2 -2
  39. data/lib/facets/core/enumerable/op_tilde_self.rb +46 -0
  40. data/lib/facets/core/enumerable/permutation.rb +1 -1
  41. data/lib/facets/core/enumerable/thread_map.rb +21 -0
  42. data/lib/facets/core/enumerable/thread_map_send.rb +3 -0
  43. data/lib/facets/core/fileutils/head.rb +1 -1
  44. data/lib/facets/core/fileutils/tail.rb +1 -1
  45. data/lib/facets/core/gem/self/gempath.rb +1 -1
  46. data/lib/facets/core/gem/self/gemspec.rb +1 -1
  47. data/lib/facets/core/hash/assert_has_keys.rb +1 -1
  48. data/lib/facets/core/hash/assert_has_only_keys.rb +1 -1
  49. data/lib/facets/core/hash/each_with_index.rb +2 -2
  50. data/lib/facets/core/hash/graph.rb +1 -1
  51. data/lib/facets/core/hash/op_fetch.rb +1 -1
  52. data/lib/facets/core/hash/op_store.rb +1 -1
  53. data/lib/facets/core/hash/rand_pair.rb +1 -1
  54. data/lib/facets/core/hash/rand_value.rb +1 -1
  55. data/lib/facets/core/hash/shuffle.rb +1 -1
  56. data/lib/facets/core/inflect.rb +24 -24
  57. data/lib/facets/core/integer/even.rb +1 -1
  58. data/lib/facets/core/integer/fac.rb +1 -1
  59. data/lib/facets/core/integer/fact.rb +1 -1
  60. data/lib/facets/core/integer/odd.rb +1 -1
  61. data/lib/facets/core/integer/times_map.rb +1 -1
  62. data/lib/facets/core/kernel/assign_from.rb +1 -1
  63. data/lib/facets/core/kernel/assign_with.rb +2 -2
  64. data/lib/facets/core/kernel/autoreload_files.rb +1 -1
  65. data/lib/facets/core/kernel/autoreload_glob.rb +1 -1
  66. data/lib/facets/core/kernel/false.rb +1 -1
  67. data/lib/facets/core/kernel/methods.rb +1 -1
  68. data/lib/facets/core/kernel/require_all.rb +3 -2
  69. data/lib/facets/core/kernel/require_esc.rb +1 -1
  70. data/lib/facets/core/kernel/set_from.rb +1 -1
  71. data/lib/facets/core/kernel/set_with.rb +1 -1
  72. data/lib/facets/core/kernel/tap.rb +12 -0
  73. data/lib/facets/core/kernel/to_data.rb +2 -0
  74. data/lib/facets/core/kernel/true.rb +1 -1
  75. data/lib/facets/core/kernel/unuri.rb +1 -1
  76. data/lib/facets/core/kernel/with_reader.rb +1 -1
  77. data/lib/facets/core/kernel/with_writer.rb +1 -1
  78. data/lib/facets/core/logger/format_message.rb +1 -1
  79. data/lib/facets/core/matchdata/matchset.rb +1 -1
  80. data/lib/facets/core/module/alias_method_chain.rb +2 -0
  81. data/lib/facets/core/module/attr_query.rb +1 -1
  82. data/lib/facets/core/module/by_name.rb +1 -1
  83. data/lib/facets/core/module/clone_removing.rb +1 -1
  84. data/lib/facets/core/module/clone_renaming.rb +1 -1
  85. data/lib/facets/core/module/include_as.rb +1 -1
  86. data/lib/facets/core/module/instance_methods.rb +2 -2
  87. data/lib/facets/core/module/integrate.rb +6 -6
  88. data/lib/facets/core/module/modspace.rb +2 -2
  89. data/lib/facets/core/module/namespace.rb +1 -0
  90. data/lib/facets/core/module/redef.rb +1 -1
  91. data/lib/facets/core/module/redirect.rb +1 -1
  92. data/lib/facets/core/module/rename.rb +1 -1
  93. data/lib/facets/core/module/self/op_add.rb +2 -0
  94. data/lib/facets/core/module/shadow_all.rb +1 -1
  95. data/lib/facets/core/module/wrap.rb +1 -1
  96. data/lib/facets/core/nil_as_emptiness.rb +7 -7
  97. data/lib/facets/core/nilclass/length.rb +1 -1
  98. data/lib/facets/core/numeric/pred.rb +1 -1
  99. data/lib/facets/core/ostruct/__merge__.rb +2 -2
  100. data/lib/facets/core/ostruct/instance_delegate.rb +2 -0
  101. data/lib/facets/core/random.rb +12 -12
  102. data/lib/facets/core/range/within.rb +1 -1
  103. data/lib/facets/core/string/align_left.rb +1 -1
  104. data/lib/facets/core/string/align_right.rb +1 -1
  105. data/lib/facets/core/string/at_rand.rb +3 -3
  106. data/lib/facets/core/string/bytes.rb +14 -2
  107. data/lib/facets/core/string/demodulize.rb +1 -1
  108. data/lib/facets/core/string/ends_with.rb +1 -1
  109. data/lib/facets/core/string/first.rb +3 -3
  110. data/lib/facets/core/string/first_char.rb +1 -1
  111. data/lib/facets/core/string/format.rb +1 -1
  112. data/lib/facets/core/string/last.rb +3 -3
  113. data/lib/facets/core/string/last_char.rb +1 -1
  114. data/lib/facets/core/string/lowercase.rb +1 -1
  115. data/lib/facets/core/string/ordinal.rb +1 -1
  116. data/lib/facets/core/string/plural.rb +1 -1
  117. data/lib/facets/core/string/quote.rb +1 -1
  118. data/lib/facets/core/string/range_all.rb +1 -1
  119. data/lib/facets/core/string/shuffle.rb +1 -1
  120. data/lib/facets/core/string/tab.rb +1 -1
  121. data/lib/facets/core/string/tabto.rb +1 -1
  122. data/lib/facets/core/string/to_rx.rb +1 -1
  123. data/lib/facets/core/string/unbracket.rb +1 -1
  124. data/lib/facets/core/string/unix_crypt.rb +1 -1
  125. data/lib/facets/core/string/uppercase.rb +1 -1
  126. data/lib/facets/core/string/whitespace.rb +1 -1
  127. data/lib/facets/core/string_as_array.rb +7 -6
  128. data/lib/facets/core/symbol/camelcase.rb +1 -1
  129. data/lib/facets/core/symbol/camelize.rb +1 -1
  130. data/lib/facets/core/symbol/capitalize.rb +1 -1
  131. data/lib/facets/core/symbol/capitalized.rb +2 -2
  132. data/lib/facets/core/symbol/downcase.rb +1 -1
  133. data/lib/facets/core/symbol/to_const.rb +1 -1
  134. data/lib/facets/core/symbol/underscore.rb +1 -1
  135. data/lib/facets/core/symbol/upcase.rb +1 -1
  136. data/lib/facets/core/time/self/stamp.rb +1 -1
  137. data/lib/facets/core/time/to_s.rb +1 -1
  138. data/lib/facets/more/arguments.rb +61 -43
  139. data/lib/facets/more/{behvior.rb → behavior.rb} +0 -0
  140. data/lib/facets/more/buildingblock.rb +64 -48
  141. data/lib/facets/more/dependency.rb +1 -1
  142. data/lib/facets/more/downloader.rb +1 -1
  143. data/lib/facets/more/elementor.rb +2 -2
  144. data/lib/facets/more/functor.rb +16 -9
  145. data/lib/facets/more/htmlbuilder.rb +4 -4
  146. data/lib/facets/more/htmlhelper.rb +1 -0
  147. data/lib/facets/more/json.rb +16 -0
  148. data/lib/facets/more/multipliers.rb +1 -2
  149. data/lib/facets/more/nilcomparable.rb +5 -1
  150. data/lib/facets/more/ormsupport.rb +4 -4
  151. data/lib/facets/more/paramix.rb +2 -2
  152. data/lib/facets/more/populate.rb +1 -1
  153. data/lib/facets/more/preinitialize.rb +2 -2
  154. data/lib/facets/more/settings.rb +4 -4
  155. data/lib/facets/more/stateparser.rb +2 -2
  156. data/lib/facets/more/times.rb +1 -1
  157. data/lib/facets/more/tracepoint.rb +1 -1
  158. data/lib/facets/more/typecast.rb +2 -2
  159. data/lib/facets/more/units.rb +1 -1
  160. data/lib/facets/more/xmlbuilder.rb +1 -1
  161. data/lib/facets/more/xoxo.rb +10 -0
  162. data/lib/facets/yore/annotation.rb +3 -3
  163. data/lib/facets/yore/kernel/require_facet.rb +4 -4
  164. data/lib/fieryfacets.rb +5002 -0
  165. data/test/lib/facets/core/array/test_at_rand.rb +1 -1
  166. data/test/lib/facets/core/array/test_delete_unless.rb +1 -1
  167. data/test/lib/facets/core/array/test_delete_values.rb +1 -1
  168. data/test/lib/facets/core/array/test_delete_values_at.rb +1 -1
  169. data/test/lib/facets/core/array/test_first.rb +1 -1
  170. data/test/lib/facets/core/array/test_head.rb +1 -1
  171. data/test/lib/facets/core/array/test_last_index.rb +1 -1
  172. data/test/lib/facets/core/array/test_merge.rb +1 -1
  173. data/test/lib/facets/core/array/test_mid.rb +1 -1
  174. data/test/lib/facets/core/array/test_middle.rb +1 -1
  175. data/test/lib/facets/core/array/test_op_div.rb +27 -0
  176. data/test/lib/facets/core/array/test_op_fetch.rb +1 -1
  177. data/test/lib/facets/core/array/test_pad.rb +1 -1
  178. data/test/lib/facets/core/array/test_pick.rb +1 -1
  179. data/test/lib/facets/core/array/test_pos.rb +1 -1
  180. data/test/lib/facets/core/array/test_pot.rb +1 -1
  181. data/test/lib/facets/core/array/test_pull.rb +1 -1
  182. data/test/lib/facets/core/array/test_rand_index.rb +1 -1
  183. data/test/lib/facets/core/array/test_rand_subset.rb +1 -1
  184. data/test/lib/facets/core/array/test_range.rb +1 -1
  185. data/test/lib/facets/core/array/test_rotate.rb +1 -1
  186. data/test/lib/facets/core/array/test_select.rb +1 -1
  187. data/test/lib/facets/core/array/test_shuffle.rb +1 -1
  188. data/test/lib/facets/core/array/test_thru.rb +1 -1
  189. data/test/lib/facets/core/array/test_to_b.rb +1 -1
  190. data/test/lib/facets/core/array/test_to_h.rb +1 -1
  191. data/test/lib/facets/core/array/test_to_hash.rb +1 -1
  192. data/test/lib/facets/core/binding/self/test_of_caller.rb +1 -1
  193. data/test/lib/facets/core/binding/test___LINE__.rb +1 -1
  194. data/test/lib/facets/core/binding/test_call_stack.rb +1 -1
  195. data/test/lib/facets/core/binding/test_called.rb +1 -1
  196. data/test/lib/facets/core/binding/test_caller.rb +1 -1
  197. data/test/lib/facets/core/binding/test_defined.rb +1 -1
  198. data/test/lib/facets/core/binding/test_eval.rb +1 -1
  199. data/test/lib/facets/core/binding/test_local_variables.rb +1 -1
  200. data/test/lib/facets/core/binding/test_method_name.rb +1 -1
  201. data/test/lib/facets/core/binding/test_op_fetch.rb +1 -1
  202. data/test/lib/facets/core/binding/test_op_store.rb +1 -1
  203. data/test/lib/facets/core/binding/test_self.rb +1 -1
  204. data/test/lib/facets/core/class/test_cattr.rb +1 -1
  205. data/test/lib/facets/core/class/test_descendents.rb +1 -1
  206. data/test/lib/facets/core/class/test_method_name.rb +1 -1
  207. data/test/lib/facets/core/class/test_remove_descendents.rb +1 -1
  208. data/test/lib/facets/core/class/test_unix_path.rb +1 -1
  209. data/test/lib/facets/core/comparable/test_at_least.rb +1 -1
  210. data/test/lib/facets/core/comparable/test_clip.rb +1 -1
  211. data/test/lib/facets/core/comparable/test_cmp.rb +1 -1
  212. data/test/lib/facets/core/continuation/self/test_create.rb +1 -1
  213. data/test/lib/facets/core/date/test_days_in_month.rb +1 -1
  214. data/test/lib/facets/core/date/test_days_of_month.rb +1 -1
  215. data/test/lib/facets/core/date/test_stamp.rb +1 -1
  216. data/test/lib/facets/core/date/test_to_date.rb +1 -1
  217. data/test/lib/facets/core/date/test_to_s.rb +1 -1
  218. data/test/lib/facets/core/date/test_to_time.rb +1 -1
  219. data/test/lib/facets/core/dir/self/test_ancestor.rb +1 -1
  220. data/test/lib/facets/core/dir/self/test_ascend.rb +1 -1
  221. data/test/lib/facets/core/enumerable/self/test_combinations.rb +1 -1
  222. data/test/lib/facets/core/enumerable/test_cart.rb +1 -1
  223. data/test/lib/facets/core/enumerable/test_collect_with_index.rb +1 -1
  224. data/test/lib/facets/core/enumerable/test_commonality.rb +1 -1
  225. data/test/lib/facets/core/enumerable/test_compact_collect.rb +1 -1
  226. data/test/lib/facets/core/enumerable/test_count.rb +1 -1
  227. data/test/lib/facets/core/enumerable/test_each_by.rb +1 -1
  228. data/test/lib/facets/core/enumerable/test_each_combination.rb +1 -1
  229. data/test/lib/facets/core/enumerable/test_each_pair.rb +1 -1
  230. data/test/lib/facets/core/enumerable/test_each_slice.rb +1 -1
  231. data/test/lib/facets/core/enumerable/test_each_unique_pair.rb +1 -1
  232. data/test/lib/facets/core/enumerable/test_eachn.rb +1 -1
  233. data/test/lib/facets/core/enumerable/test_elementwise.rb +40 -0
  234. data/test/lib/facets/core/enumerable/test_entropy.rb +1 -1
  235. data/test/lib/facets/core/enumerable/test_every.rb +1 -1
  236. data/test/lib/facets/core/enumerable/test_ew.rb +1 -1
  237. data/test/lib/facets/core/enumerable/test_filter_collect.rb +1 -1
  238. data/test/lib/facets/core/enumerable/test_find_collisions.rb +1 -1
  239. data/test/lib/facets/core/enumerable/test_frequency.rb +1 -1
  240. data/test/lib/facets/core/enumerable/test_graph.rb +1 -1
  241. data/test/lib/facets/core/enumerable/test_ideal_entropy.rb +1 -1
  242. data/test/lib/facets/core/enumerable/test_none.rb +1 -1
  243. data/test/lib/facets/core/enumerable/test_occur.rb +1 -1
  244. data/test/lib/facets/core/enumerable/test_one.rb +1 -1
  245. data/test/lib/facets/core/enumerable/test_op_pow.rb +1 -1
  246. data/test/lib/facets/core/enumerable/test_op_tilde_self.rb +40 -0
  247. data/test/lib/facets/core/enumerable/test_partition_by.rb +1 -1
  248. data/test/lib/facets/core/enumerable/test_permutation.rb +1 -1
  249. data/test/lib/facets/core/enumerable/test_probability.rb +1 -1
  250. data/test/lib/facets/core/enumerable/test_to_h.rb +1 -1
  251. data/test/lib/facets/core/enumerable/test_uniq_by.rb +1 -1
  252. data/test/lib/facets/core/file/self/test_create.rb +1 -1
  253. data/test/lib/facets/core/file/self/test_open_as_string.rb +1 -1
  254. data/test/lib/facets/core/file/self/test_read_list.rb +1 -1
  255. data/test/lib/facets/core/file/self/test_sanitize.rb +1 -1
  256. data/test/lib/facets/core/file/self/test_split_all.rb +1 -1
  257. data/test/lib/facets/core/float/test_round_at.rb +1 -1
  258. data/test/lib/facets/core/float/test_round_to.rb +1 -1
  259. data/test/lib/facets/core/hash/self/test_zipnew.rb +1 -1
  260. data/test/lib/facets/core/hash/test_alias.rb +1 -1
  261. data/test/lib/facets/core/hash/test_assert_has_keys.rb +1 -1
  262. data/test/lib/facets/core/hash/test_assert_has_only_keys.rb +1 -1
  263. data/test/lib/facets/core/hash/test_at.rb +1 -1
  264. data/test/lib/facets/core/hash/test_collate.rb +1 -1
  265. data/test/lib/facets/core/hash/test_each_with_index.rb +1 -1
  266. data/test/lib/facets/core/hash/test_each_with_key.rb +1 -1
  267. data/test/lib/facets/core/hash/test_graph.rb +1 -1
  268. data/test/lib/facets/core/hash/test_has_keys.rb +1 -1
  269. data/test/lib/facets/core/hash/test_has_only_keys.rb +1 -1
  270. data/test/lib/facets/core/hash/test_inverse.rb +1 -1
  271. data/test/lib/facets/core/hash/test_normalize_keys.rb +1 -1
  272. data/test/lib/facets/core/hash/test_op_fetch.rb +1 -1
  273. data/test/lib/facets/core/hash/test_op_lshift.rb +1 -1
  274. data/test/lib/facets/core/hash/test_rand_key.rb +1 -1
  275. data/test/lib/facets/core/hash/test_rand_pair.rb +1 -1
  276. data/test/lib/facets/core/hash/test_rand_value.rb +1 -1
  277. data/test/lib/facets/core/hash/test_rekey.rb +1 -1
  278. data/test/lib/facets/core/hash/test_replace_each.rb +1 -1
  279. data/test/lib/facets/core/hash/test_shuffle.rb +1 -1
  280. data/test/lib/facets/core/hash/test_slice.rb +1 -1
  281. data/test/lib/facets/core/hash/test_stringify_keys.rb +1 -1
  282. data/test/lib/facets/core/hash/test_swap.rb +1 -1
  283. data/test/lib/facets/core/hash/test_swapkey.rb +1 -1
  284. data/test/lib/facets/core/hash/test_symbolize_keys.rb +1 -1
  285. data/test/lib/facets/core/hash/test_to_h.rb +1 -1
  286. data/test/lib/facets/core/hash/test_to_ostruct.rb +1 -1
  287. data/test/lib/facets/core/hash/test_to_ostruct_recurse.rb +1 -1
  288. data/test/lib/facets/core/hash/test_traverse.rb +1 -1
  289. data/test/lib/facets/core/hash/test_update_each.rb +1 -1
  290. data/test/lib/facets/core/hash/test_update_keys.rb +1 -1
  291. data/test/lib/facets/core/hash/test_update_values.rb +1 -1
  292. data/test/lib/facets/core/hash/test_weave.rb +1 -1
  293. data/test/lib/facets/core/integer/test_factorial.rb +1 -1
  294. data/test/lib/facets/core/integer/test_multiple.rb +1 -1
  295. data/test/lib/facets/core/integer/test_of.rb +1 -1
  296. data/test/lib/facets/core/integer/test_ordinal.rb +1 -1
  297. data/test/lib/facets/core/integer/test_times_collect.rb +1 -1
  298. data/test/lib/facets/core/kernel/test___class__.rb +1 -1
  299. data/test/lib/facets/core/kernel/test_as.rb +1 -1
  300. data/test/lib/facets/core/kernel/test_assign_from.rb +1 -1
  301. data/test/lib/facets/core/kernel/test_assign_with.rb +1 -1
  302. data/test/lib/facets/core/kernel/test_bool.rb +1 -1
  303. data/test/lib/facets/core/kernel/test_bug.rb +1 -1
  304. data/test/lib/facets/core/kernel/test_call_stack.rb +1 -1
  305. data/test/lib/facets/core/kernel/test_called.rb +1 -1
  306. data/test/lib/facets/core/kernel/test_callee.rb +1 -1
  307. data/test/lib/facets/core/kernel/test_constant.rb +1 -1
  308. data/test/lib/facets/core/kernel/test_copy.rb +1 -1
  309. data/test/lib/facets/core/kernel/test_deep_copy.rb +1 -1
  310. data/test/lib/facets/core/kernel/test_demo.rb +1 -1
  311. data/test/lib/facets/core/kernel/test_fn.rb +1 -1
  312. data/test/lib/facets/core/kernel/test_get_by_id.rb +1 -1
  313. data/test/lib/facets/core/kernel/test_here.rb +1 -1
  314. data/test/lib/facets/core/kernel/test_in.rb +1 -1
  315. data/test/lib/facets/core/kernel/test_instance_class.rb +1 -1
  316. data/test/lib/facets/core/kernel/test_instance_exec.rb +1 -1
  317. data/test/lib/facets/core/kernel/test_maybe.rb +1 -1
  318. data/test/lib/facets/core/kernel/test_meta_class.rb +1 -1
  319. data/test/lib/facets/core/kernel/test_metaclass.rb +1 -1
  320. data/test/lib/facets/core/kernel/test_method.rb +1 -1
  321. data/test/lib/facets/core/kernel/test_methods.rb +1 -1
  322. data/test/lib/facets/core/kernel/test_new.rb +1 -1
  323. data/test/lib/facets/core/kernel/test_object_class.rb +1 -1
  324. data/test/lib/facets/core/kernel/test_object_hexid.rb +1 -1
  325. data/test/lib/facets/core/kernel/test_qua_class.rb +1 -1
  326. data/test/lib/facets/core/kernel/test_require_all.rb +2 -2
  327. data/test/lib/facets/core/kernel/test_require_esc.rb +2 -2
  328. data/test/lib/facets/core/kernel/test_resc.rb +1 -1
  329. data/test/lib/facets/core/kernel/test_send_as.rb +1 -1
  330. data/test/lib/facets/core/kernel/test_set_from.rb +1 -1
  331. data/test/lib/facets/core/kernel/test_set_with.rb +1 -1
  332. data/test/lib/facets/core/kernel/test_silently.rb +1 -1
  333. data/test/lib/facets/core/kernel/test_singleton.rb +1 -1
  334. data/test/lib/facets/core/kernel/test_singleton_class.rb +1 -1
  335. data/test/lib/facets/core/kernel/test_super_at.rb +1 -1
  336. data/test/lib/facets/core/kernel/test_supermethod.rb +1 -1
  337. data/test/lib/facets/core/kernel/test_this.rb +1 -1
  338. data/test/lib/facets/core/kernel/test_to_b.rb +1 -1
  339. data/test/lib/facets/core/kernel/test_to_bool.rb +1 -1
  340. data/test/lib/facets/core/kernel/test_to_data.rb +3 -1
  341. data/test/lib/facets/core/kernel/test_uri.rb +1 -1
  342. data/test/lib/facets/core/kernel/test_val.rb +1 -1
  343. data/test/lib/facets/core/kernel/test_with.rb +1 -1
  344. data/test/lib/facets/core/kernel/test_with_accessor.rb +1 -1
  345. data/test/lib/facets/core/matchdata/test_match.rb +1 -1
  346. data/test/lib/facets/core/matchdata/test_matchtree.rb +1 -1
  347. data/test/lib/facets/core/module/self/test_op_add.rb +3 -1
  348. data/test/lib/facets/core/module/test_abstract.rb +1 -1
  349. data/test/lib/facets/core/module/test_alias_method_chain.rb +3 -1
  350. data/test/lib/facets/core/module/test_alias_module_function.rb +1 -1
  351. data/test/lib/facets/core/module/test_ancestor.rb +1 -1
  352. data/test/lib/facets/core/module/test_attr_tester.rb +1 -1
  353. data/test/lib/facets/core/module/test_basename.rb +1 -1
  354. data/test/lib/facets/core/module/test_by_name.rb +1 -1
  355. data/test/lib/facets/core/module/test_class_extension.rb +1 -1
  356. data/test/lib/facets/core/module/test_clone_using.rb +1 -1
  357. data/test/lib/facets/core/module/test_dirname.rb +1 -1
  358. data/test/lib/facets/core/module/test_equate_on.rb +1 -1
  359. data/test/lib/facets/core/module/test_include_as.rb +2 -2
  360. data/test/lib/facets/core/module/test_initializer.rb +1 -1
  361. data/test/lib/facets/core/module/test_instance_methods.rb +1 -1
  362. data/test/lib/facets/core/module/test_integrate.rb +1 -1
  363. data/test/lib/facets/core/module/test_memoize.rb +1 -1
  364. data/test/lib/facets/core/module/test_modspace.rb +1 -1
  365. data/test/lib/facets/core/module/test_namespace.rb +1 -1
  366. data/test/lib/facets/core/module/test_nesting.rb +1 -1
  367. data/test/lib/facets/core/module/test_new.rb +1 -1
  368. data/test/lib/facets/core/module/test_nodef.rb +1 -1
  369. data/test/lib/facets/core/module/test_on_included.rb +1 -1
  370. data/test/lib/facets/core/module/test_redef.rb +1 -1
  371. data/test/lib/facets/core/module/test_redefine_method.rb +1 -1
  372. data/test/lib/facets/core/module/test_redirect.rb +1 -1
  373. data/test/lib/facets/core/module/test_redirect_method.rb +1 -1
  374. data/test/lib/facets/core/module/test_remove.rb +1 -1
  375. data/test/lib/facets/core/module/test_rename.rb +1 -1
  376. data/test/lib/facets/core/module/test_rename_method.rb +1 -1
  377. data/test/lib/facets/core/module/test_revisal.rb +1 -1
  378. data/test/lib/facets/core/module/test_shadow_method.rb +1 -1
  379. data/test/lib/facets/core/module/test_sort_on.rb +1 -1
  380. data/test/lib/facets/core/module/test_this.rb +1 -1
  381. data/test/lib/facets/core/module/test_wrap.rb +1 -1
  382. data/test/lib/facets/core/module/test_wrap_method.rb +1 -1
  383. data/test/lib/facets/core/nilclass/test_blank.rb +1 -1
  384. data/test/lib/facets/core/nilclass/test_empty.rb +1 -1
  385. data/test/lib/facets/core/nilclass/test_include.rb +1 -1
  386. data/test/lib/facets/core/nilclass/test_op_fetch.rb +1 -1
  387. data/test/lib/facets/core/nilclass/test_size.rb +1 -1
  388. data/test/lib/facets/core/nilclass/test_to_h.rb +1 -1
  389. data/test/lib/facets/core/numeric/test_approx.rb +1 -1
  390. data/test/lib/facets/core/numeric/test_ceil_multiple.rb +1 -1
  391. data/test/lib/facets/core/numeric/test_distance.rb +1 -1
  392. data/test/lib/facets/core/numeric/test_succ.rb +1 -1
  393. data/test/lib/facets/core/numeric/test_to_b.rb +1 -1
  394. data/test/lib/facets/core/ostruct/test___update__.rb +1 -1
  395. data/test/lib/facets/core/ostruct/test_instance_delegate.rb +3 -1
  396. data/test/lib/facets/core/ostruct/test_op_fetch.rb +1 -1
  397. data/test/lib/facets/core/proc/test_compose.rb +1 -1
  398. data/test/lib/facets/core/proc/test_op_mul.rb +1 -1
  399. data/test/lib/facets/core/proc/test_to_method.rb +1 -1
  400. data/test/lib/facets/core/range/test_to_r.rb +1 -1
  401. data/test/lib/facets/core/range/test_to_range.rb +1 -1
  402. data/test/lib/facets/core/range/test_umbrella.rb +1 -1
  403. data/test/lib/facets/core/range/test_within.rb +1 -1
  404. data/test/lib/facets/core/regexp/test_arity.rb +1 -1
  405. data/test/lib/facets/core/regexp/test_to_re.rb +1 -1
  406. data/test/lib/facets/core/regexp/test_to_regexp.rb +1 -1
  407. data/test/lib/facets/core/string/self/test_interpolate.rb +1 -1
  408. data/test/lib/facets/core/string/self/test_patterns.rb +1 -1
  409. data/test/lib/facets/core/string/self/test_rand_letter.rb +1 -1
  410. data/test/lib/facets/core/string/test_align_center.rb +1 -1
  411. data/test/lib/facets/core/string/test_at_rand.rb +1 -1
  412. data/test/lib/facets/core/string/test_basename.rb +1 -1
  413. data/test/lib/facets/core/string/test_blank.rb +1 -1
  414. data/test/lib/facets/core/string/test_bracket.rb +1 -1
  415. data/test/lib/facets/core/string/test_bytes.rb +25 -0
  416. data/test/lib/facets/core/string/test_camelcase.rb +1 -1
  417. data/test/lib/facets/core/string/test_camelize.rb +1 -1
  418. data/test/lib/facets/core/string/test_capitalize_all.rb +1 -1
  419. data/test/lib/facets/core/string/test_capitalized.rb +1 -1
  420. data/test/lib/facets/core/string/test_chars.rb +1 -1
  421. data/test/lib/facets/core/string/test_cleave.rb +1 -1
  422. data/test/lib/facets/core/string/test_cmp.rb +1 -1
  423. data/test/lib/facets/core/string/test_demodulize.rb +1 -1
  424. data/test/lib/facets/core/string/test_divide.rb +1 -1
  425. data/test/lib/facets/core/string/test_downcase.rb +1 -1
  426. data/test/lib/facets/core/string/test_dresner.rb +1 -1
  427. data/test/lib/facets/core/string/test_each_char.rb +1 -1
  428. data/test/lib/facets/core/string/test_each_word.rb +1 -1
  429. data/test/lib/facets/core/string/test_first.rb +1 -1
  430. data/test/lib/facets/core/string/test_fold.rb +1 -1
  431. data/test/lib/facets/core/string/test_humanize.rb +1 -1
  432. data/test/lib/facets/core/string/test_indent.rb +1 -1
  433. data/test/lib/facets/core/string/test_index_all.rb +1 -1
  434. data/test/lib/facets/core/string/test_last.rb +1 -1
  435. data/test/lib/facets/core/string/test_line_wrap.rb +1 -1
  436. data/test/lib/facets/core/string/test_lines.rb +1 -1
  437. data/test/lib/facets/core/string/test_lowercase.rb +1 -1
  438. data/test/lib/facets/core/string/test_margin.rb +1 -1
  439. data/test/lib/facets/core/string/test_methodize.rb +1 -1
  440. data/test/lib/facets/core/string/test_modulize.rb +1 -1
  441. data/test/lib/facets/core/string/test_mscan.rb +1 -1
  442. data/test/lib/facets/core/string/test_natcmp.rb +1 -1
  443. data/test/lib/facets/core/string/test_nchar.rb +1 -1
  444. data/test/lib/facets/core/string/test_pathize.rb +1 -1
  445. data/test/lib/facets/core/string/test_pop.rb +1 -1
  446. data/test/lib/facets/core/string/test_pot.rb +1 -1
  447. data/test/lib/facets/core/string/test_push.rb +1 -1
  448. data/test/lib/facets/core/string/test_quote.rb +1 -1
  449. data/test/lib/facets/core/string/test_rand_byte.rb +1 -1
  450. data/test/lib/facets/core/string/test_rand_index.rb +1 -1
  451. data/test/lib/facets/core/string/test_range.rb +1 -1
  452. data/test/lib/facets/core/string/test_range_all.rb +1 -1
  453. data/test/lib/facets/core/string/test_range_of_line.rb +1 -1
  454. data/test/lib/facets/core/string/test_regesc.rb +1 -1
  455. data/test/lib/facets/core/string/test_shatter.rb +1 -1
  456. data/test/lib/facets/core/string/test_shift.rb +1 -1
  457. data/test/lib/facets/core/string/test_shuffle.rb +1 -1
  458. data/test/lib/facets/core/string/test_similarity.rb +1 -1
  459. data/test/lib/facets/core/string/test_singular.rb +1 -1
  460. data/test/lib/facets/core/string/test_soundex.rb +1 -1
  461. data/test/lib/facets/core/string/test_succ.rb +1 -1
  462. data/test/lib/facets/core/string/test_to_a.rb +1 -1
  463. data/test/lib/facets/core/string/test_to_b.rb +1 -1
  464. data/test/lib/facets/core/string/test_to_const.rb +1 -1
  465. data/test/lib/facets/core/string/test_to_date.rb +1 -1
  466. data/test/lib/facets/core/string/test_to_proc.rb +1 -1
  467. data/test/lib/facets/core/string/test_to_re.rb +1 -1
  468. data/test/lib/facets/core/string/test_to_time.rb +1 -1
  469. data/test/lib/facets/core/string/test_unix_crypt.rb +1 -1
  470. data/test/lib/facets/core/string/test_unpack.rb +1 -1
  471. data/test/lib/facets/core/string/test_unshift.rb +1 -1
  472. data/test/lib/facets/core/string/test_upcase.rb +1 -1
  473. data/test/lib/facets/core/string/test_whitespace.rb +1 -1
  474. data/test/lib/facets/core/string/test_word_filter.rb +1 -1
  475. data/test/lib/facets/core/string/test_word_wrap.rb +1 -1
  476. data/test/lib/facets/core/string/test_words.rb +1 -1
  477. data/test/lib/facets/core/symbol/test_camelcase.rb +1 -1
  478. data/test/lib/facets/core/symbol/test_camelize.rb +1 -1
  479. data/test/lib/facets/core/symbol/test_capitalize.rb +1 -1
  480. data/test/lib/facets/core/symbol/test_capitalized.rb +1 -1
  481. data/test/lib/facets/core/symbol/test_downcase.rb +1 -1
  482. data/test/lib/facets/core/symbol/test_not.rb +1 -1
  483. data/test/lib/facets/core/symbol/test_pad.rb +1 -1
  484. data/test/lib/facets/core/symbol/test_succ.rb +1 -1
  485. data/test/lib/facets/core/symbol/test_to_const.rb +1 -1
  486. data/test/lib/facets/core/symbol/test_to_proc.rb +1 -1
  487. data/test/lib/facets/core/symbol/test_to_str.rb +1 -1
  488. data/test/lib/facets/core/symbol/test_underscore.rb +1 -1
  489. data/test/lib/facets/core/symbol/test_upcase.rb +1 -1
  490. data/test/lib/facets/core/time/test_change.rb +1 -1
  491. data/test/lib/facets/core/time/test_elapse.rb +1 -1
  492. data/test/lib/facets/core/time/test_stamp.rb +1 -1
  493. data/test/lib/facets/core/time/test_to_date.rb +1 -1
  494. data/test/lib/facets/core/time/test_to_s.rb +1 -1
  495. data/test/lib/facets/core/time/test_to_time.rb +1 -1
  496. data/test/lib/facets/more/test_ann.rb +1 -1
  497. data/test/lib/facets/more/test_ann_attr.rb +1 -1
  498. data/test/lib/facets/more/test_ansicode.rb +1 -1
  499. data/test/lib/facets/more/test_arguments.rb +7 -7
  500. data/test/lib/facets/more/test_association.rb +1 -1
  501. data/test/lib/facets/more/test_autoarray.rb +1 -1
  502. data/test/lib/facets/more/test_basicobject.rb +1 -1
  503. data/test/lib/facets/more/test_bbcode.rb +1 -1
  504. data/test/lib/facets/more/test_binaryreader.rb +1 -1
  505. data/test/lib/facets/more/test_bitmask.rb +1 -1
  506. data/test/lib/facets/more/test_buildingblock.rb +5 -4
  507. data/test/lib/facets/more/test_bytes.rb +1 -1
  508. data/test/lib/facets/more/test_classmethods.rb +1 -1
  509. data/test/lib/facets/more/test_command.rb +1 -1
  510. data/test/lib/facets/more/test_coroutine.rb +1 -1
  511. data/test/lib/facets/more/test_crypt.rb +1 -1
  512. data/test/lib/facets/more/test_cut.rb +1 -1
  513. data/test/lib/facets/more/test_dependency.rb +2 -2
  514. data/test/lib/facets/more/test_dictionary.rb +1 -1
  515. data/test/lib/facets/more/test_elementor.rb +2 -2
  516. data/test/lib/facets/more/test_enumerablepass.rb +1 -1
  517. data/test/lib/facets/more/test_floatstring.rb +1 -1
  518. data/test/lib/facets/more/test_functor.rb +1 -1
  519. data/test/lib/facets/more/test_htmlbuilder.rb +2 -2
  520. data/test/lib/facets/more/test_htmlfilter.rb +1 -1
  521. data/test/lib/facets/more/test_infinity.rb +1 -1
  522. data/test/lib/facets/more/test_inheritor.rb +1 -1
  523. data/test/lib/facets/more/test_instance_intercept.rb +1 -1
  524. data/test/lib/facets/more/test_interval.rb +1 -1
  525. data/test/lib/facets/more/test_json.rb +1 -1
  526. data/test/lib/facets/more/test_linkedlist.rb +1 -1
  527. data/test/lib/facets/more/test_lisp.rb +1 -1
  528. data/test/lib/facets/more/test_lisp_format.rb +1 -1
  529. data/test/lib/facets/more/test_lrucache.rb +1 -1
  530. data/test/lib/facets/more/test_mathconstants.rb +1 -1
  531. data/test/lib/facets/more/test_methodfilter.rb +1 -1
  532. data/test/lib/facets/more/test_methodprobe.rb +1 -1
  533. data/test/lib/facets/more/test_multipliers.rb +1 -1
  534. data/test/lib/facets/more/test_multiton.rb +1 -1
  535. data/test/lib/facets/more/test_nackclass.rb +1 -1
  536. data/test/lib/facets/more/test_nilcomparable.rb +1 -1
  537. data/test/lib/facets/more/test_opencascade.rb +1 -1
  538. data/test/lib/facets/more/test_openobject.rb +1 -1
  539. data/test/lib/facets/more/test_overload.rb +1 -1
  540. data/test/lib/facets/more/test_paramix.rb +2 -2
  541. data/test/lib/facets/more/test_pqueue.rb +1 -1
  542. data/test/lib/facets/more/test_preinitialize.rb +1 -1
  543. data/test/lib/facets/more/test_promoteself.rb +1 -1
  544. data/test/lib/facets/more/test_recorder.rb +1 -1
  545. data/test/lib/facets/more/test_snapshot.rb +1 -1
  546. data/test/lib/facets/more/test_statichash.rb +1 -1
  547. data/test/lib/facets/more/test_syncarray.rb +1 -1
  548. data/test/lib/facets/more/test_synchash.rb +1 -1
  549. data/test/lib/facets/more/test_tagiterator.rb +1 -1
  550. data/test/lib/facets/more/test_timer.rb +1 -1
  551. data/test/lib/facets/more/test_times.rb +1 -1
  552. data/test/lib/facets/more/test_tuple.rb +1 -1
  553. data/test/lib/facets/more/test_typecast.rb +1 -1
  554. data/test/lib/facets/more/test_uninheritable.rb +1 -1
  555. data/test/lib/facets/more/test_units.rb +1 -1
  556. data/test/lib/facets/more/test_xmlbuilder.rb +2 -2
  557. data/test/lib/facets/more/test_xmlhelper.rb +1 -1
  558. data/test/lib/facets/more/test_xoxo.rb +1 -1
  559. data/test/lib/facets/more/test_yamlstruct.rb +1 -1
  560. data/test/lib/facets/yore/enumerable/test_cross.rb +1 -1
  561. data/test/lib/facets/yore/kernel/test_require_facet.rb +1 -1
  562. data/test/lib/facets/yore/module/test_namespace.rb +1 -1
  563. data/test/lib/facets/yore/test_annattr.rb +1 -1
  564. data/test/lib/facets/yore/test_annotation.rb +1 -1
  565. metadata +22 -190
  566. data/lib/facet/behvior.rb +0 -1
  567. data/lib/facets/core/module/inject.rb +0 -9
  568. data/test/lib/facets/core/enumerable/self/test_cart.rb +0 -44
  569. data/test/lib/facets/core/enumerable/self/test_cross.rb +0 -31
  570. data/test/lib/facets/core/enumerable/test_cross.rb +0 -30
  571. data/test/lib/facets/more/test_openhash.rb +0 -126
@@ -1,2 +1,2 @@
1
1
  # stub
2
- require 'facet/string/upcase'
2
+ require 'facets/core/string/upcase'
@@ -1,4 +1,4 @@
1
- require 'facet/string/blank'
1
+ require 'facets/core/string/blank'
2
2
 
3
3
  class String
4
4
  alias_method :whitespace?, :blank?
@@ -8,9 +8,10 @@
8
8
  # "123".pop # => "12"
9
9
  #
10
10
 
11
- require 'facet/string/at'
12
- require 'facet/string/pop'
13
- require 'facet/string/push'
14
- require 'facet/string/shift'
15
- require 'facet/string/unshift' # I hate this name
16
- require 'facet/string/slap' # alias for it (better name?)
11
+ require 'facets/core/string/at'
12
+ require 'facets/core/string/pop'
13
+ require 'facets/core/string/push'
14
+ require 'facets/core/string/shift'
15
+ require 'facets/core/string/unshift' # I hate this name
16
+ require 'facets/core/string/pot' # here's an alias for it
17
+
@@ -1,5 +1,5 @@
1
1
 
2
- require 'facet/string/camelcase'
2
+ require 'facets/core/string/camelcase'
3
3
 
4
4
  class Symbol
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- require 'facet/string/camelize'
2
+ require 'facets/core/string/camelize'
3
3
 
4
4
  class Symbol
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- require 'facet/symbol/capitalized'
2
+ require 'facets/core/symbol/capitalized'
3
3
 
4
4
  class Symbol
5
5
 
@@ -1,6 +1,6 @@
1
1
 
2
- require 'facet/string/capitalized'
3
- require 'facet/symbol/capitalize'
2
+ require 'facets/core/string/capitalized'
3
+ require 'facets/core/symbol/capitalize'
4
4
 
5
5
  class Symbol
6
6
 
@@ -1,5 +1,5 @@
1
1
 
2
- require 'facet/string/downcase'
2
+ require 'facets/core/string/downcase'
3
3
 
4
4
  class Symbol
5
5
 
@@ -1,4 +1,4 @@
1
- require 'facet/string/to_const'
1
+ require 'facets/core/string/to_const'
2
2
 
3
3
  class Symbol
4
4
 
@@ -1,5 +1,5 @@
1
1
 
2
- require 'facet/string/underscore'
2
+ require 'facets/core/string/underscore'
3
3
 
4
4
  class Symbol
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- require 'facet/string/upcase'
2
+ require 'facets/core/string/upcase'
3
3
 
4
4
  class Symbol
5
5
 
@@ -1,2 +1,2 @@
1
1
  # stub
2
- require 'facet/time/stamp'
2
+ require 'facets/core/time/stamp'
@@ -1,4 +1,4 @@
1
- require 'facet/time/stamp'
1
+ require 'facets/core/time/stamp'
2
2
 
3
3
  class Time
4
4
  # Enhance #to_s by aliasing to #stamp.
@@ -21,6 +21,8 @@
21
21
  # TODO Move to console/arguments.rb, but I'm not sure yet
22
22
  # if adding subdirectories to more/ is a good idea.
23
23
 
24
+ # CREDIT Thomas Sawyer
25
+
24
26
  # Author:: Thomas Sawyer
25
27
  # Copyright:: Copyright (c) 2005 Thomas Sawyer
26
28
  # License:: Ruby License
@@ -43,16 +45,22 @@ class Console::Arguments
43
45
 
44
46
  attr :line
45
47
  attr :argv
48
+ attr :opts
49
+ attr :arity
46
50
 
47
- def initialize( line=nil )
51
+ def initialize( line=nil, *opts_arity )
48
52
  @line, @argv = parse_line(line)
49
53
 
54
+ @opts, @arity = clean(*opts_arity)
55
+
50
56
  # caches
51
- @words = Hash.new #{|h,k| h[k]=[]}
52
- @flags = Hash.new #{|h,k| h[k]=[]}
53
- @preflags = Hash.new #{|h,k| h[k]=[]}
57
+ #@words = Hash.new #{|h,k| h[k]=[]}
58
+ #@flags = Hash.new #{|h,k| h[k]=[]}
59
+ #@preflags = Hash.new #{|h,k| h[k]=[]}
54
60
  end
55
61
 
62
+ private
63
+
56
64
  # First pass parser to split the command line into an
57
65
  # array using Shellwords, if not already so divided.
58
66
 
@@ -71,7 +79,8 @@ class Console::Arguments
71
79
  end
72
80
  return line, argv
73
81
  end
74
- private :parse_line
82
+
83
+ public
75
84
 
76
85
  # Parse off the front flags of a command line.
77
86
  #
@@ -93,11 +102,11 @@ class Console::Arguments
93
102
  # keys #=> [["level", 4]]
94
103
  #
95
104
 
96
- def preflags( *opts_arity )
97
- opts, arity = clean(*opts_arity)
105
+ def preflags #( *opts_arity )
106
+ #opts, arity = clean(*opts_arity)
98
107
 
99
- @preflags[opts] ||= (
100
- preflags, args = *parse_preflags(argv, *opts_arity)
108
+ @preflags ||= (
109
+ preflags, args = *parse_preflags(argv) #, *opts_arity)
101
110
  preflags
102
111
  )
103
112
  end
@@ -105,11 +114,11 @@ class Console::Arguments
105
114
  # Like preflags but will remove preflags from
106
115
  # the argumuments array (argv).
107
116
 
108
- def preflags!( *opts_arity )
109
- opts, arity = clean(*opts_arity)
117
+ def preflags! #( *opts_arity )
118
+ #opts, arity = clean(*opts_arity)
110
119
 
111
- @preflags[opts] ||= (
112
- preflags, args = *parse_preflags(argv, *opts_arity)
120
+ @preflags ||= (
121
+ preflags, args = *parse_preflags(argv) #, *opts_arity)
113
122
  @argv = args
114
123
  preflags
115
124
  )
@@ -118,30 +127,39 @@ class Console::Arguments
118
127
  #
119
128
 
120
129
  def words( *opts_arity )
121
- opts, arity = clean(*opts_arity)
130
+ #opts, arity = clean(*opts_arity)
122
131
 
123
- @words[opts] ||= (
124
- parse( opts, arity )
125
- @words[opts]
132
+ @words ||= (
133
+ parse #( opts, arity )
134
+ @words
126
135
  )
127
136
  end
128
137
 
129
138
  #
130
139
 
131
140
  def flags( *opts_arity )
132
- opts, arity = clean(*opts_arity)
141
+ #opts, arity = clean(*opts_arity)
133
142
 
134
- @flags[opts] ||= (
135
- parse( opts, arity )
136
- @flags[opts]
143
+ @flags ||= (
144
+ parse #( opts, arity )
145
+ @flags
137
146
  )
138
147
  end
139
148
 
140
- # Basic parser.
141
- #
142
- # Partitions the command line into flags and arguments.
143
- # Flags are converted to a associative array and then the
144
- # two parts are returned.
149
+ # Returns the parsed command line as an array + hash collection
150
+ # of parameters, like what a Ruby method accepts. Because of the
151
+ # use of the hash for flags and options parameters, repeat entries
152
+ # can be used with this, in that case use #parse directly.
153
+
154
+ def parameters
155
+ args, keys = parse
156
+ args.flatten << keys unless keys.empty?
157
+ return *args
158
+ end
159
+
160
+ # Basic parser partitions the command line into flags and
161
+ # arguments. Flags are converted to a associative array
162
+ # and then the two parts are returned.
145
163
  #
146
164
  # line = "--trace stamp --file=VERSION"
147
165
  #
@@ -151,17 +169,17 @@ class Console::Arguments
151
169
  # keys #=> [["trace",true], ["file","VERSION"]]
152
170
  #
153
171
 
154
- def parse( *opts_arity )
155
- opts, arity = clean(*opts_arity)
172
+ def parse #( *opts_arity )
173
+ #opts, arity = clean(*opts_arity)
156
174
 
157
- args = associate_flags(argv, *opts_arity)
175
+ args = associate_flags(argv) #, *opts_arity)
158
176
 
159
177
  flags, words = args.partition{ |a| Array === a }
160
178
 
161
179
  flags = format_flags(flags) unless opts.include?(:repeat)
162
180
 
163
- @words[opts] = words
164
- @flags[opts] = flags
181
+ @words = words
182
+ @flags = flags
165
183
 
166
184
  return words, flags
167
185
  end
@@ -178,10 +196,10 @@ class Console::Arguments
178
196
  # the chain could have it's own arity settings. So '=' must be
179
197
  # used to set a flag parameter.
180
198
 
181
- def multicommand( *opts_arity )
182
- opts, arity = clean(*opts_arity)
199
+ def multi_command #( *opts_arity )
200
+ #opts, arity = clean(*opts_arity)
183
201
 
184
- pflags = preflags(*opts_arity)
202
+ pflags = preflags #(*opts_arity)
185
203
 
186
204
  args = argv.dup
187
205
  args = multi_flag(args) unless opts.include?(:simple)
@@ -201,7 +219,7 @@ class Console::Arguments
201
219
  i = -1
202
220
  subopts = args[0..-1]
203
221
  end
204
- keys = format_flags(associate_flags(subopts, *opts_arity))
222
+ keys = format_flags(associate_flags(subopts)) #, *opts_arity))
205
223
  cmds << [cmd, keys]
206
224
  end
207
225
 
@@ -300,8 +318,8 @@ class Console::Arguments
300
318
  # parse_flags(line) #=> [ [foo,true], hello, ["try","this"] ]
301
319
  #
302
320
 
303
- def associate_flags( args, *opts_arity )
304
- opts, arity = clean(*opts_arity)
321
+ def associate_flags( args ) #, *opts_arity )
322
+ #opts, arity = clean(*opts_arity)
305
323
 
306
324
  args = args.dup
307
325
  args = multi_flag(args) unless opts.include?(:simple)
@@ -425,8 +443,8 @@ end
425
443
 
426
444
  def test_repeat
427
445
  line = "-x baz --foo=9 bar"
428
- cargs = Arguments.new(line)
429
- args, keys = cargs.parse(:repeat)
446
+ cargs = Arguments.new(line, :repeat)
447
+ args, keys = cargs.parse
430
448
  assert_equal(['baz','bar'],args)
431
449
  assert_equal([['x',true],['foo','9']],keys)
432
450
  end
@@ -450,10 +468,10 @@ end
450
468
  assert_equal({'foo'=>'7'},keys)
451
469
  end
452
470
 
453
- def test_multicommand
471
+ def test_multi_command
454
472
  line = "-x baz --foo=6 bar --zoo='xx'"
455
473
  cargs = Arguments.new(line)
456
- cmds, preflags = cargs.multicommand
474
+ cmds, preflags = cargs.multi_command
457
475
 
458
476
  assert_equal({'x'=>true},preflags)
459
477
 
@@ -468,8 +486,8 @@ end
468
486
 
469
487
  def test_with_arity
470
488
  line = "-q baz --aq 5 bar"
471
- cargs = Arguments.new(line)
472
- words, flags = cargs.parse('aq'=>1)
489
+ cargs = Arguments.new(line,'aq'=>1)
490
+ words, flags = cargs.parse
473
491
  assert_equal(['baz','bar'],words)
474
492
  assert_equal({'q'=>true,'aq'=>'5'},flags)
475
493
  end
File without changes
@@ -15,6 +15,8 @@
15
15
  #
16
16
  # * Thomas Sawyer
17
17
 
18
+ # CREDIT Thomas Sawyer
19
+
18
20
  # Author:: Thomas Sawyer
19
21
  # Copyright:: Copyright (c) 2007 Thomas Sawyer
20
22
  # License:: Ruby License
@@ -26,22 +28,20 @@
26
28
  # require 'facets'
27
29
  # require 'xmlhelper'
28
30
  #
29
- # build = BuildingBlocks.new(XMLHelper, :element)
30
- #
31
- # doc = build.html do
31
+ # builder = BuildingBlocks.new(XMLHelper, :element)
32
32
  #
33
- # head do
34
- # title "Test"
35
- # end
33
+ # doc = builder.html do
36
34
  #
37
- # body do
38
- # i "Hello"
39
- # br
40
- # _text "Test"
41
- # _text "Hey"
42
- # end
35
+ # head do
36
+ # title "Test"
37
+ # end
43
38
  #
44
- # end
39
+ # body do
40
+ # i "Hello"
41
+ # br
42
+ # text "Test"
43
+ # text "Hey"
44
+ # end
45
45
  #
46
46
  # end
47
47
  #
@@ -49,28 +49,43 @@
49
49
  #
50
50
  # <html><head><title>Test</title><body><i>Hello</i><br />TestHey</body></html>
51
51
  #
52
- # All calls within the block are routed to the Helper Module's constructor method,
53
- # unless preceeded by an underscore, in which case they are passed to Helper Module.
52
+ # All calls within the block are routed via the Helper Module's constructor method
53
+ # (#element in the above example) unless they are defined by the helper module, in which
54
+ # case they are sent to the helper module directly. The results of these invocations are
55
+ # appended to the output buffer. To prevent this, prefix the method with 'call_'.
54
56
  #
55
57
  # Sometimes keywords can get in the way of a construction. In these cases you can
56
- # ensure use of constructor method by suffixing an underscore '_' to the call.
57
- # All of Ruby's built-in keywords (eg. 'while', 'if', 'until', etc.) and the following
58
- # methods are treated as keywords.
58
+ # ensure use of constructor method by calling the special #build! command. You can
59
+ # also add verbatium text to the output via the #<< operator. All of Ruby's built-in
60
+ # keywords (eg. 'while', 'if', 'until', etc.) and the following methods are treated as
61
+ # keywords.
59
62
  #
60
- # singleton_method_undefined
61
63
  # method_missing
62
64
  # initialize
63
65
  # inspect
64
66
  # to_str
65
67
  # to_s
66
68
  # respond_to?
69
+ # singleton_method_undefined
67
70
  #
68
71
  # This work was of course inspired by many great minds, and represents a concise and simple
69
72
  # means of accomplishing this pattern of design, which is unique to Ruby.
70
73
 
71
74
  class BuildingBlock
72
75
 
73
- def initialize(helper_module, constructor_method)
76
+ ESCAPE = [
77
+ 'singleton_method_undefined',
78
+ 'method_missing',
79
+ 'respond_to?',
80
+ 'initialize',
81
+ 'inspect',
82
+ 'to_str',
83
+ 'to_s',
84
+ '<<',
85
+ 'build!'
86
+ ] # 'to_ary', 'p' ]
87
+
88
+ def initialize(helper_module, constructor_method, output_buffer=nil)
74
89
  @module = helper_module
75
90
  @constructor = constructor_method
76
91
  @instance_eval = method(:instance_eval)
@@ -78,7 +93,7 @@ class BuildingBlock
78
93
  @method = {}
79
94
 
80
95
  meths = []
81
- meths.concat singleton_methods
96
+ #meths.concat singleton_methods
82
97
  meths.concat public_methods
83
98
  meths.concat protected_methods
84
99
  meths.concat private_methods
@@ -87,18 +102,9 @@ class BuildingBlock
87
102
  end
88
103
 
89
104
  class << self
90
- escape = []
91
- #escape << 'p'
92
- escape << 'singleton_method_undefined'
93
- escape << 'method_missing'
94
- escape << 'initialize'
95
- escape << 'inspect'
96
- escape << 'to_str'
97
- escape << 'to_s'
98
- #escape << 'to_ary'
99
- escape << 'respond_to?'
105
+ escape = ESCAPE
100
106
  meths = []
101
- meths.concat singleton_methods
107
+ #meths.concat singleton_methods
102
108
  meths.concat public_instance_methods
103
109
  meths.concat protected_instance_methods
104
110
  meths.concat private_instance_methods
@@ -108,36 +114,44 @@ class BuildingBlock
108
114
  end
109
115
 
110
116
  @stack = []
111
- @out = ''
117
+ @out = output_buffer || ''
112
118
  end
113
119
 
114
- def method_missing(o, *a, &b)
115
- o = o.to_s
120
+ def method_missing(s, *a, &b)
121
+ s = s.to_s
116
122
 
117
123
  if b
118
124
  @stack << @out
119
125
  @out = ''
120
126
  @instance_eval.call(&b)
121
- s = @out
127
+ out = @out
122
128
  @out = @stack.pop
123
- a.unshift(s)
129
+ a.unshift(out)
124
130
  end
125
131
 
126
- if o[-1,1] == '_'
127
- m = o[0..-2].to_sym
128
- @out << @module.send(@constructor, m, *a).to_s
129
- elsif o[0,1] == '_'
130
- m = o[1..-1].to_sym
131
- @out << @module.send(m, *a, &b).to_s
132
+ if s =~ /^call_/
133
+ m = s[5..-1].to_sym
134
+ @module.send(m, *a, &b).to_s
135
+ elsif @module.respond_to?(s) #o =~ /^build_/
136
+ @out << @module.send(s, *a, &b).to_s
132
137
  else
133
- o = o.chomp('?') if o[-1,1] == '?'
134
- @out << @module.send(@constructor, o, *a).to_s
138
+ s = s.chomp('?') if s[-1,1] == '?'
139
+ @out << @module.send(@constructor, s, *a).to_s
135
140
  end
136
141
  end
137
142
 
138
143
  def to_s() @out end
139
144
  def to_str() @out end
140
145
 
146
+ def <<(s)
147
+ @out << s.to_s
148
+ end
149
+
150
+ # If creating and XML/HTML builder, you'll want to alias this to tag!.
151
+ def build!(m, *a)
152
+ @out << @module.send(@constructor, m, *a).to_s
153
+ end
154
+
141
155
  # Could improve.
142
156
 
143
157
  def inspect
@@ -149,6 +163,7 @@ class BuildingBlock
149
163
  end
150
164
 
151
165
 
166
+
152
167
  # _____ _
153
168
  # |_ _|__ ___| |_
154
169
  # | |/ _ \/ __| __|
@@ -157,6 +172,7 @@ end
157
172
  #
158
173
 
159
174
  =begin test
175
+ require 'test/unit'
160
176
 
161
177
  class TestBuildingBlock < Test::Unit::TestCase
162
178
 
@@ -176,9 +192,9 @@ end
176
192
 
177
193
  body do
178
194
  i "Hello"
179
- not_
180
- _t "Test"
181
- _t "Hey"
195
+ build! :not
196
+ t "Test"
197
+ t "Hey"
182
198
  end
183
199
  end
184
200