facets 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1260) hide show
  1. data/ProjectInfo +94 -0
  2. data/Reapfile +184 -0
  3. data/forge/README +13 -0
  4. data/forge/TODO +73 -0
  5. data/forge/autorequire.rb +83 -0
  6. data/forge/core/array/at_rand.rb +95 -0
  7. data/forge/core/array/each_slice.rb +23 -0
  8. data/forge/core/array/pick_values.rb +32 -0
  9. data/forge/core/array/rand_indexes.rb +33 -0
  10. data/forge/core/binding/class.rb +11 -0
  11. data/forge/core/binding/delegate-binding.rb +19 -0
  12. data/forge/core/binding/delegate.rb +15 -0
  13. data/forge/core/binding/proc.rb +6 -0
  14. data/forge/core/enumerable/op_fetch.rb +30 -0
  15. data/forge/core/fileutils/nl_convert.rb +133 -0
  16. data/forge/core/io/expect.rb +127 -0
  17. data/forge/core/kernel/__clone__.rb +4 -0
  18. data/forge/core/kernel/__dup__.rb +4 -0
  19. data/forge/core/kernel/call_line.rb +15 -0
  20. data/forge/core/kernel/does.rb +7 -0
  21. data/forge/core/kernel/message.rb +6 -0
  22. data/forge/core/kernel/query.rb +15 -0
  23. data/forge/core/kernel/taint.rb +10 -0
  24. data/forge/core/logger/clean_logger.rb +10 -0
  25. data/forge/core/module/attr-old.rb +308 -0
  26. data/forge/core/module/attr.rb +98 -0
  27. data/forge/core/module/attr_xxx.rb +22 -0
  28. data/forge/core/module/by_regexp.rb +21 -0
  29. data/forge/core/module/cast.rb +64 -0
  30. data/forge/core/module/class_attribute_accessors.rb +57 -0
  31. data/forge/core/module/inherit.rb +59 -0
  32. data/forge/core/module/let.rb +51 -0
  33. data/forge/core/module/meta_attr.rb +60 -0
  34. data/forge/core/module/module_attribute_accessors.rb +57 -0
  35. data/forge/core/module/permissions.rb +32 -0
  36. data/forge/core/module/preserved.rb +108 -0
  37. data/forge/core/module/sattr_accessor.rb +1 -0
  38. data/forge/core/module/sattr_reader.rb +1 -0
  39. data/forge/core/module/sattr_setter.rb +1 -0
  40. data/forge/core/module/sattr_tester.rb +1 -0
  41. data/forge/core/module/sattr_writer.rb +1 -0
  42. data/forge/core/module/tc_attr.rb +107 -0
  43. data/forge/core/module/version.rb +23 -0
  44. data/forge/core/string/op_add.rb +24 -0
  45. data/forge/core/string/op_div.rb +15 -0
  46. data/forge/core/string/pred.rb +217 -0
  47. data/forge/core/string/to_ary.rb +12 -0
  48. data/forge/core/string/word_wrap.rb +62 -0
  49. data/forge/more/autoarray.rb +29 -0
  50. data/forge/more/cache.rb +189 -0
  51. data/forge/more/class_inheritable_attributes.rb +120 -0
  52. data/forge/more/codepack.rb +58 -0
  53. data/forge/more/commandrunner.rb +101 -0
  54. data/forge/more/conditionals.rb +106 -0
  55. data/forge/more/contracts.rb +37 -0
  56. data/forge/more/daemon.rb +70 -0
  57. data/forge/more/datetime.rb +42 -0
  58. data/forge/more/detach.rb +423 -0
  59. data/forge/more/enumtype.rb +115 -0
  60. data/forge/more/fixnum_const.rb +55 -0
  61. data/forge/more/function.rb +278 -0
  62. data/forge/more/hookse.rb +107 -0
  63. data/forge/more/indexable.rb +85 -0
  64. data/forge/more/infinity.rb +123 -0
  65. data/forge/more/ioreactor.rb +671 -0
  66. data/forge/more/knowself.rb +42 -0
  67. data/forge/more/logger_sing.rb +207 -0
  68. data/forge/more/must.rb +37 -0
  69. data/forge/more/openproxy.rb +245 -0
  70. data/forge/more/ostructable.rb +212 -0
  71. data/forge/more/pairhash.rb +55 -0
  72. data/forge/more/pathname.rb +1309 -0
  73. data/forge/more/predicate.rb +181 -0
  74. data/forge/more/prereq.rb +36 -0
  75. data/forge/more/print_exception.rb +35 -0
  76. data/forge/more/rand.rb +412 -0
  77. data/forge/more/range.rb +383 -0
  78. data/forge/more/sanitize.rb +48 -0
  79. data/forge/more/service.rb +266 -0
  80. data/forge/more/superstruct.rb +735 -0
  81. data/forge/more/tag.rb +27 -0
  82. data/forge/more/testfacility.rb +80 -0
  83. data/forge/more/timer.rb +164 -0
  84. data/forge/more/toplevel.rb +76 -0
  85. data/forge/more/type.rb +232 -0
  86. data/forge/more/vars.rb +94 -0
  87. data/forge/more/version.rb +245 -0
  88. data/forge/more/world.rb +53 -0
  89. data/forge/reference/sys.rb +186 -0
  90. data/forge/reference/utils.rb +518 -0
  91. data/lib/facet/enumerable/mode.rb +1 -0
  92. data/lib/facets/core/enumerable/mode.rb +13 -0
  93. data/lib/facets/core/hash/to_ostruct.rb +1 -1
  94. data/lib/facets/core/hash/to_ostruct_recurse.rb +33 -6
  95. data/lib/facets/core/ostruct/__update__.rb +1 -0
  96. data/lib/facets/more/binaryreader.rb +3 -3
  97. data/lib/facets/more/taskable.rb +29 -0
  98. data/note/CHANGELOG +294 -0
  99. data/note/IMPORTANT +8 -0
  100. data/note/Rakefile.old +181 -0
  101. data/note/history/ANN-0.6.0 +40 -0
  102. data/note/history/ANN-0.6.1 +36 -0
  103. data/note/history/ANN-0.6.3 +43 -0
  104. data/note/history/ANN-0.7.0 +59 -0
  105. data/note/history/ANN-0.8.1 +127 -0
  106. data/note/history/INTRO +172 -0
  107. data/note/history/README +223 -0
  108. data/note/history/README-OLD +180 -0
  109. data/test/lib/facets/core/array/test_at_rand.rb +1 -1
  110. data/test/lib/facets/core/array/test_delete_unless.rb +1 -1
  111. data/test/lib/facets/core/array/test_delete_values.rb +1 -1
  112. data/test/lib/facets/core/array/test_delete_values_at.rb +1 -1
  113. data/test/lib/facets/core/array/test_first.rb +1 -1
  114. data/test/lib/facets/core/array/test_head.rb +1 -1
  115. data/test/lib/facets/core/array/test_last_index.rb +1 -1
  116. data/test/lib/facets/core/array/test_merge.rb +1 -1
  117. data/test/lib/facets/core/array/test_mid.rb +1 -1
  118. data/test/lib/facets/core/array/test_middle.rb +1 -1
  119. data/test/lib/facets/core/array/test_op_fetch.rb +1 -1
  120. data/test/lib/facets/core/array/test_op_store.rb +1 -1
  121. data/test/lib/facets/core/array/test_pick.rb +1 -1
  122. data/test/lib/facets/core/array/test_pos.rb +1 -1
  123. data/test/lib/facets/core/array/test_pot.rb +1 -1
  124. data/test/lib/facets/core/array/test_pull.rb +1 -1
  125. data/test/lib/facets/core/array/test_rand_index.rb +1 -1
  126. data/test/lib/facets/core/array/test_rand_subset.rb +1 -1
  127. data/test/lib/facets/core/array/test_range.rb +1 -1
  128. data/test/lib/facets/core/array/test_rotate.rb +1 -1
  129. data/test/lib/facets/core/array/test_select.rb +1 -1
  130. data/test/lib/facets/core/array/test_shuffle.rb +1 -1
  131. data/test/lib/facets/core/array/test_thru.rb +1 -1
  132. data/test/lib/facets/core/array/test_to_b.rb +1 -1
  133. data/test/lib/facets/core/array/test_to_h.rb +1 -1
  134. data/test/lib/facets/core/array/test_to_hash.rb +1 -1
  135. data/test/lib/facets/core/binding/self/test_of_caller.rb +1 -1
  136. data/test/lib/facets/core/binding/test___LINE__.rb +1 -1
  137. data/test/lib/facets/core/binding/test_call_stack.rb +1 -1
  138. data/test/lib/facets/core/binding/test_called.rb +1 -1
  139. data/test/lib/facets/core/binding/test_caller.rb +1 -1
  140. data/test/lib/facets/core/binding/test_defined.rb +1 -1
  141. data/test/lib/facets/core/binding/test_eval.rb +1 -1
  142. data/test/lib/facets/core/binding/test_local_variables.rb +1 -1
  143. data/test/lib/facets/core/binding/test_method_name.rb +1 -1
  144. data/test/lib/facets/core/binding/test_op_fetch.rb +1 -1
  145. data/test/lib/facets/core/binding/test_op_store.rb +1 -1
  146. data/test/lib/facets/core/binding/test_self.rb +1 -1
  147. data/test/lib/facets/core/class/test_cattr.rb +1 -1
  148. data/test/lib/facets/core/class/test_descendents.rb +1 -1
  149. data/test/lib/facets/core/class/test_method_name.rb +1 -1
  150. data/test/lib/facets/core/class/test_remove_descendents.rb +1 -1
  151. data/test/lib/facets/core/class/test_unix_path.rb +1 -1
  152. data/test/lib/facets/core/comparable/test_at_least.rb +1 -1
  153. data/test/lib/facets/core/comparable/test_clip.rb +1 -1
  154. data/test/lib/facets/core/comparable/test_cmp.rb +1 -1
  155. data/test/lib/facets/core/continuation/self/test_create.rb +1 -1
  156. data/test/lib/facets/core/date/test_days_in_month.rb +1 -1
  157. data/test/lib/facets/core/date/test_days_of_month.rb +1 -1
  158. data/test/lib/facets/core/date/test_stamp.rb +1 -1
  159. data/test/lib/facets/core/date/test_to_date.rb +1 -1
  160. data/test/lib/facets/core/date/test_to_s.rb +1 -1
  161. data/test/lib/facets/core/date/test_to_time.rb +1 -1
  162. data/test/lib/facets/core/dir/self/test_ancestor.rb +1 -1
  163. data/test/lib/facets/core/dir/self/test_ascend.rb +1 -1
  164. data/test/lib/facets/core/enumerable/self/test_combinations.rb +1 -1
  165. data/test/lib/facets/core/enumerable/self/test_cross.rb +1 -1
  166. data/test/lib/facets/core/enumerable/test_collect_with_index.rb +1 -1
  167. data/test/lib/facets/core/enumerable/test_commonality.rb +1 -1
  168. data/test/lib/facets/core/enumerable/test_compact_collect.rb +1 -1
  169. data/test/lib/facets/core/enumerable/test_count.rb +1 -1
  170. data/test/lib/facets/core/enumerable/test_cross.rb +1 -1
  171. data/test/lib/facets/core/enumerable/test_each_combination.rb +1 -1
  172. data/test/lib/facets/core/enumerable/test_each_pair.rb +1 -1
  173. data/test/lib/facets/core/enumerable/test_each_slice.rb +1 -1
  174. data/test/lib/facets/core/enumerable/test_each_unique_pair.rb +1 -1
  175. data/test/lib/facets/core/enumerable/test_entropy.rb +1 -1
  176. data/test/lib/facets/core/enumerable/test_every.rb +1 -1
  177. data/test/lib/facets/core/enumerable/test_ew.rb +1 -1
  178. data/test/lib/facets/core/enumerable/test_filter_collect.rb +1 -1
  179. data/test/lib/facets/core/enumerable/test_find_collisions.rb +1 -1
  180. data/test/lib/facets/core/enumerable/test_frequency.rb +1 -1
  181. data/test/lib/facets/core/enumerable/test_graph.rb +1 -1
  182. data/test/lib/facets/core/enumerable/test_ideal_entropy.rb +1 -1
  183. data/test/lib/facets/core/enumerable/test_none.rb +1 -1
  184. data/test/lib/facets/core/enumerable/test_occur.rb +1 -1
  185. data/test/lib/facets/core/enumerable/test_one.rb +1 -1
  186. data/test/lib/facets/core/enumerable/test_op_pow.rb +1 -1
  187. data/test/lib/facets/core/enumerable/test_partition_by.rb +1 -1
  188. data/test/lib/facets/core/enumerable/test_permute.rb +1 -1
  189. data/test/lib/facets/core/enumerable/test_probability.rb +1 -1
  190. data/test/lib/facets/core/enumerable/test_to_h.rb +1 -1
  191. data/test/lib/facets/core/enumerable/test_uniq_by.rb +1 -1
  192. data/test/lib/facets/core/file/self/test_create.rb +1 -1
  193. data/test/lib/facets/core/file/self/test_open_as_string.rb +1 -1
  194. data/test/lib/facets/core/file/self/test_read_list.rb +1 -1
  195. data/test/lib/facets/core/file/self/test_sanitize.rb +1 -1
  196. data/test/lib/facets/core/file/self/test_split_all.rb +1 -1
  197. data/test/lib/facets/core/float/test_round_at.rb +1 -1
  198. data/test/lib/facets/core/float/test_round_to.rb +1 -1
  199. data/test/lib/facets/core/hash/self/test_zipnew.rb +1 -1
  200. data/test/lib/facets/core/hash/test_alias.rb +1 -1
  201. data/test/lib/facets/core/hash/test_assert_has_keys.rb +1 -1
  202. data/test/lib/facets/core/hash/test_assert_has_only_keys.rb +1 -1
  203. data/test/lib/facets/core/hash/test_at.rb +1 -1
  204. data/test/lib/facets/core/hash/test_collate.rb +1 -1
  205. data/test/lib/facets/core/hash/test_each.rb +1 -1
  206. data/test/lib/facets/core/hash/test_each_with_index.rb +1 -1
  207. data/test/lib/facets/core/hash/test_each_with_key.rb +1 -1
  208. data/test/lib/facets/core/hash/test_graph.rb +1 -1
  209. data/test/lib/facets/core/hash/test_has_keys.rb +1 -1
  210. data/test/lib/facets/core/hash/test_has_only_keys.rb +1 -1
  211. data/test/lib/facets/core/hash/test_inverse.rb +1 -1
  212. data/test/lib/facets/core/hash/test_keys_to_s.rb +1 -1
  213. data/test/lib/facets/core/hash/test_keys_to_sym.rb +1 -1
  214. data/test/lib/facets/core/hash/test_op_fetch.rb +1 -1
  215. data/test/lib/facets/core/hash/test_op_lshift.rb +1 -1
  216. data/test/lib/facets/core/hash/test_rand_key.rb +1 -1
  217. data/test/lib/facets/core/hash/test_rand_pair.rb +1 -1
  218. data/test/lib/facets/core/hash/test_rand_value.rb +1 -1
  219. data/test/lib/facets/core/hash/test_replace_each.rb +1 -1
  220. data/test/lib/facets/core/hash/test_shuffle.rb +1 -1
  221. data/test/lib/facets/core/hash/test_slice.rb +1 -1
  222. data/test/lib/facets/core/hash/test_swap.rb +1 -1
  223. data/test/lib/facets/core/hash/test_swapkey.rb +1 -1
  224. data/test/lib/facets/core/hash/test_to_h.rb +1 -1
  225. data/test/lib/facets/core/hash/test_to_ostruct.rb +1 -1
  226. data/test/lib/facets/core/hash/test_to_ostruct_recurse.rb +15 -1
  227. data/test/lib/facets/core/hash/test_traverse.rb +1 -1
  228. data/test/lib/facets/core/hash/test_update_each.rb +1 -1
  229. data/test/lib/facets/core/hash/test_update_keys.rb +1 -1
  230. data/test/lib/facets/core/hash/test_update_values.rb +1 -1
  231. data/test/lib/facets/core/hash/test_weave.rb +1 -1
  232. data/test/lib/facets/core/integer/test_factorial.rb +1 -1
  233. data/test/lib/facets/core/integer/test_multiple.rb +1 -1
  234. data/test/lib/facets/core/integer/test_ordinal.rb +1 -1
  235. data/test/lib/facets/core/integer/test_times_collect.rb +1 -1
  236. data/test/lib/facets/core/kernel/test___class__.rb +1 -1
  237. data/test/lib/facets/core/kernel/test_as.rb +1 -1
  238. data/test/lib/facets/core/kernel/test_assign_from.rb +1 -1
  239. data/test/lib/facets/core/kernel/test_assign_with.rb +1 -1
  240. data/test/lib/facets/core/kernel/test_bool.rb +1 -1
  241. data/test/lib/facets/core/kernel/test_bug.rb +1 -1
  242. data/test/lib/facets/core/kernel/test_call_stack.rb +1 -1
  243. data/test/lib/facets/core/kernel/test_called.rb +1 -1
  244. data/test/lib/facets/core/kernel/test_constant.rb +1 -1
  245. data/test/lib/facets/core/kernel/test_copy.rb +1 -1
  246. data/test/lib/facets/core/kernel/test_deep_copy.rb +1 -1
  247. data/test/lib/facets/core/kernel/test_demo.rb +1 -1
  248. data/test/lib/facets/core/kernel/test_fn.rb +1 -1
  249. data/test/lib/facets/core/kernel/test_generate_method_name.rb +1 -1
  250. data/test/lib/facets/core/kernel/test_get_by_id.rb +1 -1
  251. data/test/lib/facets/core/kernel/test_here.rb +1 -1
  252. data/test/lib/facets/core/kernel/test_in.rb +1 -1
  253. data/test/lib/facets/core/kernel/test_maybe.rb +1 -1
  254. data/test/lib/facets/core/kernel/test_metaclass.rb +1 -1
  255. data/test/lib/facets/core/kernel/test_method.rb +1 -1
  256. data/test/lib/facets/core/kernel/test_methodname.rb +1 -1
  257. data/test/lib/facets/core/kernel/test_methods.rb +1 -1
  258. data/test/lib/facets/core/kernel/test_new.rb +1 -1
  259. data/test/lib/facets/core/kernel/test_object_class.rb +1 -1
  260. data/test/lib/facets/core/kernel/test_object_hexid.rb +1 -1
  261. data/test/lib/facets/core/kernel/test_require_all.rb +1 -1
  262. data/test/lib/facets/core/kernel/test_require_esc.rb +1 -1
  263. data/test/lib/facets/core/kernel/test_require_facet.rb +1 -1
  264. data/test/lib/facets/core/kernel/test_resc.rb +1 -1
  265. data/test/lib/facets/core/kernel/test_returning.rb +1 -1
  266. data/test/lib/facets/core/kernel/test_send_as.rb +1 -1
  267. data/test/lib/facets/core/kernel/test_set_from.rb +1 -1
  268. data/test/lib/facets/core/kernel/test_set_with.rb +1 -1
  269. data/test/lib/facets/core/kernel/test_silently.rb +1 -1
  270. data/test/lib/facets/core/kernel/test_singleton.rb +1 -1
  271. data/test/lib/facets/core/kernel/test_superior.rb +1 -1
  272. data/test/lib/facets/core/kernel/test_supermethod.rb +1 -1
  273. data/test/lib/facets/core/kernel/test_this.rb +1 -1
  274. data/test/lib/facets/core/kernel/test_to_b.rb +1 -1
  275. data/test/lib/facets/core/kernel/test_to_bool.rb +1 -1
  276. data/test/lib/facets/core/kernel/test_uri.rb +1 -1
  277. data/test/lib/facets/core/kernel/test_val.rb +1 -1
  278. data/test/lib/facets/core/kernel/test_with_accessor.rb +1 -1
  279. data/test/lib/facets/core/matchdata/test_match.rb +1 -1
  280. data/test/lib/facets/core/matchdata/test_matchtree.rb +1 -1
  281. data/test/lib/facets/core/module/test_abstract.rb +1 -1
  282. data/test/lib/facets/core/module/test_alias_module_function.rb +1 -1
  283. data/test/lib/facets/core/module/test_ancestor.rb +1 -1
  284. data/test/lib/facets/core/module/test_basename.rb +1 -1
  285. data/test/lib/facets/core/module/test_by_name.rb +1 -1
  286. data/test/lib/facets/core/module/test_clone_using.rb +1 -1
  287. data/test/lib/facets/core/module/test_dirname.rb +1 -1
  288. data/test/lib/facets/core/module/test_equate_on.rb +1 -1
  289. data/test/lib/facets/core/module/test_generate_instance_method_name.rb +1 -1
  290. data/test/lib/facets/core/module/test_include_as.rb +1 -1
  291. data/test/lib/facets/core/module/test_inherit.rb +1 -1
  292. data/test/lib/facets/core/module/test_initializer.rb +1 -1
  293. data/test/lib/facets/core/module/test_instance_methods.rb +1 -1
  294. data/test/lib/facets/core/module/test_integrate.rb +1 -1
  295. data/test/lib/facets/core/module/test_memoize.rb +1 -1
  296. data/test/lib/facets/core/module/test_modspace.rb +1 -1
  297. data/test/lib/facets/core/module/test_namespace.rb +1 -1
  298. data/test/lib/facets/core/module/test_nesting.rb +1 -1
  299. data/test/lib/facets/core/module/test_nodef.rb +1 -1
  300. data/test/lib/facets/core/module/test_on_included.rb +1 -1
  301. data/test/lib/facets/core/module/test_redef.rb +1 -1
  302. data/test/lib/facets/core/module/test_redefine_method.rb +1 -1
  303. data/test/lib/facets/core/module/test_redirect.rb +1 -1
  304. data/test/lib/facets/core/module/test_redirect_method.rb +1 -1
  305. data/test/lib/facets/core/module/test_remove.rb +1 -1
  306. data/test/lib/facets/core/module/test_rename.rb +1 -1
  307. data/test/lib/facets/core/module/test_rename_method.rb +1 -1
  308. data/test/lib/facets/core/module/test_revisal.rb +1 -1
  309. data/test/lib/facets/core/module/test_shadow_method.rb +1 -1
  310. data/test/lib/facets/core/module/test_sort_on.rb +1 -1
  311. data/test/lib/facets/core/module/test_this.rb +1 -1
  312. data/test/lib/facets/core/module/test_wrap.rb +1 -1
  313. data/test/lib/facets/core/module/test_wrap_method.rb +1 -1
  314. data/test/lib/facets/core/nilclass/test_blank.rb +1 -1
  315. data/test/lib/facets/core/nilclass/test_empty.rb +1 -1
  316. data/test/lib/facets/core/nilclass/test_include.rb +1 -1
  317. data/test/lib/facets/core/nilclass/test_op_fetch.rb +1 -1
  318. data/test/lib/facets/core/nilclass/test_size.rb +1 -1
  319. data/test/lib/facets/core/nilclass/test_to_h.rb +1 -1
  320. data/test/lib/facets/core/numeric/test_approx.rb +1 -1
  321. data/test/lib/facets/core/numeric/test_ceil_multiple.rb +1 -1
  322. data/test/lib/facets/core/numeric/test_succ.rb +1 -1
  323. data/test/lib/facets/core/numeric/test_to_b.rb +1 -1
  324. data/test/lib/facets/core/ostruct/test___merge__.rb +1 -1
  325. data/test/lib/facets/core/ostruct/test___update__.rb +1 -1
  326. data/test/lib/facets/core/ostruct/test_op_fetch.rb +1 -1
  327. data/test/lib/facets/core/ostruct/test_op_store.rb +1 -1
  328. data/test/lib/facets/core/proc/test_compose.rb +1 -1
  329. data/test/lib/facets/core/proc/test_to_method.rb +1 -1
  330. data/test/lib/facets/core/range/test_to_r.rb +1 -1
  331. data/test/lib/facets/core/range/test_to_range.rb +1 -1
  332. data/test/lib/facets/core/range/test_umbrella.rb +1 -1
  333. data/test/lib/facets/core/range/test_within.rb +1 -1
  334. data/test/lib/facets/core/regexp/test_arity.rb +1 -1
  335. data/test/lib/facets/core/regexp/test_to_re.rb +1 -1
  336. data/test/lib/facets/core/regexp/test_to_regexp.rb +1 -1
  337. data/test/lib/facets/core/string/self/test_interpolate.rb +1 -1
  338. data/test/lib/facets/core/string/self/test_patterns.rb +1 -1
  339. data/test/lib/facets/core/string/self/test_rand_letter.rb +1 -1
  340. data/test/lib/facets/core/string/test_align_center.rb +1 -1
  341. data/test/lib/facets/core/string/test_at_rand.rb +1 -1
  342. data/test/lib/facets/core/string/test_basename.rb +1 -1
  343. data/test/lib/facets/core/string/test_blank.rb +1 -1
  344. data/test/lib/facets/core/string/test_bracket.rb +1 -1
  345. data/test/lib/facets/core/string/test_camelcase.rb +1 -1
  346. data/test/lib/facets/core/string/test_camelize.rb +1 -1
  347. data/test/lib/facets/core/string/test_capitalized.rb +1 -1
  348. data/test/lib/facets/core/string/test_chars.rb +1 -1
  349. data/test/lib/facets/core/string/test_cmp.rb +1 -1
  350. data/test/lib/facets/core/string/test_demodulize.rb +1 -1
  351. data/test/lib/facets/core/string/test_downcase.rb +1 -1
  352. data/test/lib/facets/core/string/test_dresner.rb +1 -1
  353. data/test/lib/facets/core/string/test_each_char.rb +1 -1
  354. data/test/lib/facets/core/string/test_each_word.rb +1 -1
  355. data/test/lib/facets/core/string/test_first.rb +1 -1
  356. data/test/lib/facets/core/string/test_fold.rb +1 -1
  357. data/test/lib/facets/core/string/test_frequency.rb +1 -1
  358. data/test/lib/facets/core/string/test_humanize.rb +1 -1
  359. data/test/lib/facets/core/string/test_indent.rb +1 -1
  360. data/test/lib/facets/core/string/test_index_all.rb +1 -1
  361. data/test/lib/facets/core/string/test_last.rb +1 -1
  362. data/test/lib/facets/core/string/test_line_wrap.rb +1 -1
  363. data/test/lib/facets/core/string/test_lines.rb +1 -1
  364. data/test/lib/facets/core/string/test_lowercase.rb +1 -1
  365. data/test/lib/facets/core/string/test_margin.rb +1 -1
  366. data/test/lib/facets/core/string/test_methodize.rb +1 -1
  367. data/test/lib/facets/core/string/test_modulize.rb +1 -1
  368. data/test/lib/facets/core/string/test_mscan.rb +1 -1
  369. data/test/lib/facets/core/string/test_natcmp.rb +1 -1
  370. data/test/lib/facets/core/string/test_nchar.rb +1 -1
  371. data/test/lib/facets/core/string/test_pathize.rb +1 -1
  372. data/test/lib/facets/core/string/test_pop.rb +1 -1
  373. data/test/lib/facets/core/string/test_pot.rb +1 -1
  374. data/test/lib/facets/core/string/test_probability.rb +1 -1
  375. data/test/lib/facets/core/string/test_push.rb +1 -1
  376. data/test/lib/facets/core/string/test_quote.rb +1 -1
  377. data/test/lib/facets/core/string/test_rand_byte.rb +1 -1
  378. data/test/lib/facets/core/string/test_rand_index.rb +1 -1
  379. data/test/lib/facets/core/string/test_range.rb +1 -1
  380. data/test/lib/facets/core/string/test_range_all.rb +1 -1
  381. data/test/lib/facets/core/string/test_range_of_line.rb +1 -1
  382. data/test/lib/facets/core/string/test_regesc.rb +1 -1
  383. data/test/lib/facets/core/string/test_shatter.rb +1 -1
  384. data/test/lib/facets/core/string/test_shift.rb +1 -1
  385. data/test/lib/facets/core/string/test_shuffle.rb +1 -1
  386. data/test/lib/facets/core/string/test_similarity.rb +1 -1
  387. data/test/lib/facets/core/string/test_singular.rb +1 -1
  388. data/test/lib/facets/core/string/test_soundex.rb +1 -1
  389. data/test/lib/facets/core/string/test_succ.rb +1 -1
  390. data/test/lib/facets/core/string/test_to_a.rb +1 -1
  391. data/test/lib/facets/core/string/test_to_b.rb +1 -1
  392. data/test/lib/facets/core/string/test_to_const.rb +1 -1
  393. data/test/lib/facets/core/string/test_to_date.rb +1 -1
  394. data/test/lib/facets/core/string/test_to_proc.rb +1 -1
  395. data/test/lib/facets/core/string/test_to_re.rb +1 -1
  396. data/test/lib/facets/core/string/test_to_time.rb +1 -1
  397. data/test/lib/facets/core/string/test_unix_crypt.rb +1 -1
  398. data/test/lib/facets/core/string/test_unpack.rb +1 -1
  399. data/test/lib/facets/core/string/test_unshift.rb +1 -1
  400. data/test/lib/facets/core/string/test_upcase.rb +1 -1
  401. data/test/lib/facets/core/string/test_whitespace.rb +1 -1
  402. data/test/lib/facets/core/string/test_word_filter.rb +1 -1
  403. data/test/lib/facets/core/string/test_word_wrap.rb +1 -1
  404. data/test/lib/facets/core/string/test_words.rb +1 -1
  405. data/test/lib/facets/core/symbol/test_camelcase.rb +1 -1
  406. data/test/lib/facets/core/symbol/test_camelize.rb +1 -1
  407. data/test/lib/facets/core/symbol/test_capitalize.rb +1 -1
  408. data/test/lib/facets/core/symbol/test_capitalized.rb +1 -1
  409. data/test/lib/facets/core/symbol/test_downcase.rb +1 -1
  410. data/test/lib/facets/core/symbol/test_not.rb +1 -1
  411. data/test/lib/facets/core/symbol/test_pad.rb +1 -1
  412. data/test/lib/facets/core/symbol/test_succ.rb +1 -1
  413. data/test/lib/facets/core/symbol/test_to_const.rb +1 -1
  414. data/test/lib/facets/core/symbol/test_to_proc.rb +1 -1
  415. data/test/lib/facets/core/symbol/test_to_str.rb +1 -1
  416. data/test/lib/facets/core/symbol/test_underscore.rb +1 -1
  417. data/test/lib/facets/core/symbol/test_upcase.rb +1 -1
  418. data/test/lib/facets/core/time/test_change.rb +1 -1
  419. data/test/lib/facets/core/time/test_elapse.rb +1 -1
  420. data/test/lib/facets/core/time/test_stamp.rb +1 -1
  421. data/test/lib/facets/core/time/test_to_date.rb +1 -1
  422. data/test/lib/facets/core/time/test_to_s.rb +1 -1
  423. data/test/lib/facets/core/time/test_to_time.rb +1 -1
  424. data/test/lib/facets/more/test_annattr.rb +1 -1
  425. data/test/lib/facets/more/test_annotation.rb +1 -1
  426. data/test/lib/facets/more/test_ansicode.rb +1 -1
  427. data/test/lib/facets/more/test_association.rb +1 -1
  428. data/test/lib/facets/more/test_basicobject.rb +1 -1
  429. data/test/lib/facets/more/test_bbcode.rb +1 -1
  430. data/test/lib/facets/more/test_binaryreader.rb +1 -1
  431. data/test/lib/facets/more/test_bitmask.rb +1 -1
  432. data/test/lib/facets/more/test_bytes.rb +1 -1
  433. data/test/lib/facets/more/test_classinherit.rb +1 -1
  434. data/test/lib/facets/more/test_classmethods.rb +1 -1
  435. data/test/lib/facets/more/test_coroutine.rb +1 -1
  436. data/test/lib/facets/more/test_crypt.rb +1 -1
  437. data/test/lib/facets/more/test_dictionary.rb +1 -1
  438. data/test/lib/facets/more/test_elementor.rb +1 -1
  439. data/test/lib/facets/more/test_enumerablepass.rb +1 -1
  440. data/test/lib/facets/more/test_floatstring.rb +1 -1
  441. data/test/lib/facets/more/test_functor.rb +1 -1
  442. data/test/lib/facets/more/test_htmlbuilder.rb +1 -1
  443. data/test/lib/facets/more/test_inheritor.rb +1 -1
  444. data/test/lib/facets/more/test_interval.rb +1 -1
  445. data/test/lib/facets/more/test_json.rb +1 -1
  446. data/test/lib/facets/more/test_lisp.rb +1 -1
  447. data/test/lib/facets/more/test_lisp_format.rb +1 -1
  448. data/test/lib/facets/more/test_lrucache.rb +1 -1
  449. data/test/lib/facets/more/test_mathconstants.rb +1 -1
  450. data/test/lib/facets/more/test_methodprobe.rb +1 -1
  451. data/test/lib/facets/more/test_multipliers.rb +1 -1
  452. data/test/lib/facets/more/test_multiton.rb +1 -1
  453. data/test/lib/facets/more/test_nackclass.rb +1 -1
  454. data/test/lib/facets/more/test_nilcomparable.rb +1 -1
  455. data/test/lib/facets/more/test_opencascade.rb +1 -1
  456. data/test/lib/facets/more/test_openobject.rb +1 -1
  457. data/test/lib/facets/more/test_overload.rb +1 -1
  458. data/test/lib/facets/more/test_paramix.rb +1 -1
  459. data/test/lib/facets/more/test_pqueue.rb +1 -1
  460. data/test/lib/facets/more/test_preinitialize.rb +1 -1
  461. data/test/lib/facets/more/test_promoteself.rb +1 -1
  462. data/test/lib/facets/more/test_recorder.rb +1 -1
  463. data/test/lib/facets/more/test_snapshot.rb +1 -1
  464. data/test/lib/facets/more/test_statichash.rb +1 -1
  465. data/test/lib/facets/more/test_syncarray.rb +1 -1
  466. data/test/lib/facets/more/test_synchash.rb +1 -1
  467. data/test/lib/facets/more/test_tagiterator.rb +1 -1
  468. data/test/lib/facets/more/test_taskable.rb +19 -1
  469. data/test/lib/facets/more/test_timer.rb +1 -1
  470. data/test/lib/facets/more/test_times.rb +1 -1
  471. data/test/lib/facets/more/test_tuple.rb +1 -1
  472. data/test/lib/facets/more/test_typecast.rb +1 -1
  473. data/test/lib/facets/more/test_uninheritable.rb +1 -1
  474. data/test/lib/facets/more/test_units.rb +1 -1
  475. data/test/lib/facets/more/test_xmlbuilder.rb +1 -1
  476. data/test/lib/facets/more/test_xmlhelper.rb +1 -1
  477. data/test/lib/facets/more/test_xoxo.rb +1 -1
  478. data/test/lib/facets/more/test_yamlstruct.rb +1 -1
  479. data/web/doc/api/core/classes/Array.html +1356 -0
  480. data/web/doc/api/core/classes/Binding.html +538 -0
  481. data/web/doc/api/core/classes/Class.html +475 -0
  482. data/web/doc/api/core/classes/Comparable.html +231 -0
  483. data/web/doc/api/core/classes/Continuation.html +168 -0
  484. data/web/doc/api/core/classes/Date.html +219 -0
  485. data/web/doc/api/core/classes/Dir.html +208 -0
  486. data/web/doc/api/core/classes/Enumerable.html +1435 -0
  487. data/web/doc/api/core/classes/FalseClass.html +115 -0
  488. data/web/doc/api/core/classes/File.html +349 -0
  489. data/web/doc/api/core/classes/FileUtils.html +468 -0
  490. data/web/doc/api/core/classes/Float.html +157 -0
  491. data/web/doc/api/core/classes/Gem.html +171 -0
  492. data/web/doc/api/core/classes/Hash.html +1657 -0
  493. data/web/doc/api/core/classes/Integer.html +353 -0
  494. data/web/doc/api/core/classes/Kernal.html +86 -0
  495. data/web/doc/api/core/classes/Kernel.html +1972 -0
  496. data/web/doc/api/core/classes/Logger.html +157 -0
  497. data/web/doc/api/core/classes/MatchData.html +195 -0
  498. data/web/doc/api/core/classes/Module.html +1712 -0
  499. data/web/doc/api/core/classes/NackClass.html +92 -0
  500. data/web/doc/api/core/classes/NilClass.html +332 -0
  501. data/web/doc/api/core/classes/Numeric.html +306 -0
  502. data/web/doc/api/core/classes/Object.html +332 -0
  503. data/web/doc/api/core/classes/OpenStruct.html +315 -0
  504. data/web/doc/api/core/classes/Pathname.html +154 -0
  505. data/web/doc/api/core/classes/Proc.html +154 -0
  506. data/web/doc/api/core/classes/Range.html +235 -0
  507. data/web/doc/api/core/classes/Regexp.html +185 -0
  508. data/web/doc/api/core/classes/ScriptBug.html +92 -0
  509. data/web/doc/api/core/classes/String.html +3286 -0
  510. data/web/doc/api/core/classes/Symbol.html +463 -0
  511. data/web/doc/api/core/classes/Time.html +307 -0
  512. data/web/doc/api/core/classes/TrueClass.html +115 -0
  513. data/web/doc/api/core/classes/UnboundMethod.html +121 -0
  514. data/web/doc/api/core/created.rid +1 -0
  515. data/web/doc/api/core/files/AUTHORS.html +206 -0
  516. data/web/doc/api/core/files/COPYING.html +517 -0
  517. data/web/doc/api/core/files/README.html +386 -0
  518. data/web/doc/api/core/files/WARNING.html +151 -0
  519. data/web/doc/api/core/files/lib/facets/core/all_rb.html +96 -0
  520. data/web/doc/api/core/files/lib/facets/core/array/at_rand_rb.html +92 -0
  521. data/web/doc/api/core/files/lib/facets/core/array/body_rb.html +100 -0
  522. data/web/doc/api/core/files/lib/facets/core/array/delete_unless_rb.html +92 -0
  523. data/web/doc/api/core/files/lib/facets/core/array/delete_values_at_rb.html +92 -0
  524. data/web/doc/api/core/files/lib/facets/core/array/delete_values_rb.html +92 -0
  525. data/web/doc/api/core/files/lib/facets/core/array/each_with_key_rb.html +92 -0
  526. data/web/doc/api/core/files/lib/facets/core/array/first_rb.html +96 -0
  527. data/web/doc/api/core/files/lib/facets/core/array/foot_rb.html +100 -0
  528. data/web/doc/api/core/files/lib/facets/core/array/head_rb.html +92 -0
  529. data/web/doc/api/core/files/lib/facets/core/array/join_sentence_rb.html +92 -0
  530. data/web/doc/api/core/files/lib/facets/core/array/last_index_rb.html +92 -0
  531. data/web/doc/api/core/files/lib/facets/core/array/last_rb.html +100 -0
  532. data/web/doc/api/core/files/lib/facets/core/array/merge_rb.html +92 -0
  533. data/web/doc/api/core/files/lib/facets/core/array/mid_rb.html +92 -0
  534. data/web/doc/api/core/files/lib/facets/core/array/middle_rb.html +92 -0
  535. data/web/doc/api/core/files/lib/facets/core/array/op_fetch_rb.html +92 -0
  536. data/web/doc/api/core/files/lib/facets/core/array/op_mod_rb.html +92 -0
  537. data/web/doc/api/core/files/lib/facets/core/array/op_store_rb.html +96 -0
  538. data/web/doc/api/core/files/lib/facets/core/array/pick_rb.html +92 -0
  539. data/web/doc/api/core/files/lib/facets/core/array/pos_rb.html +92 -0
  540. data/web/doc/api/core/files/lib/facets/core/array/pot_rb.html +92 -0
  541. data/web/doc/api/core/files/lib/facets/core/array/pull_rb.html +92 -0
  542. data/web/doc/api/core/files/lib/facets/core/array/rand_index_rb.html +92 -0
  543. data/web/doc/api/core/files/lib/facets/core/array/rand_subset_rb.html +92 -0
  544. data/web/doc/api/core/files/lib/facets/core/array/range_rb.html +92 -0
  545. data/web/doc/api/core/files/lib/facets/core/array/rotate_rb.html +92 -0
  546. data/web/doc/api/core/files/lib/facets/core/array/select_rb.html +92 -0
  547. data/web/doc/api/core/files/lib/facets/core/array/shuffle_rb.html +92 -0
  548. data/web/doc/api/core/files/lib/facets/core/array/store_rb.html +92 -0
  549. data/web/doc/api/core/files/lib/facets/core/array/tail_rb.html +100 -0
  550. data/web/doc/api/core/files/lib/facets/core/array/thru_rb.html +92 -0
  551. data/web/doc/api/core/files/lib/facets/core/array/to_b_rb.html +92 -0
  552. data/web/doc/api/core/files/lib/facets/core/array/to_h_rb.html +92 -0
  553. data/web/doc/api/core/files/lib/facets/core/array/to_hash_rb.html +92 -0
  554. data/web/doc/api/core/files/lib/facets/core/array/unzip_rb.html +92 -0
  555. data/web/doc/api/core/files/lib/facets/core/binding/__DIR___rb.html +100 -0
  556. data/web/doc/api/core/files/lib/facets/core/binding/__FILE___rb.html +100 -0
  557. data/web/doc/api/core/files/lib/facets/core/binding/__LINE___rb.html +96 -0
  558. data/web/doc/api/core/files/lib/facets/core/binding/call_stack_rb.html +97 -0
  559. data/web/doc/api/core/files/lib/facets/core/binding/called_rb.html +96 -0
  560. data/web/doc/api/core/files/lib/facets/core/binding/caller_rb.html +96 -0
  561. data/web/doc/api/core/files/lib/facets/core/binding/defined_rb.html +96 -0
  562. data/web/doc/api/core/files/lib/facets/core/binding/eval_rb.html +92 -0
  563. data/web/doc/api/core/files/lib/facets/core/binding/local_variables_rb.html +96 -0
  564. data/web/doc/api/core/files/lib/facets/core/binding/method_name_rb.html +96 -0
  565. data/web/doc/api/core/files/lib/facets/core/binding/op_fetch_rb.html +97 -0
  566. data/web/doc/api/core/files/lib/facets/core/binding/op_store_rb.html +97 -0
  567. data/web/doc/api/core/files/lib/facets/core/binding/self/of_caller_rb.html +96 -0
  568. data/web/doc/api/core/files/lib/facets/core/binding/self_rb.html +96 -0
  569. data/web/doc/api/core/files/lib/facets/core/binding_rb.html +109 -0
  570. data/web/doc/api/core/files/lib/facets/core/class/by_name_rb.html +96 -0
  571. data/web/doc/api/core/files/lib/facets/core/class/cattr_accessor_rb.html +100 -0
  572. data/web/doc/api/core/files/lib/facets/core/class/cattr_rb.html +92 -0
  573. data/web/doc/api/core/files/lib/facets/core/class/cattr_reader_rb.html +100 -0
  574. data/web/doc/api/core/files/lib/facets/core/class/cattr_writer_rb.html +100 -0
  575. data/web/doc/api/core/files/lib/facets/core/class/descendents_rb.html +92 -0
  576. data/web/doc/api/core/files/lib/facets/core/class/method_name_rb.html +92 -0
  577. data/web/doc/api/core/files/lib/facets/core/class/remove_descendents_rb.html +96 -0
  578. data/web/doc/api/core/files/lib/facets/core/class/remove_subclasses_rb.html +100 -0
  579. data/web/doc/api/core/files/lib/facets/core/class/subclasses_rb.html +100 -0
  580. data/web/doc/api/core/files/lib/facets/core/class/to_proc_rb.html +98 -0
  581. data/web/doc/api/core/files/lib/facets/core/class/unix_path_rb.html +92 -0
  582. data/web/doc/api/core/files/lib/facets/core/comparable/at_least_rb.html +92 -0
  583. data/web/doc/api/core/files/lib/facets/core/comparable/at_most_rb.html +100 -0
  584. data/web/doc/api/core/files/lib/facets/core/comparable/cap_rb.html +100 -0
  585. data/web/doc/api/core/files/lib/facets/core/comparable/clip_rb.html +92 -0
  586. data/web/doc/api/core/files/lib/facets/core/comparable/cmp_rb.html +92 -0
  587. data/web/doc/api/core/files/lib/facets/core/continuation/self/create_rb.html +148 -0
  588. data/web/doc/api/core/files/lib/facets/core/date/days_in_month_rb.html +96 -0
  589. data/web/doc/api/core/files/lib/facets/core/date/days_of_month_rb.html +96 -0
  590. data/web/doc/api/core/files/lib/facets/core/date/stamp_rb.html +96 -0
  591. data/web/doc/api/core/files/lib/facets/core/date/to_date_rb.html +96 -0
  592. data/web/doc/api/core/files/lib/facets/core/date/to_s_rb.html +96 -0
  593. data/web/doc/api/core/files/lib/facets/core/date/to_time_rb.html +96 -0
  594. data/web/doc/api/core/files/lib/facets/core/dir/self/ancestor_rb.html +92 -0
  595. data/web/doc/api/core/files/lib/facets/core/dir/self/ascend_rb.html +92 -0
  596. data/web/doc/api/core/files/lib/facets/core/dir/self/descend_rb.html +92 -0
  597. data/web/doc/api/core/files/lib/facets/core/dir/self/ls_r_rb.html +92 -0
  598. data/web/doc/api/core/files/lib/facets/core/dir/self/recurse_rb.html +100 -0
  599. data/web/doc/api/core/files/lib/facets/core/enumerable/accumulate_rb.html +96 -0
  600. data/web/doc/api/core/files/lib/facets/core/enumerable/collect_if_rb.html +92 -0
  601. data/web/doc/api/core/files/lib/facets/core/enumerable/collect_with_counter_rb.html +100 -0
  602. data/web/doc/api/core/files/lib/facets/core/enumerable/collect_with_index_rb.html +92 -0
  603. data/web/doc/api/core/files/lib/facets/core/enumerable/commonality_rb.html +92 -0
  604. data/web/doc/api/core/files/lib/facets/core/enumerable/compact_collect_rb.html +96 -0
  605. data/web/doc/api/core/files/lib/facets/core/enumerable/compact_map_rb.html +100 -0
  606. data/web/doc/api/core/files/lib/facets/core/enumerable/count_rb.html +92 -0
  607. data/web/doc/api/core/files/lib/facets/core/enumerable/cross_rb.html +96 -0
  608. data/web/doc/api/core/files/lib/facets/core/enumerable/each_by_rb.html +100 -0
  609. data/web/doc/api/core/files/lib/facets/core/enumerable/each_combination_rb.html +92 -0
  610. data/web/doc/api/core/files/lib/facets/core/enumerable/each_pair_rb.html +92 -0
  611. data/web/doc/api/core/files/lib/facets/core/enumerable/each_permutation_rb.html +100 -0
  612. data/web/doc/api/core/files/lib/facets/core/enumerable/each_slice_rb.html +92 -0
  613. data/web/doc/api/core/files/lib/facets/core/enumerable/each_unique_pair_rb.html +96 -0
  614. data/web/doc/api/core/files/lib/facets/core/enumerable/each_with_counter_rb.html +92 -0
  615. data/web/doc/api/core/files/lib/facets/core/enumerable/elementwise_rb.html +100 -0
  616. data/web/doc/api/core/files/lib/facets/core/enumerable/entropy_rb.html +97 -0
  617. data/web/doc/api/core/files/lib/facets/core/enumerable/every_rb.html +96 -0
  618. data/web/doc/api/core/files/lib/facets/core/enumerable/ew_rb.html +96 -0
  619. data/web/doc/api/core/files/lib/facets/core/enumerable/filter_collect_rb.html +92 -0
  620. data/web/doc/api/core/files/lib/facets/core/enumerable/filter_map_rb.html +100 -0
  621. data/web/doc/api/core/files/lib/facets/core/enumerable/find_collisions_rb.html +96 -0
  622. data/web/doc/api/core/files/lib/facets/core/enumerable/frequency_rb.html +92 -0
  623. data/web/doc/api/core/files/lib/facets/core/enumerable/graph_rb.html +96 -0
  624. data/web/doc/api/core/files/lib/facets/core/enumerable/ideal_entropy_rb.html +92 -0
  625. data/web/doc/api/core/files/lib/facets/core/enumerable/map_if_rb.html +100 -0
  626. data/web/doc/api/core/files/lib/facets/core/enumerable/map_with_counter_rb.html +100 -0
  627. data/web/doc/api/core/files/lib/facets/core/enumerable/map_with_index_rb.html +100 -0
  628. data/web/doc/api/core/files/lib/facets/core/enumerable/mode_rb.html +92 -0
  629. data/web/doc/api/core/files/lib/facets/core/enumerable/none_rb.html +92 -0
  630. data/web/doc/api/core/files/lib/facets/core/enumerable/nonuniq_rb.html +92 -0
  631. data/web/doc/api/core/files/lib/facets/core/enumerable/occur_rb.html +92 -0
  632. data/web/doc/api/core/files/lib/facets/core/enumerable/one_rb.html +92 -0
  633. data/web/doc/api/core/files/lib/facets/core/enumerable/op_pow_rb.html +96 -0
  634. data/web/doc/api/core/files/lib/facets/core/enumerable/partition_by_rb.html +92 -0
  635. data/web/doc/api/core/files/lib/facets/core/enumerable/permute_rb.html +96 -0
  636. data/web/doc/api/core/files/lib/facets/core/enumerable/probability_rb.html +92 -0
  637. data/web/doc/api/core/files/lib/facets/core/enumerable/project_rb.html +92 -0
  638. data/web/doc/api/core/files/lib/facets/core/enumerable/self/combinations_rb.html +92 -0
  639. data/web/doc/api/core/files/lib/facets/core/enumerable/self/cross_rb.html +96 -0
  640. data/web/doc/api/core/files/lib/facets/core/enumerable/to_h_rb.html +92 -0
  641. data/web/doc/api/core/files/lib/facets/core/enumerable/uniq_by_rb.html +92 -0
  642. data/web/doc/api/core/files/lib/facets/core/enumerable/where_rb.html +92 -0
  643. data/web/doc/api/core/files/lib/facets/core/file/self/append_rb.html +96 -0
  644. data/web/doc/api/core/files/lib/facets/core/file/self/create_rb.html +92 -0
  645. data/web/doc/api/core/files/lib/facets/core/file/self/open_as_string_rb.html +118 -0
  646. data/web/doc/api/core/files/lib/facets/core/file/self/read_binary_rb.html +96 -0
  647. data/web/doc/api/core/files/lib/facets/core/file/self/read_list_rb.html +97 -0
  648. data/web/doc/api/core/files/lib/facets/core/file/self/sanitize_rb.html +96 -0
  649. data/web/doc/api/core/files/lib/facets/core/file/self/split_all_rb.html +101 -0
  650. data/web/doc/api/core/files/lib/facets/core/file/self/write_rb.html +96 -0
  651. data/web/doc/api/core/files/lib/facets/core/fileutils/head_rb.html +100 -0
  652. data/web/doc/api/core/files/lib/facets/core/fileutils/safe_ln_rb.html +96 -0
  653. data/web/doc/api/core/files/lib/facets/core/fileutils/slice_rb.html +96 -0
  654. data/web/doc/api/core/files/lib/facets/core/fileutils/split_all_rb.html +92 -0
  655. data/web/doc/api/core/files/lib/facets/core/fileutils/tail_rb.html +100 -0
  656. data/web/doc/api/core/files/lib/facets/core/fileutils/wc_rb.html +96 -0
  657. data/web/doc/api/core/files/lib/facets/core/fileutils/whereis_rb.html +96 -0
  658. data/web/doc/api/core/files/lib/facets/core/fileutils/which_rb.html +96 -0
  659. data/web/doc/api/core/files/lib/facets/core/float/approx_rb.html +100 -0
  660. data/web/doc/api/core/files/lib/facets/core/float/round_at_rb.html +96 -0
  661. data/web/doc/api/core/files/lib/facets/core/float/round_off_rb.html +92 -0
  662. data/web/doc/api/core/files/lib/facets/core/float/round_to_rb.html +96 -0
  663. data/web/doc/api/core/files/lib/facets/core/gem/self/active_rb.html +92 -0
  664. data/web/doc/api/core/files/lib/facets/core/gem/self/gemdir_rb.html +96 -0
  665. data/web/doc/api/core/files/lib/facets/core/gem/self/gempath_rb.html +96 -0
  666. data/web/doc/api/core/files/lib/facets/core/gem/self/gemspec_rb.html +96 -0
  667. data/web/doc/api/core/files/lib/facets/core/hash/alias_rb.html +92 -0
  668. data/web/doc/api/core/files/lib/facets/core/hash/assert_has_keys_rb.html +96 -0
  669. data/web/doc/api/core/files/lib/facets/core/hash/assert_has_only_keys_rb.html +96 -0
  670. data/web/doc/api/core/files/lib/facets/core/hash/at_rb.html +92 -0
  671. data/web/doc/api/core/files/lib/facets/core/hash/collate_rb.html +92 -0
  672. data/web/doc/api/core/files/lib/facets/core/hash/delete_unless_rb.html +96 -0
  673. data/web/doc/api/core/files/lib/facets/core/hash/each_rb.html +92 -0
  674. data/web/doc/api/core/files/lib/facets/core/hash/each_with_index_rb.html +97 -0
  675. data/web/doc/api/core/files/lib/facets/core/hash/each_with_key_rb.html +92 -0
  676. data/web/doc/api/core/files/lib/facets/core/hash/graph_rb.html +96 -0
  677. data/web/doc/api/core/files/lib/facets/core/hash/has_keys_rb.html +92 -0
  678. data/web/doc/api/core/files/lib/facets/core/hash/has_only_keys_rb.html +92 -0
  679. data/web/doc/api/core/files/lib/facets/core/hash/inverse_rb.html +92 -0
  680. data/web/doc/api/core/files/lib/facets/core/hash/join_rb.html +92 -0
  681. data/web/doc/api/core/files/lib/facets/core/hash/keys_to_iv_rb.html +92 -0
  682. data/web/doc/api/core/files/lib/facets/core/hash/keys_to_s_rb.html +92 -0
  683. data/web/doc/api/core/files/lib/facets/core/hash/keys_to_sym_rb.html +92 -0
  684. data/web/doc/api/core/files/lib/facets/core/hash/op_fetch_rb.html +96 -0
  685. data/web/doc/api/core/files/lib/facets/core/hash/op_lshift_rb.html +92 -0
  686. data/web/doc/api/core/files/lib/facets/core/hash/op_store_rb.html +100 -0
  687. data/web/doc/api/core/files/lib/facets/core/hash/rand_key_rb.html +92 -0
  688. data/web/doc/api/core/files/lib/facets/core/hash/rand_pair_rb.html +96 -0
  689. data/web/doc/api/core/files/lib/facets/core/hash/rand_value_rb.html +96 -0
  690. data/web/doc/api/core/files/lib/facets/core/hash/replace_each_rb.html +92 -0
  691. data/web/doc/api/core/files/lib/facets/core/hash/self/zipnew_rb.html +92 -0
  692. data/web/doc/api/core/files/lib/facets/core/hash/shuffle_rb.html +96 -0
  693. data/web/doc/api/core/files/lib/facets/core/hash/slice_rb.html +92 -0
  694. data/web/doc/api/core/files/lib/facets/core/hash/stringify_keys_rb.html +100 -0
  695. data/web/doc/api/core/files/lib/facets/core/hash/swap_rb.html +92 -0
  696. data/web/doc/api/core/files/lib/facets/core/hash/swapkey_rb.html +92 -0
  697. data/web/doc/api/core/files/lib/facets/core/hash/symoblize_keys_rb.html +100 -0
  698. data/web/doc/api/core/files/lib/facets/core/hash/to_h_rb.html +92 -0
  699. data/web/doc/api/core/files/lib/facets/core/hash/to_ostruct_rb.html +96 -0
  700. data/web/doc/api/core/files/lib/facets/core/hash/to_ostruct_recurse_rb.html +97 -0
  701. data/web/doc/api/core/files/lib/facets/core/hash/to_proc_rb.html +92 -0
  702. data/web/doc/api/core/files/lib/facets/core/hash/traverse_rb.html +92 -0
  703. data/web/doc/api/core/files/lib/facets/core/hash/update_each_rb.html +92 -0
  704. data/web/doc/api/core/files/lib/facets/core/hash/update_keys_rb.html +92 -0
  705. data/web/doc/api/core/files/lib/facets/core/hash/update_values_rb.html +92 -0
  706. data/web/doc/api/core/files/lib/facets/core/hash/variablize_keys_rb.html +100 -0
  707. data/web/doc/api/core/files/lib/facets/core/hash/weave_rb.html +92 -0
  708. data/web/doc/api/core/files/lib/facets/core/inflect_rb.html +117 -0
  709. data/web/doc/api/core/files/lib/facets/core/integer/even_rb.html +100 -0
  710. data/web/doc/api/core/files/lib/facets/core/integer/fac_rb.html +100 -0
  711. data/web/doc/api/core/files/lib/facets/core/integer/fact_rb.html +100 -0
  712. data/web/doc/api/core/files/lib/facets/core/integer/factorial_rb.html +92 -0
  713. data/web/doc/api/core/files/lib/facets/core/integer/multiple_rb.html +92 -0
  714. data/web/doc/api/core/files/lib/facets/core/integer/odd_rb.html +100 -0
  715. data/web/doc/api/core/files/lib/facets/core/integer/ordinal_rb.html +92 -0
  716. data/web/doc/api/core/files/lib/facets/core/integer/times_collect_rb.html +92 -0
  717. data/web/doc/api/core/files/lib/facets/core/integer/times_map_rb.html +100 -0
  718. data/web/doc/api/core/files/lib/facets/core/kernel/__DIR___rb.html +92 -0
  719. data/web/doc/api/core/files/lib/facets/core/kernel/__class___rb.html +92 -0
  720. data/web/doc/api/core/files/lib/facets/core/kernel/__get___rb.html +92 -0
  721. data/web/doc/api/core/files/lib/facets/core/kernel/__self___rb.html +96 -0
  722. data/web/doc/api/core/files/lib/facets/core/kernel/__set___rb.html +100 -0
  723. data/web/doc/api/core/files/lib/facets/core/kernel/adhoc_rb.html +99 -0
  724. data/web/doc/api/core/files/lib/facets/core/kernel/as_rb.html +96 -0
  725. data/web/doc/api/core/files/lib/facets/core/kernel/assign_from_rb.html +96 -0
  726. data/web/doc/api/core/files/lib/facets/core/kernel/assign_with_rb.html +97 -0
  727. data/web/doc/api/core/files/lib/facets/core/kernel/autoreload_files_rb.html +100 -0
  728. data/web/doc/api/core/files/lib/facets/core/kernel/autoreload_glob_rb.html +100 -0
  729. data/web/doc/api/core/files/lib/facets/core/kernel/autoreload_rb.html +92 -0
  730. data/web/doc/api/core/files/lib/facets/core/kernel/bool_rb.html +92 -0
  731. data/web/doc/api/core/files/lib/facets/core/kernel/bug_rb.html +92 -0
  732. data/web/doc/api/core/files/lib/facets/core/kernel/cache_rb.html +92 -0
  733. data/web/doc/api/core/files/lib/facets/core/kernel/call_stack_rb.html +92 -0
  734. data/web/doc/api/core/files/lib/facets/core/kernel/called_rb.html +92 -0
  735. data/web/doc/api/core/files/lib/facets/core/kernel/complete_rb.html +92 -0
  736. data/web/doc/api/core/files/lib/facets/core/kernel/constant_rb.html +92 -0
  737. data/web/doc/api/core/files/lib/facets/core/kernel/copy_rb.html +92 -0
  738. data/web/doc/api/core/files/lib/facets/core/kernel/deep_copy_rb.html +92 -0
  739. data/web/doc/api/core/files/lib/facets/core/kernel/demo_rb.html +92 -0
  740. data/web/doc/api/core/files/lib/facets/core/kernel/eigenclass_rb.html +103 -0
  741. data/web/doc/api/core/files/lib/facets/core/kernel/false_rb.html +100 -0
  742. data/web/doc/api/core/files/lib/facets/core/kernel/fn_rb.html +92 -0
  743. data/web/doc/api/core/files/lib/facets/core/kernel/generate_method_name_rb.html +92 -0
  744. data/web/doc/api/core/files/lib/facets/core/kernel/get_by_id_rb.html +92 -0
  745. data/web/doc/api/core/files/lib/facets/core/kernel/here_rb.html +92 -0
  746. data/web/doc/api/core/files/lib/facets/core/kernel/in_rb.html +92 -0
  747. data/web/doc/api/core/files/lib/facets/core/kernel/instance_assign_rb.html +92 -0
  748. data/web/doc/api/core/files/lib/facets/core/kernel/instvar_rb.html +92 -0
  749. data/web/doc/api/core/files/lib/facets/core/kernel/is_rb.html +96 -0
  750. data/web/doc/api/core/files/lib/facets/core/kernel/maybe_rb.html +92 -0
  751. data/web/doc/api/core/files/lib/facets/core/kernel/me_rb.html +92 -0
  752. data/web/doc/api/core/files/lib/facets/core/kernel/metaclass_rb.html +92 -0
  753. data/web/doc/api/core/files/lib/facets/core/kernel/method_name_rb.html +100 -0
  754. data/web/doc/api/core/files/lib/facets/core/kernel/method_rb.html +92 -0
  755. data/web/doc/api/core/files/lib/facets/core/kernel/methodname_rb.html +92 -0
  756. data/web/doc/api/core/files/lib/facets/core/kernel/methods_rb.html +96 -0
  757. data/web/doc/api/core/files/lib/facets/core/kernel/nack_rb.html +98 -0
  758. data/web/doc/api/core/files/lib/facets/core/kernel/new_rb.html +92 -0
  759. data/web/doc/api/core/files/lib/facets/core/kernel/object_class_rb.html +92 -0
  760. data/web/doc/api/core/files/lib/facets/core/kernel/object_hexid_rb.html +92 -0
  761. data/web/doc/api/core/files/lib/facets/core/kernel/op_esc_rb.html +92 -0
  762. data/web/doc/api/core/files/lib/facets/core/kernel/own_rb.html +92 -0
  763. data/web/doc/api/core/files/lib/facets/core/kernel/p_rb.html +92 -0
  764. data/web/doc/api/core/files/lib/facets/core/kernel/pp_exception_rb.html +92 -0
  765. data/web/doc/api/core/files/lib/facets/core/kernel/require_all_rb.html +92 -0
  766. data/web/doc/api/core/files/lib/facets/core/kernel/require_esc_rb.html +96 -0
  767. data/web/doc/api/core/files/lib/facets/core/kernel/require_facet_rb.html +96 -0
  768. data/web/doc/api/core/files/lib/facets/core/kernel/require_local_rb.html +92 -0
  769. data/web/doc/api/core/files/lib/facets/core/kernel/resc_rb.html +92 -0
  770. data/web/doc/api/core/files/lib/facets/core/kernel/respond_rb.html +92 -0
  771. data/web/doc/api/core/files/lib/facets/core/kernel/returning_rb.html +92 -0
  772. data/web/doc/api/core/files/lib/facets/core/kernel/send_as_rb.html +92 -0
  773. data/web/doc/api/core/files/lib/facets/core/kernel/set_from_rb.html +96 -0
  774. data/web/doc/api/core/files/lib/facets/core/kernel/set_with_rb.html +96 -0
  775. data/web/doc/api/core/files/lib/facets/core/kernel/silence_warnings_rb.html +100 -0
  776. data/web/doc/api/core/files/lib/facets/core/kernel/silently_rb.html +92 -0
  777. data/web/doc/api/core/files/lib/facets/core/kernel/singleton_rb.html +92 -0
  778. data/web/doc/api/core/files/lib/facets/core/kernel/superior_rb.html +92 -0
  779. data/web/doc/api/core/files/lib/facets/core/kernel/supermethod_rb.html +92 -0
  780. data/web/doc/api/core/files/lib/facets/core/kernel/this_rb.html +92 -0
  781. data/web/doc/api/core/files/lib/facets/core/kernel/to_b_rb.html +92 -0
  782. data/web/doc/api/core/files/lib/facets/core/kernel/to_bool_rb.html +92 -0
  783. data/web/doc/api/core/files/lib/facets/core/kernel/true_rb.html +100 -0
  784. data/web/doc/api/core/files/lib/facets/core/kernel/unuri_rb.html +100 -0
  785. data/web/doc/api/core/files/lib/facets/core/kernel/uri_rb.html +96 -0
  786. data/web/doc/api/core/files/lib/facets/core/kernel/val_rb.html +92 -0
  787. data/web/doc/api/core/files/lib/facets/core/kernel/warn_with_line_rb.html +92 -0
  788. data/web/doc/api/core/files/lib/facets/core/kernel/with_accessor_rb.html +92 -0
  789. data/web/doc/api/core/files/lib/facets/core/kernel/with_reader_rb.html +100 -0
  790. data/web/doc/api/core/files/lib/facets/core/kernel/with_writer_rb.html +100 -0
  791. data/web/doc/api/core/files/lib/facets/core/logger/format_message_rb.html +96 -0
  792. data/web/doc/api/core/files/lib/facets/core/logger/format_rb.html +96 -0
  793. data/web/doc/api/core/files/lib/facets/core/matchdata/match_rb.html +92 -0
  794. data/web/doc/api/core/files/lib/facets/core/matchdata/matchset_rb.html +100 -0
  795. data/web/doc/api/core/files/lib/facets/core/matchdata/matchtree_rb.html +92 -0
  796. data/web/doc/api/core/files/lib/facets/core/module/abstract_rb.html +105 -0
  797. data/web/doc/api/core/files/lib/facets/core/module/alias_module_function_rb.html +92 -0
  798. data/web/doc/api/core/files/lib/facets/core/module/ancestor_rb.html +92 -0
  799. data/web/doc/api/core/files/lib/facets/core/module/attr_query_rb.html +96 -0
  800. data/web/doc/api/core/files/lib/facets/core/module/attr_rb.html +92 -0
  801. data/web/doc/api/core/files/lib/facets/core/module/attr_setter_rb.html +92 -0
  802. data/web/doc/api/core/files/lib/facets/core/module/attr_tester_rb.html +96 -0
  803. data/web/doc/api/core/files/lib/facets/core/module/attr_validator_rb.html +92 -0
  804. data/web/doc/api/core/files/lib/facets/core/module/basename_rb.html +92 -0
  805. data/web/doc/api/core/files/lib/facets/core/module/by_name_rb.html +96 -0
  806. data/web/doc/api/core/files/lib/facets/core/module/class_rb.html +92 -0
  807. data/web/doc/api/core/files/lib/facets/core/module/clone_removing_rb.html +100 -0
  808. data/web/doc/api/core/files/lib/facets/core/module/clone_renaming_rb.html +100 -0
  809. data/web/doc/api/core/files/lib/facets/core/module/clone_using_rb.html +92 -0
  810. data/web/doc/api/core/files/lib/facets/core/module/dirname_rb.html +92 -0
  811. data/web/doc/api/core/files/lib/facets/core/module/equate_on_rb.html +92 -0
  812. data/web/doc/api/core/files/lib/facets/core/module/generate_instance_method_name_rb.html +92 -0
  813. data/web/doc/api/core/files/lib/facets/core/module/include_as_rb.html +96 -0
  814. data/web/doc/api/core/files/lib/facets/core/module/inherit_rb.html +96 -0
  815. data/web/doc/api/core/files/lib/facets/core/module/initializer_rb.html +92 -0
  816. data/web/doc/api/core/files/lib/facets/core/module/instance_methods_rb.html +96 -0
  817. data/web/doc/api/core/files/lib/facets/core/module/integrate_rb.html +104 -0
  818. data/web/doc/api/core/files/lib/facets/core/module/is_rb.html +96 -0
  819. data/web/doc/api/core/files/lib/facets/core/module/memoize_rb.html +92 -0
  820. data/web/doc/api/core/files/lib/facets/core/module/modspace_rb.html +97 -0
  821. data/web/doc/api/core/files/lib/facets/core/module/namespace_rb.html +96 -0
  822. data/web/doc/api/core/files/lib/facets/core/module/nesting_rb.html +92 -0
  823. data/web/doc/api/core/files/lib/facets/core/module/nodef_rb.html +92 -0
  824. data/web/doc/api/core/files/lib/facets/core/module/on_included_rb.html +92 -0
  825. data/web/doc/api/core/files/lib/facets/core/module/redef_rb.html +96 -0
  826. data/web/doc/api/core/files/lib/facets/core/module/redefine_method_rb.html +92 -0
  827. data/web/doc/api/core/files/lib/facets/core/module/redirect_method_rb.html +92 -0
  828. data/web/doc/api/core/files/lib/facets/core/module/redirect_rb.html +96 -0
  829. data/web/doc/api/core/files/lib/facets/core/module/remove_rb.html +92 -0
  830. data/web/doc/api/core/files/lib/facets/core/module/rename_method_rb.html +92 -0
  831. data/web/doc/api/core/files/lib/facets/core/module/rename_rb.html +96 -0
  832. data/web/doc/api/core/files/lib/facets/core/module/revisal_rb.html +100 -0
  833. data/web/doc/api/core/files/lib/facets/core/module/shadow_all_rb.html +96 -0
  834. data/web/doc/api/core/files/lib/facets/core/module/shadow_method_rb.html +92 -0
  835. data/web/doc/api/core/files/lib/facets/core/module/singleton_to_module_rb.html +92 -0
  836. data/web/doc/api/core/files/lib/facets/core/module/sort_on_rb.html +92 -0
  837. data/web/doc/api/core/files/lib/facets/core/module/this_rb.html +96 -0
  838. data/web/doc/api/core/files/lib/facets/core/module/wrap_method_rb.html +92 -0
  839. data/web/doc/api/core/files/lib/facets/core/module/wrap_rb.html +96 -0
  840. data/web/doc/api/core/files/lib/facets/core/nil_as_emptiness_rb.html +116 -0
  841. data/web/doc/api/core/files/lib/facets/core/nilclass/blank_rb.html +92 -0
  842. data/web/doc/api/core/files/lib/facets/core/nilclass/empty_rb.html +92 -0
  843. data/web/doc/api/core/files/lib/facets/core/nilclass/include_rb.html +92 -0
  844. data/web/doc/api/core/files/lib/facets/core/nilclass/length_rb.html +100 -0
  845. data/web/doc/api/core/files/lib/facets/core/nilclass/op_cmp_rb.html +92 -0
  846. data/web/doc/api/core/files/lib/facets/core/nilclass/op_fetch_rb.html +92 -0
  847. data/web/doc/api/core/files/lib/facets/core/nilclass/size_rb.html +92 -0
  848. data/web/doc/api/core/files/lib/facets/core/nilclass/succ_rb.html +92 -0
  849. data/web/doc/api/core/files/lib/facets/core/nilclass/to_h_rb.html +92 -0
  850. data/web/doc/api/core/files/lib/facets/core/numeric/approx_rb.html +92 -0
  851. data/web/doc/api/core/files/lib/facets/core/numeric/ceil_multiple_rb.html +92 -0
  852. data/web/doc/api/core/files/lib/facets/core/numeric/pred_rb.html +100 -0
  853. data/web/doc/api/core/files/lib/facets/core/numeric/succ_rb.html +92 -0
  854. data/web/doc/api/core/files/lib/facets/core/numeric/to_b_rb.html +92 -0
  855. data/web/doc/api/core/files/lib/facets/core/ostruct/__merge___rb.html +97 -0
  856. data/web/doc/api/core/files/lib/facets/core/ostruct/__table___rb.html +92 -0
  857. data/web/doc/api/core/files/lib/facets/core/ostruct/__update___rb.html +98 -0
  858. data/web/doc/api/core/files/lib/facets/core/ostruct/instance_rb.html +96 -0
  859. data/web/doc/api/core/files/lib/facets/core/ostruct/op_fetch_rb.html +96 -0
  860. data/web/doc/api/core/files/lib/facets/core/ostruct/op_store_rb.html +96 -0
  861. data/web/doc/api/core/files/lib/facets/core/ostruct/to_h_rb.html +92 -0
  862. data/web/doc/api/core/files/lib/facets/core/ostruct_rb.html +102 -0
  863. data/web/doc/api/core/files/lib/facets/core/pathname/ascend_rb.html +96 -0
  864. data/web/doc/api/core/files/lib/facets/core/pathname/descend_rb.html +96 -0
  865. data/web/doc/api/core/files/lib/facets/core/proc/compose_rb.html +92 -0
  866. data/web/doc/api/core/files/lib/facets/core/proc/op_mul_rb.html +100 -0
  867. data/web/doc/api/core/files/lib/facets/core/proc/to_method_rb.html +133 -0
  868. data/web/doc/api/core/files/lib/facets/core/random_rb.html +111 -0
  869. data/web/doc/api/core/files/lib/facets/core/range/to_r_rb.html +92 -0
  870. data/web/doc/api/core/files/lib/facets/core/range/to_range_rb.html +92 -0
  871. data/web/doc/api/core/files/lib/facets/core/range/umbrella_rb.html +92 -0
  872. data/web/doc/api/core/files/lib/facets/core/range/within_rb.html +96 -0
  873. data/web/doc/api/core/files/lib/facets/core/regexp/arity_rb.html +92 -0
  874. data/web/doc/api/core/files/lib/facets/core/regexp/to_re_rb.html +92 -0
  875. data/web/doc/api/core/files/lib/facets/core/regexp/to_regexp_rb.html +92 -0
  876. data/web/doc/api/core/files/lib/facets/core/string/align_center_rb.html +92 -0
  877. data/web/doc/api/core/files/lib/facets/core/string/align_left_rb.html +100 -0
  878. data/web/doc/api/core/files/lib/facets/core/string/align_right_rb.html +100 -0
  879. data/web/doc/api/core/files/lib/facets/core/string/at_rand_rb.html +98 -0
  880. data/web/doc/api/core/files/lib/facets/core/string/at_rb.html +92 -0
  881. data/web/doc/api/core/files/lib/facets/core/string/basename_rb.html +92 -0
  882. data/web/doc/api/core/files/lib/facets/core/string/blank_rb.html +92 -0
  883. data/web/doc/api/core/files/lib/facets/core/string/bracket_rb.html +92 -0
  884. data/web/doc/api/core/files/lib/facets/core/string/brief_rb.html +92 -0
  885. data/web/doc/api/core/files/lib/facets/core/string/bytes_rb.html +92 -0
  886. data/web/doc/api/core/files/lib/facets/core/string/camelcase_rb.html +92 -0
  887. data/web/doc/api/core/files/lib/facets/core/string/camelize_rb.html +92 -0
  888. data/web/doc/api/core/files/lib/facets/core/string/capitalized_rb.html +92 -0
  889. data/web/doc/api/core/files/lib/facets/core/string/chars_rb.html +92 -0
  890. data/web/doc/api/core/files/lib/facets/core/string/cmp_rb.html +92 -0
  891. data/web/doc/api/core/files/lib/facets/core/string/demodulize_rb.html +96 -0
  892. data/web/doc/api/core/files/lib/facets/core/string/dequote_rb.html +92 -0
  893. data/web/doc/api/core/files/lib/facets/core/string/downcase_rb.html +92 -0
  894. data/web/doc/api/core/files/lib/facets/core/string/dresner_rb.html +92 -0
  895. data/web/doc/api/core/files/lib/facets/core/string/each_char_rb.html +92 -0
  896. data/web/doc/api/core/files/lib/facets/core/string/each_word_rb.html +92 -0
  897. data/web/doc/api/core/files/lib/facets/core/string/ends_with_rb.html +100 -0
  898. data/web/doc/api/core/files/lib/facets/core/string/first_char_rb.html +96 -0
  899. data/web/doc/api/core/files/lib/facets/core/string/first_rb.html +98 -0
  900. data/web/doc/api/core/files/lib/facets/core/string/fold_rb.html +92 -0
  901. data/web/doc/api/core/files/lib/facets/core/string/format_rb.html +96 -0
  902. data/web/doc/api/core/files/lib/facets/core/string/frequency_rb.html +97 -0
  903. data/web/doc/api/core/files/lib/facets/core/string/humanize_rb.html +92 -0
  904. data/web/doc/api/core/files/lib/facets/core/string/indent_rb.html +92 -0
  905. data/web/doc/api/core/files/lib/facets/core/string/index_all_rb.html +92 -0
  906. data/web/doc/api/core/files/lib/facets/core/string/last_char_rb.html +96 -0
  907. data/web/doc/api/core/files/lib/facets/core/string/last_rb.html +98 -0
  908. data/web/doc/api/core/files/lib/facets/core/string/line_wrap_rb.html +92 -0
  909. data/web/doc/api/core/files/lib/facets/core/string/lines_rb.html +92 -0
  910. data/web/doc/api/core/files/lib/facets/core/string/lowercase_rb.html +96 -0
  911. data/web/doc/api/core/files/lib/facets/core/string/margin_rb.html +92 -0
  912. data/web/doc/api/core/files/lib/facets/core/string/methodize_rb.html +92 -0
  913. data/web/doc/api/core/files/lib/facets/core/string/modulize_rb.html +92 -0
  914. data/web/doc/api/core/files/lib/facets/core/string/mscan_rb.html +92 -0
  915. data/web/doc/api/core/files/lib/facets/core/string/natcmp_rb.html +92 -0
  916. data/web/doc/api/core/files/lib/facets/core/string/nchar_rb.html +92 -0
  917. data/web/doc/api/core/files/lib/facets/core/string/ordinal_rb.html +96 -0
  918. data/web/doc/api/core/files/lib/facets/core/string/pathize_rb.html +92 -0
  919. data/web/doc/api/core/files/lib/facets/core/string/plural_rb.html +100 -0
  920. data/web/doc/api/core/files/lib/facets/core/string/pop_rb.html +92 -0
  921. data/web/doc/api/core/files/lib/facets/core/string/pot_rb.html +92 -0
  922. data/web/doc/api/core/files/lib/facets/core/string/probability_rb.html +97 -0
  923. data/web/doc/api/core/files/lib/facets/core/string/pull_rb.html +92 -0
  924. data/web/doc/api/core/files/lib/facets/core/string/push_rb.html +92 -0
  925. data/web/doc/api/core/files/lib/facets/core/string/quote_rb.html +96 -0
  926. data/web/doc/api/core/files/lib/facets/core/string/rand_byte_rb.html +92 -0
  927. data/web/doc/api/core/files/lib/facets/core/string/rand_index_rb.html +92 -0
  928. data/web/doc/api/core/files/lib/facets/core/string/range_all_rb.html +96 -0
  929. data/web/doc/api/core/files/lib/facets/core/string/range_of_line_rb.html +92 -0
  930. data/web/doc/api/core/files/lib/facets/core/string/range_rb.html +92 -0
  931. data/web/doc/api/core/files/lib/facets/core/string/regesc_rb.html +92 -0
  932. data/web/doc/api/core/files/lib/facets/core/string/self/format_rb.html +92 -0
  933. data/web/doc/api/core/files/lib/facets/core/string/self/interpolate_rb.html +92 -0
  934. data/web/doc/api/core/files/lib/facets/core/string/self/patterns_rb.html +92 -0
  935. data/web/doc/api/core/files/lib/facets/core/string/self/rand_letter_rb.html +92 -0
  936. data/web/doc/api/core/files/lib/facets/core/string/self/random_rb.html +99 -0
  937. data/web/doc/api/core/files/lib/facets/core/string/shatter_rb.html +92 -0
  938. data/web/doc/api/core/files/lib/facets/core/string/shell_escape_rb.html +92 -0
  939. data/web/doc/api/core/files/lib/facets/core/string/shift_rb.html +92 -0
  940. data/web/doc/api/core/files/lib/facets/core/string/shuffle_rb.html +96 -0
  941. data/web/doc/api/core/files/lib/facets/core/string/similarity_rb.html +92 -0
  942. data/web/doc/api/core/files/lib/facets/core/string/singular_rb.html +92 -0
  943. data/web/doc/api/core/files/lib/facets/core/string/soundex_rb.html +92 -0
  944. data/web/doc/api/core/files/lib/facets/core/string/starts_with_rb.html +92 -0
  945. data/web/doc/api/core/files/lib/facets/core/string/succ_rb.html +92 -0
  946. data/web/doc/api/core/files/lib/facets/core/string/tab_rb.html +100 -0
  947. data/web/doc/api/core/files/lib/facets/core/string/tabto_rb.html +100 -0
  948. data/web/doc/api/core/files/lib/facets/core/string/to_a_rb.html +92 -0
  949. data/web/doc/api/core/files/lib/facets/core/string/to_b_rb.html +92 -0
  950. data/web/doc/api/core/files/lib/facets/core/string/to_const_rb.html +92 -0
  951. data/web/doc/api/core/files/lib/facets/core/string/to_date_rb.html +97 -0
  952. data/web/doc/api/core/files/lib/facets/core/string/to_proc_rb.html +92 -0
  953. data/web/doc/api/core/files/lib/facets/core/string/to_re_rb.html +92 -0
  954. data/web/doc/api/core/files/lib/facets/core/string/to_rx_rb.html +100 -0
  955. data/web/doc/api/core/files/lib/facets/core/string/to_time_rb.html +96 -0
  956. data/web/doc/api/core/files/lib/facets/core/string/unbracket_rb.html +96 -0
  957. data/web/doc/api/core/files/lib/facets/core/string/underscore_rb.html +92 -0
  958. data/web/doc/api/core/files/lib/facets/core/string/unix_crypt_rb.html +96 -0
  959. data/web/doc/api/core/files/lib/facets/core/string/unpack_rb.html +92 -0
  960. data/web/doc/api/core/files/lib/facets/core/string/unshift_rb.html +92 -0
  961. data/web/doc/api/core/files/lib/facets/core/string/upcase_rb.html +92 -0
  962. data/web/doc/api/core/files/lib/facets/core/string/uppercase_rb.html +100 -0
  963. data/web/doc/api/core/files/lib/facets/core/string/whitespace_rb.html +96 -0
  964. data/web/doc/api/core/files/lib/facets/core/string/word_filter_rb.html +92 -0
  965. data/web/doc/api/core/files/lib/facets/core/string/word_wrap_rb.html +92 -0
  966. data/web/doc/api/core/files/lib/facets/core/string/words_rb.html +92 -0
  967. data/web/doc/api/core/files/lib/facets/core/string_as_array_rb.html +109 -0
  968. data/web/doc/api/core/files/lib/facets/core/symbol/camelcase_rb.html +96 -0
  969. data/web/doc/api/core/files/lib/facets/core/symbol/camelize_rb.html +96 -0
  970. data/web/doc/api/core/files/lib/facets/core/symbol/capitalize_rb.html +96 -0
  971. data/web/doc/api/core/files/lib/facets/core/symbol/capitalized_rb.html +97 -0
  972. data/web/doc/api/core/files/lib/facets/core/symbol/downcase_rb.html +96 -0
  973. data/web/doc/api/core/files/lib/facets/core/symbol/not_rb.html +92 -0
  974. data/web/doc/api/core/files/lib/facets/core/symbol/pad_rb.html +92 -0
  975. data/web/doc/api/core/files/lib/facets/core/symbol/succ_rb.html +92 -0
  976. data/web/doc/api/core/files/lib/facets/core/symbol/to_const_rb.html +96 -0
  977. data/web/doc/api/core/files/lib/facets/core/symbol/to_proc_rb.html +92 -0
  978. data/web/doc/api/core/files/lib/facets/core/symbol/to_str_rb.html +92 -0
  979. data/web/doc/api/core/files/lib/facets/core/symbol/underscore_rb.html +96 -0
  980. data/web/doc/api/core/files/lib/facets/core/symbol/upcase_rb.html +96 -0
  981. data/web/doc/api/core/files/lib/facets/core/time/change_rb.html +92 -0
  982. data/web/doc/api/core/files/lib/facets/core/time/elapse_rb.html +92 -0
  983. data/web/doc/api/core/files/lib/facets/core/time/self/days_extrema_rb.html +114 -0
  984. data/web/doc/api/core/files/lib/facets/core/time/self/stamp_rb.html +100 -0
  985. data/web/doc/api/core/files/lib/facets/core/time/stamp_rb.html +92 -0
  986. data/web/doc/api/core/files/lib/facets/core/time/to_date_rb.html +96 -0
  987. data/web/doc/api/core/files/lib/facets/core/time/to_s_rb.html +96 -0
  988. data/web/doc/api/core/files/lib/facets/core/time/to_time_rb.html +92 -0
  989. data/web/doc/api/core/files/lib/facets/core/unboundmethod/name_rb.html +92 -0
  990. data/web/doc/api/core/fr_class_index.html +80 -0
  991. data/web/doc/api/core/fr_file_index.html +521 -0
  992. data/web/doc/api/core/fr_method_index.html +555 -0
  993. data/web/doc/api/core/index.html +26 -0
  994. data/web/doc/api/core/rdoc-style.css +175 -0
  995. data/web/doc/api/more/classes/Annotation.html +258 -0
  996. data/web/doc/api/more/classes/Array.html +362 -0
  997. data/web/doc/api/more/classes/Aspect.html +159 -0
  998. data/web/doc/api/more/classes/Aspects.html +240 -0
  999. data/web/doc/api/more/classes/Aspects/ClassMethods.html +254 -0
  1000. data/web/doc/api/more/classes/Association.html +289 -0
  1001. data/web/doc/api/more/classes/BBCode.html +531 -0
  1002. data/web/doc/api/more/classes/BasicObject.html +260 -0
  1003. data/web/doc/api/more/classes/BasicObject/Self.html +142 -0
  1004. data/web/doc/api/more/classes/BinaryReader.html +535 -0
  1005. data/web/doc/api/more/classes/BinaryReader/ByteOrder.html +225 -0
  1006. data/web/doc/api/more/classes/BuilderObject.html +248 -0
  1007. data/web/doc/api/more/classes/Class.html +201 -0
  1008. data/web/doc/api/more/classes/Client.html +1251 -0
  1009. data/web/doc/api/more/classes/Cloneable.html +133 -0
  1010. data/web/doc/api/more/classes/Console.html +105 -0
  1011. data/web/doc/api/more/classes/Console/ANSICode.html +488 -0
  1012. data/web/doc/api/more/classes/Console/Command.html +275 -0
  1013. data/web/doc/api/more/classes/Console/ProgressBar.html +640 -0
  1014. data/web/doc/api/more/classes/Coroutine.html +284 -0
  1015. data/web/doc/api/more/classes/Crypt.html +270 -0
  1016. data/web/doc/api/more/classes/DebugSocket.html +242 -0
  1017. data/web/doc/api/more/classes/Dictionary.html +974 -0
  1018. data/web/doc/api/more/classes/Downloader.html +515 -0
  1019. data/web/doc/api/more/classes/Downloader/Checksum.html +96 -0
  1020. data/web/doc/api/more/classes/Downloader/Mirror.html +134 -0
  1021. data/web/doc/api/more/classes/Elementor.html +202 -0
  1022. data/web/doc/api/more/classes/Enumerable.html +86 -0
  1023. data/web/doc/api/more/classes/EnumerablePass.html +217 -0
  1024. data/web/doc/api/more/classes/Expirable.html +197 -0
  1025. data/web/doc/api/more/classes/FalseClass.html +119 -0
  1026. data/web/doc/api/more/classes/FileList.html +971 -0
  1027. data/web/doc/api/more/classes/Float.html +140 -0
  1028. data/web/doc/api/more/classes/FloatString.html +413 -0
  1029. data/web/doc/api/more/classes/Functor.html +203 -0
  1030. data/web/doc/api/more/classes/HTMLBuilder.html +132 -0
  1031. data/web/doc/api/more/classes/HTMLHelper.html +189 -0
  1032. data/web/doc/api/more/classes/HTTP.html +154 -0
  1033. data/web/doc/api/more/classes/HTTP/BadResponseError.html +94 -0
  1034. data/web/doc/api/more/classes/HTTP/Error.html +96 -0
  1035. data/web/doc/api/more/classes/HTTP/Message.html +633 -0
  1036. data/web/doc/api/more/classes/HTTP/Message/Body.html +299 -0
  1037. data/web/doc/api/more/classes/HTTP/Message/Headers.html +641 -0
  1038. data/web/doc/api/more/classes/HTTP/Status.html +148 -0
  1039. data/web/doc/api/more/classes/HTTPAccess.html +115 -0
  1040. data/web/doc/api/more/classes/Hash.html +257 -0
  1041. data/web/doc/api/more/classes/HashBuilder.html +216 -0
  1042. data/web/doc/api/more/classes/Heap.html +535 -0
  1043. data/web/doc/api/more/classes/Heap/EmptyHeapException.html +92 -0
  1044. data/web/doc/api/more/classes/Heap/Max.html +133 -0
  1045. data/web/doc/api/more/classes/Heap/Min.html +133 -0
  1046. data/web/doc/api/more/classes/IORedirect.html +225 -0
  1047. data/web/doc/api/more/classes/Integer.html +298 -0
  1048. data/web/doc/api/more/classes/Interval.html +853 -0
  1049. data/web/doc/api/more/classes/InvalidNackError.html +117 -0
  1050. data/web/doc/api/more/classes/JSON.html +410 -0
  1051. data/web/doc/api/more/classes/JSON/Parser.html +374 -0
  1052. data/web/doc/api/more/classes/JSON/State.html +280 -0
  1053. data/web/doc/api/more/classes/Kernel.html +400 -0
  1054. data/web/doc/api/more/classes/LRUCache.html +461 -0
  1055. data/web/doc/api/more/classes/LRUCache/Item.html +114 -0
  1056. data/web/doc/api/more/classes/LRUCache/Sentinel.html +102 -0
  1057. data/web/doc/api/more/classes/Lazy.html +96 -0
  1058. data/web/doc/api/more/classes/Lazy/Future.html +100 -0
  1059. data/web/doc/api/more/classes/Lazy/Promise.html +114 -0
  1060. data/web/doc/api/more/classes/Lazy/PromiseSafe.html +99 -0
  1061. data/web/doc/api/more/classes/Lisp.html +846 -0
  1062. data/web/doc/api/more/classes/Lisp/DottedPair.html +289 -0
  1063. data/web/doc/api/more/classes/Lisp/Format.html +147 -0
  1064. data/web/doc/api/more/classes/Math.html +110 -0
  1065. data/web/doc/api/more/classes/Math/Constants.html +691 -0
  1066. data/web/doc/api/more/classes/Math/Constants/CGS.html +584 -0
  1067. data/web/doc/api/more/classes/Method.html +170 -0
  1068. data/web/doc/api/more/classes/Method/Probe.html +267 -0
  1069. data/web/doc/api/more/classes/Mock.html +276 -0
  1070. data/web/doc/api/more/classes/Module.html +691 -0
  1071. data/web/doc/api/more/classes/Multiton.html +256 -0
  1072. data/web/doc/api/more/classes/NackClass.html +245 -0
  1073. data/web/doc/api/more/classes/NilClass.html +238 -0
  1074. data/web/doc/api/more/classes/NullClass.html +202 -0
  1075. data/web/doc/api/more/classes/Numeric.html +1104 -0
  1076. data/web/doc/api/more/classes/ORMSupport.html +357 -0
  1077. data/web/doc/api/more/classes/Object.html +323 -0
  1078. data/web/doc/api/more/classes/OpenCascade.html +230 -0
  1079. data/web/doc/api/more/classes/OpenObject.html +552 -0
  1080. data/web/doc/api/more/classes/PQueue.html +471 -0
  1081. data/web/doc/api/more/classes/PathList.html +162 -0
  1082. data/web/doc/api/more/classes/PathList/Finder.html +137 -0
  1083. data/web/doc/api/more/classes/Pool.html +207 -0
  1084. data/web/doc/api/more/classes/Proc.html +140 -0
  1085. data/web/doc/api/more/classes/PromoteSelf.html +138 -0
  1086. data/web/doc/api/more/classes/Quaternion.html +1497 -0
  1087. data/web/doc/api/more/classes/REXMLBuilder.html +357 -0
  1088. data/web/doc/api/more/classes/REXMLBuilder/REXMLUtil.html +396 -0
  1089. data/web/doc/api/more/classes/Recorder.html +208 -0
  1090. data/web/doc/api/more/classes/Reference.html +201 -0
  1091. data/web/doc/api/more/classes/RubyOneLiners.html +139 -0
  1092. data/web/doc/api/more/classes/RubyTals.html +316 -0
  1093. data/web/doc/api/more/classes/SSLSocketWrap.html +410 -0
  1094. data/web/doc/api/more/classes/Semaphore.html +264 -0
  1095. data/web/doc/api/more/classes/SimpleStringIO.html +139 -0
  1096. data/web/doc/api/more/classes/Snapshot.html +191 -0
  1097. data/web/doc/api/more/classes/StateMachine.html +248 -0
  1098. data/web/doc/api/more/classes/StateParser.html +276 -0
  1099. data/web/doc/api/more/classes/StateParser/Constants.html +109 -0
  1100. data/web/doc/api/more/classes/StateParser/Marker.html +269 -0
  1101. data/web/doc/api/more/classes/StateParser/State.html +448 -0
  1102. data/web/doc/api/more/classes/StaticHash.html +144 -0
  1103. data/web/doc/api/more/classes/String.html +278 -0
  1104. data/web/doc/api/more/classes/StringIO.html +123 -0
  1105. data/web/doc/api/more/classes/Struct.html +134 -0
  1106. data/web/doc/api/more/classes/Symbol.html +116 -0
  1107. data/web/doc/api/more/classes/SyncArray.html +131 -0
  1108. data/web/doc/api/more/classes/SyncHash.html +135 -0
  1109. data/web/doc/api/more/classes/SyncHash/Delegator.html +213 -0
  1110. data/web/doc/api/more/classes/SyncHash/Inheritor.html +213 -0
  1111. data/web/doc/api/more/classes/System.html +1055 -0
  1112. data/web/doc/api/more/classes/TSort.html +123 -0
  1113. data/web/doc/api/more/classes/TagIterator.html +706 -0
  1114. data/web/doc/api/more/classes/Task.html +237 -0
  1115. data/web/doc/api/more/classes/Task/Graph.html +165 -0
  1116. data/web/doc/api/more/classes/Taskable.html +300 -0
  1117. data/web/doc/api/more/classes/Time.html +746 -0
  1118. data/web/doc/api/more/classes/Timer.html +471 -0
  1119. data/web/doc/api/more/classes/Timer/Dummy.html +141 -0
  1120. data/web/doc/api/more/classes/TracePoint.html +453 -0
  1121. data/web/doc/api/more/classes/TrueClass.html +118 -0
  1122. data/web/doc/api/more/classes/Tuple.html +861 -0
  1123. data/web/doc/api/more/classes/URI.html +107 -0
  1124. data/web/doc/api/more/classes/Uninheritable.html +130 -0
  1125. data/web/doc/api/more/classes/Units.html +191 -0
  1126. data/web/doc/api/more/classes/Units/Config.html +120 -0
  1127. data/web/doc/api/more/classes/Units/Converter.html +808 -0
  1128. data/web/doc/api/more/classes/Units/Converter/ExchangeRate.html +155 -0
  1129. data/web/doc/api/more/classes/Units/Converter/ExchangeRate/CachedXMethods.html +143 -0
  1130. data/web/doc/api/more/classes/Units/Converter/ExchangeRate/XMethods.html +197 -0
  1131. data/web/doc/api/more/classes/Units/Unit.html +434 -0
  1132. data/web/doc/api/more/classes/Units/Value.html +331 -0
  1133. data/web/doc/api/more/classes/ValueHolder.html +167 -0
  1134. data/web/doc/api/more/classes/WebAgent.html +103 -0
  1135. data/web/doc/api/more/classes/WebAgent/Cookie.html +513 -0
  1136. data/web/doc/api/more/classes/WebAgent/CookieManager.html +515 -0
  1137. data/web/doc/api/more/classes/WebAgent/CookieManager/Error.html +96 -0
  1138. data/web/doc/api/more/classes/WebAgent/CookieManager/ErrorOverrideOK.html +94 -0
  1139. data/web/doc/api/more/classes/WebAgent/CookieManager/NoDotError.html +94 -0
  1140. data/web/doc/api/more/classes/WebAgent/CookieManager/SpecialError.html +94 -0
  1141. data/web/doc/api/more/classes/WebAgent/CookieUtils.html +171 -0
  1142. data/web/doc/api/more/classes/XMLBuilder.html +132 -0
  1143. data/web/doc/api/more/classes/XMLHelper.html +428 -0
  1144. data/web/doc/api/more/classes/XOXO.html +252 -0
  1145. data/web/doc/api/more/classes/YAMLStruct.html +166 -0
  1146. data/web/doc/api/more/created.rid +1 -0
  1147. data/web/doc/api/more/files/AUTHORS.html +206 -0
  1148. data/web/doc/api/more/files/COPYING.html +517 -0
  1149. data/web/doc/api/more/files/README.html +389 -0
  1150. data/web/doc/api/more/files/WARNING.html +151 -0
  1151. data/web/doc/api/more/files/lib/facets/more/annattr_rb.html +115 -0
  1152. data/web/doc/api/more/files/lib/facets/more/annotation_rb.html +118 -0
  1153. data/web/doc/api/more/files/lib/facets/more/ansicode_rb.html +128 -0
  1154. data/web/doc/api/more/files/lib/facets/more/aspects_rb.html +115 -0
  1155. data/web/doc/api/more/files/lib/facets/more/association_rb.html +111 -0
  1156. data/web/doc/api/more/files/lib/facets/more/basicobject_rb.html +129 -0
  1157. data/web/doc/api/more/files/lib/facets/more/bbcode_rb.html +111 -0
  1158. data/web/doc/api/more/files/lib/facets/more/binaryreader_rb.html +111 -0
  1159. data/web/doc/api/more/files/lib/facets/more/bitmask_rb.html +111 -0
  1160. data/web/doc/api/more/files/lib/facets/more/blankslate_rb.html +113 -0
  1161. data/web/doc/api/more/files/lib/facets/more/builderobject_rb.html +115 -0
  1162. data/web/doc/api/more/files/lib/facets/more/bytes_rb.html +131 -0
  1163. data/web/doc/api/more/files/lib/facets/more/classinherit_rb.html +111 -0
  1164. data/web/doc/api/more/files/lib/facets/more/classmethods_rb.html +121 -0
  1165. data/web/doc/api/more/files/lib/facets/more/cloneable_rb.html +132 -0
  1166. data/web/doc/api/more/files/lib/facets/more/consoleapp_rb.html +131 -0
  1167. data/web/doc/api/more/files/lib/facets/more/cookie_rb.html +133 -0
  1168. data/web/doc/api/more/files/lib/facets/more/coroutine_rb.html +111 -0
  1169. data/web/doc/api/more/files/lib/facets/more/crypt_rb.html +146 -0
  1170. data/web/doc/api/more/files/lib/facets/more/dictionary_rb.html +123 -0
  1171. data/web/doc/api/more/files/lib/facets/more/downloader_rb.html +124 -0
  1172. data/web/doc/api/more/files/lib/facets/more/elementor_rb.html +115 -0
  1173. data/web/doc/api/more/files/lib/facets/more/enumerablepass_rb.html +115 -0
  1174. data/web/doc/api/more/files/lib/facets/more/expirable_rb.html +111 -0
  1175. data/web/doc/api/more/files/lib/facets/more/filelist_rb.html +128 -0
  1176. data/web/doc/api/more/files/lib/facets/more/floatstring_rb.html +115 -0
  1177. data/web/doc/api/more/files/lib/facets/more/functor_rb.html +115 -0
  1178. data/web/doc/api/more/files/lib/facets/more/hashbuilder_rb.html +115 -0
  1179. data/web/doc/api/more/files/lib/facets/more/heap_rb.html +131 -0
  1180. data/web/doc/api/more/files/lib/facets/more/htmlbuilder_rb.html +116 -0
  1181. data/web/doc/api/more/files/lib/facets/more/htmlhelper_rb.html +119 -0
  1182. data/web/doc/api/more/files/lib/facets/more/http_rb.html +116 -0
  1183. data/web/doc/api/more/files/lib/facets/more/httpaccess_rb.html +137 -0
  1184. data/web/doc/api/more/files/lib/facets/more/inheritor_rb.html +115 -0
  1185. data/web/doc/api/more/files/lib/facets/more/interval_rb.html +120 -0
  1186. data/web/doc/api/more/files/lib/facets/more/ioredirect_rb.html +116 -0
  1187. data/web/doc/api/more/files/lib/facets/more/json_rb.html +141 -0
  1188. data/web/doc/api/more/files/lib/facets/more/lazy_rb.html +111 -0
  1189. data/web/doc/api/more/files/lib/facets/more/lisp_format_rb.html +129 -0
  1190. data/web/doc/api/more/files/lib/facets/more/lisp_rb.html +119 -0
  1191. data/web/doc/api/more/files/lib/facets/more/lrucache_rb.html +111 -0
  1192. data/web/doc/api/more/files/lib/facets/more/mathconstants_rb.html +121 -0
  1193. data/web/doc/api/more/files/lib/facets/more/methodprobe_rb.html +111 -0
  1194. data/web/doc/api/more/files/lib/facets/more/mock_rb.html +208 -0
  1195. data/web/doc/api/more/files/lib/facets/more/multipliers_rb.html +115 -0
  1196. data/web/doc/api/more/files/lib/facets/more/multiton_rb.html +114 -0
  1197. data/web/doc/api/more/files/lib/facets/more/nackclass_rb.html +151 -0
  1198. data/web/doc/api/more/files/lib/facets/more/nilcomparable_rb.html +118 -0
  1199. data/web/doc/api/more/files/lib/facets/more/nullclass_rb.html +111 -0
  1200. data/web/doc/api/more/files/lib/facets/more/one_rb.html +158 -0
  1201. data/web/doc/api/more/files/lib/facets/more/opencascade_rb.html +129 -0
  1202. data/web/doc/api/more/files/lib/facets/more/openobject_rb.html +120 -0
  1203. data/web/doc/api/more/files/lib/facets/more/orderedhash_rb.html +113 -0
  1204. data/web/doc/api/more/files/lib/facets/more/ormsupport_rb.html +125 -0
  1205. data/web/doc/api/more/files/lib/facets/more/overload_rb.html +111 -0
  1206. data/web/doc/api/more/files/lib/facets/more/paramix_rb.html +118 -0
  1207. data/web/doc/api/more/files/lib/facets/more/pathlist_rb.html +111 -0
  1208. data/web/doc/api/more/files/lib/facets/more/pool_rb.html +120 -0
  1209. data/web/doc/api/more/files/lib/facets/more/pqueue_rb.html +122 -0
  1210. data/web/doc/api/more/files/lib/facets/more/preinitialize_rb.html +115 -0
  1211. data/web/doc/api/more/files/lib/facets/more/progressbar_rb.html +111 -0
  1212. data/web/doc/api/more/files/lib/facets/more/promoteself_rb.html +111 -0
  1213. data/web/doc/api/more/files/lib/facets/more/quaternion_rb.html +150 -0
  1214. data/web/doc/api/more/files/lib/facets/more/recorder_rb.html +115 -0
  1215. data/web/doc/api/more/files/lib/facets/more/reference_rb.html +115 -0
  1216. data/web/doc/api/more/files/lib/facets/more/rexmlbuilder_rb.html +116 -0
  1217. data/web/doc/api/more/files/lib/facets/more/rtals_rb.html +115 -0
  1218. data/web/doc/api/more/files/lib/facets/more/semaphore_rb.html +111 -0
  1219. data/web/doc/api/more/files/lib/facets/more/snapshot_rb.html +121 -0
  1220. data/web/doc/api/more/files/lib/facets/more/stateparser_rb.html +115 -0
  1221. data/web/doc/api/more/files/lib/facets/more/statichash_rb.html +133 -0
  1222. data/web/doc/api/more/files/lib/facets/more/syncarray_rb.html +115 -0
  1223. data/web/doc/api/more/files/lib/facets/more/synchash_rb.html +115 -0
  1224. data/web/doc/api/more/files/lib/facets/more/system_rb.html +123 -0
  1225. data/web/doc/api/more/files/lib/facets/more/tagiterator_rb.html +111 -0
  1226. data/web/doc/api/more/files/lib/facets/more/taskable_rb.html +118 -0
  1227. data/web/doc/api/more/files/lib/facets/more/timer_rb.html +127 -0
  1228. data/web/doc/api/more/files/lib/facets/more/times_rb.html +127 -0
  1229. data/web/doc/api/more/files/lib/facets/more/tracepoint_rb.html +131 -0
  1230. data/web/doc/api/more/files/lib/facets/more/tuple_rb.html +122 -0
  1231. data/web/doc/api/more/files/lib/facets/more/typecast_rb.html +124 -0
  1232. data/web/doc/api/more/files/lib/facets/more/uninheritable_rb.html +111 -0
  1233. data/web/doc/api/more/files/lib/facets/more/units_rb.html +118 -0
  1234. data/web/doc/api/more/files/lib/facets/more/xmlbuilder_rb.html +116 -0
  1235. data/web/doc/api/more/files/lib/facets/more/xmlhelper_rb.html +111 -0
  1236. data/web/doc/api/more/files/lib/facets/more/xoxo_rb.html +125 -0
  1237. data/web/doc/api/more/files/lib/facets/more/yamlstruct_rb.html +123 -0
  1238. data/web/doc/api/more/fr_class_index.html +197 -0
  1239. data/web/doc/api/more/fr_file_index.html +136 -0
  1240. data/web/doc/api/more/fr_method_index.html +1290 -0
  1241. data/web/doc/api/more/index.html +26 -0
  1242. data/web/doc/api/more/rdoc-style.css +175 -0
  1243. data/web/documentation.html +174 -0
  1244. data/web/favicon.ico +0 -0
  1245. data/web/images/abc.png +0 -0
  1246. data/web/images/abc1.png +0 -0
  1247. data/web/images/apple_core.jpg +0 -0
  1248. data/web/images/apples3.jpg +0 -0
  1249. data/web/images/best_jupiter_cass.jpg +0 -0
  1250. data/web/images/core.jpg +0 -0
  1251. data/web/images/gray.jpg +0 -0
  1252. data/web/images/ruby-lg.png +0 -0
  1253. data/web/images/ruby.gif +0 -0
  1254. data/web/images/super-friends-volume-two-20050606010933166-001.jpg +0 -0
  1255. data/web/images/three_apples.jpg +0 -0
  1256. data/web/images/yellow_fade.jpg +0 -0
  1257. data/web/images/yellow_fade2.jpg +0 -0
  1258. data/web/index.html +224 -0
  1259. data/web/style.css +153 -0
  1260. metadata +1433 -457
@@ -0,0 +1,212 @@
1
+ #--
2
+ # OpenStructable
3
+ #
4
+ # Copyright (c) 2005 Thomas Sawyer
5
+ #
6
+ # Ruby License
7
+ #
8
+ # This module is free software. You may use, modify, and/or redistribute this
9
+ # software under the same terms as Ruby.
10
+ #
11
+ # This program is distributed in the hope that it will be useful, but WITHOUT
12
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
+ # FOR A PARTICULAR PURPOSE.
14
+ #
15
+ # ==========================================================================
16
+ # Revision History ::
17
+ # --------------------------------------------------------------------------
18
+ # 05.04.28 Trans
19
+ # - Minor modifications to documentation.
20
+ # ==========================================================================
21
+ #
22
+ # TODO
23
+ # Keep this uptodate with ostruct.rb.
24
+ #
25
+ # TODO Ask Matz
26
+ # See if Matz will accept it into core so we don't have to anymore.
27
+ #
28
+ # TODO Marshalling
29
+ # As with OpenStruct, marshalling is problematic at the moment.
30
+ #
31
+ #++
32
+
33
+ #:title: OpenStructable
34
+ #
35
+ # OpensStructable is a mixin module which can provide OpenStruct behavior to
36
+ # any class or object. OpenStructable allows extention of data objects
37
+ # with arbitrary attributes.
38
+ #
39
+ # == Usage
40
+ #
41
+ # require 'mega/ostructable'
42
+ #
43
+ # class Record
44
+ # include OpenStructable
45
+ # end
46
+ #
47
+ # record = Record.new
48
+ # record.name = "John Smith"
49
+ # record.age = 70
50
+ # record.pension = 300
51
+ #
52
+ # puts record.name # -> "John Smith"
53
+ # puts record.address # -> nil
54
+ #
55
+ # == Author(s)
56
+ #
57
+ # * Thomas Sawyer
58
+ # * Yukihiro Matsumoto
59
+ # * Gavin Sinclair (Documentation)
60
+ #
61
+
62
+ module OpenStructable
63
+
64
+ def initialize(hash=nil)
65
+ @__table__ = {}
66
+ if hash
67
+ for k,v in hash
68
+ @__table__[k.to_sym] = v
69
+ new_ostruct_member(k)
70
+ end
71
+ end
72
+ end
73
+
74
+ # duplicate an OpenStruct object members.
75
+ def initialize_copy(orig)
76
+ super
77
+ @__table__ = @__table__.dup
78
+ end
79
+
80
+ def marshal_dump
81
+ @table
82
+ end
83
+ def marshal_load(x)
84
+ @table = x
85
+ @table.each_key{|key| new_ostruct_member(key)}
86
+ end
87
+
88
+ def new_ostruct_member(name)
89
+ unless self.respond_to?(name)
90
+ self.instance_eval %{
91
+ def #{name}; @__table__[:#{name}]; end
92
+ def #{name}=(x); @__table__[:#{name}] = x; end
93
+ }
94
+ end
95
+ end
96
+
97
+ #
98
+ # Generate additional attributes and values.
99
+ #
100
+ def update(hash)
101
+ @__table__ ||= {}
102
+ if hash
103
+ for k,v in hash
104
+ @__table__[k.to_sym] = v
105
+ new_ostruct_member(k)
106
+ end
107
+ end
108
+ end
109
+
110
+ def method_missing(mid, *args) # :nodoc:
111
+ mname = mid.to_s
112
+ len = args.length
113
+ if mname =~ /=$/
114
+ if len != 1
115
+ raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
116
+ end
117
+ if self.frozen?
118
+ raise TypeError, "can't modify frozen #{self.class}", caller(1)
119
+ end
120
+ mname.chop!
121
+ @__table__ ||= {}
122
+ @__table__[mname.intern] = args[0]
123
+ self.new_ostruct_member(mname)
124
+ elsif len == 0
125
+ @__table__ ||= {}
126
+ @__table__[mid]
127
+ else
128
+ raise NoMethodError, "undefined method `#{mname}' for #{self}", caller(1)
129
+ end
130
+ end
131
+
132
+ #
133
+ # Remove the named field from the object.
134
+ #
135
+ def delete_field(name)
136
+ @__table__ ||= {}
137
+ @__table__.delete name.to_sym
138
+ end
139
+
140
+ #
141
+ # Returns a string containing a detailed summary of the keys and values.
142
+ #
143
+ def inspect
144
+ str = "<#{self.class}"
145
+ for k,v in (@__table__ ||= {})
146
+ str << " #{k}=#{v.inspect}"
147
+ end
148
+ str << ">"
149
+ end
150
+
151
+ def __table__ # :nodoc:
152
+ @__table__ ||= {}
153
+ end
154
+ protected :__table__
155
+
156
+ # Compare this object and +other+ for equality.
157
+ def ==(other)
158
+ return false unless(other.kind_of?(OpenStruct))
159
+ return @__table__ == other.table
160
+ end
161
+
162
+ end
163
+
164
+ =begin
165
+ #
166
+ # It is possibe to implement OpenStruct itself with
167
+ # this OpenStructable module as follows:
168
+ #
169
+ class OpenStruct
170
+ include OpenStructable
171
+ end
172
+ =end
173
+
174
+
175
+
176
+ # _____ _
177
+ # |_ _|__ ___| |_
178
+ # | |/ _ \/ __| __|
179
+ # | | __/\__ \ |_
180
+ # |_|\___||___/\__|
181
+ #
182
+
183
+ =begin testing
184
+
185
+ require 'test/unit'
186
+
187
+ # fixture
188
+
189
+ class Record
190
+ include OpenStructable
191
+ end
192
+
193
+ # test
194
+
195
+ class TC_OpenStructable < Test::Unit::TestCase
196
+
197
+ def test_record
198
+ record = nil
199
+ assert_nothing_raised {
200
+ record = Record.new
201
+ record.name = "John Smith"
202
+ record.age = 70
203
+ record.pension = 300
204
+ }
205
+ assert_equal( "John Smith", record.name )
206
+ assert_equal( 70, record.age )
207
+ assert_equal( nil, record.address )
208
+ end
209
+
210
+ end
211
+
212
+ =end
@@ -0,0 +1,55 @@
1
+
2
+ class PairHash
3
+
4
+ def initialize( *args )
5
+ @outer = Hash.new([])
6
+ end
7
+
8
+ def add_entry( x, y, z )
9
+ a = [y,z]
10
+ @outer[x] << a
11
+ a
12
+ end
13
+
14
+ def del_entry( x, y=nil )
15
+ if y
16
+ @outer[x].reject! { |e| e[0] == y }
17
+ else
18
+ @outer.delete(x)
19
+ end
20
+ end
21
+
22
+ def inner_value?( v, x, y )
23
+ @outer[x].select { |e| e == [y,v] }
24
+ end
25
+
26
+ end
27
+
28
+
29
+ # test
30
+
31
+ if $0 == __FILE__
32
+
33
+ require 'test/unit'
34
+
35
+ class TC < Test::Unit::TestCase
36
+
37
+ def setup
38
+ @ph = ::PairHash.new
39
+ end
40
+
41
+ def test01
42
+ @ph.add_entry( "x", "aa", 2 )
43
+ @ph.add_entry( "x", "aa", 3 )
44
+ @ph.add_entry( "x", "bb", "boo" )
45
+ end
46
+
47
+ def test02
48
+ assert( @ph.inner_value?( 3, "x", "aa" ) )
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+
55
+
@@ -0,0 +1,1309 @@
1
+ # = pathname.rb
2
+ #
3
+ # Object-Oriented Pathname Class
4
+ #
5
+ # Author:: Tanaka Akira <akr@m17n.org>
6
+ # Documentation:: Author and Gavin Sinclair
7
+ #
8
+ # For documentation, see class Pathname.
9
+ #
10
+ # <tt>pathname.rb</tt> is distributed with Ruby since 1.8.0.
11
+ #
12
+
13
+ # THIS IS AN IMPROVED VERSION THAT USES AN ARRAY INSTEAD OF A STRING FOR PATH.
14
+
15
+ #
16
+ # == Pathname
17
+ #
18
+ # Pathname represents a pathname which locates a file in a filesystem.
19
+ # It supports only Unix style pathnames. It does not represent the file
20
+ # itself. A Pathname can be relative or absolute. It's not until you try to
21
+ # reference the file that it even matters whether the file exists or not.
22
+ #
23
+ # Pathname is immutable. It has no method for destructive update.
24
+ #
25
+ # The value of this class is to manipulate file path information in a neater
26
+ # way than standard Ruby provides. The examples below demonstrate the
27
+ # difference. *All* functionality from File, FileTest, and some from Dir and
28
+ # FileUtils is included, in an unsurprising way. It is essentially a facade for
29
+ # all of these, and more.
30
+ #
31
+ # == Examples
32
+ #
33
+ # === Example 1: Using Pathname
34
+ #
35
+ # require 'pathname'
36
+ # p = Pathname.new("/usr/bin/ruby")
37
+ # size = p.size # 27662
38
+ # isdir = p.directory? # false
39
+ # dir = p.dirname # Pathname:/usr/bin
40
+ # base = p.basename # Pathname:ruby
41
+ # dir, base = p.split # [Pathname:/usr/bin, Pathname:ruby]
42
+ # data = p.read
43
+ # p.open { |f| _ }
44
+ # p.each_line { |line| _ }
45
+ #
46
+ # === Example 2: Using standard Ruby
47
+ #
48
+ # p = "/usr/bin/ruby"
49
+ # size = File.size(p) # 27662
50
+ # isdir = File.directory?(p) # false
51
+ # dir = File.dirname(p) # "/usr/bin"
52
+ # base = File.basename(p) # "ruby"
53
+ # dir, base = File.split(p) # ["/usr/bin", "ruby"]
54
+ # data = File.read(p)
55
+ # File.open(p) { |f| _ }
56
+ # File.foreach(p) { |line| _ }
57
+ #
58
+ # === Example 3: Special features
59
+ #
60
+ # p1 = Pathname.new("/usr/lib") # Pathname:/usr/lib
61
+ # p2 = p1 + "ruby/1.8" # Pathname:/usr/lib/ruby/1.8
62
+ # p3 = p1.parent # Pathname:/usr
63
+ # p4 = p2.relative_path_from(p3) # Pathname:lib/ruby/1.8
64
+ # pwd = Pathname.pwd # Pathname:/home/gavin
65
+ # pwd.absolute? # true
66
+ # p5 = Pathname.new "." # Pathname:.
67
+ # p5 = p5 + "music/../articles" # Pathname:music/../articles
68
+ # p5.cleanpath # Pathname:articles
69
+ # p5.realpath # Pathname:/home/gavin/articles
70
+ # p5.children # [Pathname:/home/gavin/articles/linux, ...]
71
+ #
72
+ # == Breakdown of functionality
73
+ #
74
+ # === Core methods
75
+ #
76
+ # These methods are effectively manipulating a String, because that's all a path
77
+ # is. Except for #mountpoint?, #children, and #realpath, they don't access the
78
+ # filesystem.
79
+ #
80
+ # - +
81
+ # - #join
82
+ # - #parent
83
+ # - #root?
84
+ # - #absolute?
85
+ # - #relative?
86
+ # - #relative_path_from
87
+ # - #each_filename
88
+ # - #cleanpath
89
+ # - #realpath
90
+ # - #children
91
+ # - #mountpoint?
92
+ #
93
+ # === File status predicate methods
94
+ #
95
+ # These methods are a facade for FileTest:
96
+ # - #blockdev?
97
+ # - #chardev?
98
+ # - #directory?
99
+ # - #executable?
100
+ # - #executable_real?
101
+ # - #exist?
102
+ # - #file?
103
+ # - #grpowned?
104
+ # - #owned?
105
+ # - #pipe?
106
+ # - #readable?
107
+ # - #readable_real?
108
+ # - #setgid?
109
+ # - #setuid?
110
+ # - #size
111
+ # - #size?
112
+ # - #socket?
113
+ # - #sticky?
114
+ # - #symlink?
115
+ # - #writable?
116
+ # - #writable_real?
117
+ # - #zero?
118
+ #
119
+ # === File property and manipulation methods
120
+ #
121
+ # These methods are a facade for File:
122
+ # - #atime
123
+ # - #ctime
124
+ # - #mtime
125
+ # - #chmod(mode)
126
+ # - #lchmod(mode)
127
+ # - #chown(owner, group)
128
+ # - #lchown(owner, group)
129
+ # - #fnmatch(pattern, *args)
130
+ # - #fnmatch?(pattern, *args)
131
+ # - #ftype
132
+ # - #make_link(old)
133
+ # - #open(*args, &block)
134
+ # - #readlink
135
+ # - #rename(to)
136
+ # - #stat
137
+ # - #lstat
138
+ # - #make_symlink(old)
139
+ # - #truncate(length)
140
+ # - #utime(atime, mtime)
141
+ # - #basename(*args)
142
+ # - #dirname
143
+ # - #extname
144
+ # - #expand_path(*args)
145
+ # - #split
146
+ #
147
+ # === Directory methods
148
+ #
149
+ # These methods are a facade for Dir:
150
+ # - Pathname.glob(*args)
151
+ # - Pathname.getwd / Pathname.pwd
152
+ # - #rmdir
153
+ # - #entries
154
+ # - #each_entry(&block)
155
+ # - #mkdir(*args)
156
+ # - #opendir(*args)
157
+ #
158
+ # === IO
159
+ #
160
+ # These methods are a facade for IO:
161
+ # - #each_line(*args, &block)
162
+ # - #read(*args)
163
+ # - #readlines(*args)
164
+ # - #sysopen(*args)
165
+ #
166
+ # === Utilities
167
+ #
168
+ # These methods are a mixture of Find, FileUtils, and others:
169
+ # - #find(&block)
170
+ # - #mkpath
171
+ # - #rmtree
172
+ # - #unlink / #delete
173
+ #
174
+ #
175
+ # == Method documentation
176
+ #
177
+ # As the above section shows, most of the methods in Pathname are facades. The
178
+ # documentation for these methods generally just says, for instance, "See
179
+ # FileTest.writable?", as you should be familiar with the original method
180
+ # anyway, and its documentation (e.g. through +ri+) will contain more
181
+ # information. In some cases, a brief description will follow.
182
+ #
183
+ class Pathname
184
+
185
+ class << self
186
+
187
+ def create( path=[], abs=false, trail=false )
188
+ o = self.allocate
189
+ o.instance_variable_set("@path", path.dup)
190
+ o.instance_variable_set("@absolute", abs ? true : false)
191
+ o.instance_variable_set("@trail", trail ? true : false)
192
+ o
193
+ end
194
+
195
+ def [](path)
196
+ new(path)
197
+ end
198
+ end
199
+
200
+ # Create a Pathname object from the given String (or String-like object).
201
+ # If +path+ contains a NUL character (<tt>\0</tt>), an ArgumentError is raised.
202
+ #
203
+ def initialize(*path)
204
+ path = path.join('/')
205
+ @absolute = path[0,1] == '/' ? true : false
206
+ @trail = (path.size > 1 and path[-1,1] == '/') ? true : false
207
+ @path = path.split(%r{/})
208
+ @path.delete('')
209
+
210
+ #case path
211
+ #when Pathname
212
+ # @path = path.pathlist.dup
213
+ # @absolute = path.absolute?
214
+ #when Array
215
+ # @path = path.collect{|e| e.to_str}
216
+ # @absolute = absolute
217
+ #else
218
+ # path = path.to_str if path.respond_to?(:to_str)
219
+ # raise ArgumentError, "pathname contains \\0: #{@path.inspect}" if /\0/ =~ @path
220
+ # @path = path.split(%r{/})
221
+ # @path.unshift('') if path[0,1] == '/' # absolute path
222
+ #end
223
+
224
+ self.taint if path.tainted?
225
+ end
226
+
227
+ def freeze() super; @path.freeze; self end
228
+ def taint() super; @path.taint; self end
229
+ def untaint() super; @path.untaint; self end
230
+
231
+ # Stores the array of the componet parts of the pathname.
232
+ #
233
+ # protected
234
+ def pathlist
235
+ @path
236
+ end
237
+
238
+ # Compare this pathname with +other+. The comparison is string-based.
239
+ # Be aware that two different paths (<tt>foo.txt</tt> and <tt>./foo.txt</tt>)
240
+ # can refer to the same file.
241
+ #
242
+ def ==(other)
243
+ return false unless Pathname === other
244
+ if @absolute
245
+ return false unless other.absolute?
246
+ end
247
+ @path == other.pathlist
248
+ end
249
+ alias_method :===, :==
250
+ alias_method :eql?, :==
251
+
252
+ # Provides for comparing pathnames, case-sensitively.
253
+ def <=>(other)
254
+ return nil unless Pathname === other
255
+ return 1 if absolute? and not other.absolute?
256
+ return -1 if other.absolute? and not absolute?
257
+ r = @path <=> other.pathlist
258
+ return r unless r == 0
259
+ return 1 if trail? and not other.trail?
260
+ return -1 if other.trail? and not trail?
261
+ 0
262
+ end
263
+
264
+ def hash # :nodoc:
265
+ to_s.hash
266
+ end
267
+
268
+ # Return the path as a String (same as to_s).
269
+ def path
270
+ s = ''
271
+ s << '/' if @absolute
272
+ s << @path.join('/')
273
+ s << '/' if @trail
274
+ s << '.' if s.empty?
275
+ s
276
+ end
277
+
278
+ # Return the path as a String (same as pathname).
279
+ def to_s
280
+ s = ''
281
+ s << '/' if @absolute
282
+ s << @path.join('/')
283
+ s << '/' if @trail
284
+ s << '.' if s.empty?
285
+ s
286
+ end
287
+
288
+ # to_str is implemented so Pathname objects are usable with File.open, etc.
289
+ alias_method :to_str, :to_s
290
+
291
+ def inspect # :nodoc:
292
+ "#<#{self.class}: #{to_s}>"
293
+ end
294
+
295
+ # append directory or file name to path
296
+ def <<(name)
297
+ name = name.to_str
298
+ @path << name unless name.strip.empty?
299
+ @path
300
+ end
301
+
302
+ #
303
+ # Returns clean pathname of +self+ with consecutive slashes and useless dots
304
+ # removed. The filesystem is not accessed.
305
+ #
306
+ # If +consider_symlink+ is +true+, then a more conservative algorithm is used
307
+ # to avoid breaking symbolic linkages. This may retain more <tt>..</tt>
308
+ # entries than absolutely necessary, but without accessing the filesystem,
309
+ # this can't be avoided. See #realpath.
310
+ #
311
+ def cleanpath(consider_symlink=false)
312
+ if consider_symlink
313
+ cleanpath_conservative
314
+ else
315
+ cleanpath_aggressive
316
+ end
317
+ end
318
+
319
+ # Clean the path simply by resolving and removing excess "." and ".." entries.
320
+ # Nothing more, nothing less.
321
+ #
322
+ def cleanpath_aggressive
323
+ # cleanpath_aggressive assumes:
324
+ # * no symlink
325
+ # * all pathname prefix contained in the pathname is existing directory
326
+ return Pathname.create([],@absolute,@trail) if path.empty?
327
+ absolute = absolute?
328
+ trail = trail?
329
+ names = []
330
+ @path.each {|name|
331
+ next if name == '.'
332
+ if name == '..'
333
+ if names.empty?
334
+ next if absolute
335
+ else
336
+ if names.last != '..'
337
+ names.pop
338
+ next
339
+ end
340
+ end
341
+ end
342
+ names << name
343
+ }
344
+ return Pathname.new(absolute ? '/' : '.') if names.empty?
345
+ #path = []
346
+ #path << '' if absolute
347
+ #path.concat(names)
348
+ Pathname.create(names, absolute) #, trail)
349
+ end
350
+ private :cleanpath_aggressive
351
+
352
+ def cleanpath_conservative
353
+ return Pathname.create([],@absolute) if @path.empty?
354
+ names = @path.dup #.scan(%r{[^/]+})
355
+ last_dot = (names.last == '.')
356
+ names.delete('.')
357
+ names.shift while names.first == '..' if absolute?
358
+ return Pathname.new(absolute? ? '/' : '.') if names.empty?
359
+ newpath = []
360
+ trail = false
361
+ #newpath << '' if absolute?
362
+ newpath.concat(names)
363
+ if names.last != '..'
364
+ if last_dot
365
+ newpath << '.'
366
+ elsif trail? #%r{/\z} =~ @path #HOW TO DEAL WITH TRAILING '/' ?
367
+ trail = true
368
+ end
369
+ end
370
+ Pathname.create(newpath, absolute?, trail)
371
+ end
372
+ private :cleanpath_conservative
373
+
374
+ #
375
+ # Returns a real (absolute) pathname of +self+ in the actual filesystem.
376
+ # The real pathname doesn't contain symlinks or useless dots.
377
+ #
378
+ # No arguments should be given; the old behaviour is *obsoleted*.
379
+ #
380
+ def realpath(*args)
381
+ unless args.empty?
382
+ warn "The argument for Pathname#realpath is obsoleted."
383
+ end
384
+ force_absolute = args.fetch(0, true)
385
+
386
+ if @path.first == ''
387
+ top = '/'
388
+ unresolved = @path.slice(1..-1) #.scan(%r{[^/]+})
389
+ elsif force_absolute
390
+ # Although POSIX getcwd returns a pathname which contains no symlink,
391
+ # 4.4BSD-Lite2 derived getcwd may return the environment variable $PWD
392
+ # which may contain a symlink.
393
+ # So the return value of Dir.pwd should be examined.
394
+ top = '/'
395
+ unresolved = Dir.pwd.split(%r{/}) + @path
396
+ else
397
+ top = ''
398
+ unresolved = @path.dup #.scan(%r{[^/]+})
399
+ end
400
+ resolved = []
401
+
402
+ until unresolved.empty?
403
+ case unresolved.last
404
+ when '.'
405
+ unresolved.pop
406
+ when '..'
407
+ resolved.unshift unresolved.pop
408
+ else
409
+ loop_check = {}
410
+ while (stat = File.lstat(path = top + unresolved.join('/'))).symlink?
411
+ symlink_id = "#{stat.dev}:#{stat.ino}"
412
+ raise Errno::ELOOP.new(path) if loop_check[symlink_id]
413
+ loop_check[symlink_id] = true
414
+ if %r{\A/} =~ (link = File.readlink(path))
415
+ top = '/'
416
+ unresolved = link.split(%r{/}) #scan(%r{[^/]+})
417
+ else
418
+ unresolved[-1,1] = link.split(%r{/}) #.scan(%r{[^/]+})
419
+ end
420
+ end
421
+ next if (filename = unresolved.pop) == '.'
422
+ if filename != '..' && resolved.first == '..'
423
+ resolved.shift
424
+ else
425
+ resolved.unshift filename
426
+ end
427
+ end
428
+ end
429
+
430
+ if top == '/'
431
+ resolved.shift while resolved[0] == '..'
432
+ end
433
+
434
+ if resolved.empty?
435
+ Pathname.new(top.empty? ? '.' : '/')
436
+ else
437
+ if top.empty?
438
+ Pathname.new(resolved)
439
+ else
440
+ Pathname.new(resolved, true)
441
+ end
442
+ end
443
+ end
444
+
445
+ # #parent returns the parent directory.
446
+ #
447
+ # This is same as <tt>self + '..'</tt>.
448
+ def parent
449
+ self << '..'
450
+ end
451
+
452
+ # #mountpoint? returns +true+ if <tt>self</tt> points to a mountpoint.
453
+ def mountpoint?
454
+ begin
455
+ stat1 = self.lstat
456
+ stat2 = self.parent.lstat
457
+ stat1.dev == stat2.dev && stat1.ino == stat2.ino ||
458
+ stat1.dev != stat2.dev
459
+ rescue Errno::ENOENT
460
+ false
461
+ end
462
+ end
463
+
464
+ #
465
+ # #root? is a predicate for root directories. I.e. it returns +true+ if the
466
+ # pathname consists of consecutive slashes.
467
+ #
468
+ # It doesn't access actual filesystem. So it may return +false+ for some
469
+ # pathnames which points to roots such as <tt>/usr/..</tt>.
470
+ #
471
+ def root?
472
+ #%r{\A/+\z} =~ @path ? true : false
473
+ @absolute and @path.empty?
474
+ end
475
+
476
+ def current?
477
+ #%r{\A/+\z} =~ @path ? true : false
478
+ (!@absolute) and @path.empty?
479
+ end
480
+
481
+ # Predicate method for testing whether a path is absolute.
482
+ # It returns +true+ if the pathname begins with a slash.
483
+ def absolute?
484
+ #%r{\A/} =~ @path ? true : false
485
+ @absolute
486
+ end
487
+
488
+ # The opposite of #absolute?
489
+ def relative?
490
+ !@absolute
491
+ end
492
+
493
+ def trail?
494
+ @trail
495
+ end
496
+
497
+ #
498
+ # Iterates over each component of the path.
499
+ #
500
+ # Pathname.new("/usr/bin/ruby").each_filename {|filename| ... }
501
+ # # yields "usr", "bin", and "ruby".
502
+ #
503
+ def each_filename # :yield: e
504
+ #@path.scan(%r{[^/]+}) { yield $& }
505
+ @path.each { |e| yield e }
506
+ end
507
+
508
+ #
509
+ # Pathname#+ appends a pathname fragment to this one to produce a new Pathname
510
+ # object.
511
+ #
512
+ # p1 = Pathname.new("/usr") # Pathname:/usr
513
+ # p2 = p1 + "bin/ruby" # Pathname:/usr/bin/ruby
514
+ # p3 = p1 + "/etc/passwd" # Pathname:/etc/passwd
515
+ #
516
+ # This method doesn't access the file system; it is pure string manipulation.
517
+ #
518
+ def +(other)
519
+ File.join( to_s,other )
520
+
521
+ #other = Pathname.new(other) unless Pathname === other
522
+ #return other if other.absolute?
523
+ #pth = (@path + other.pathlist)
524
+ #pth.delete('.')
525
+ #Pathname.create(pth, @absolute, other.trail?)
526
+
527
+ # path1 = @path#
528
+ # path2 = other.to_s
529
+ # while m2 = %r{\A\.\.(?:/+|\z)}.match(path2) and
530
+ # m1 = %r{(\A|/+)([^/]+)\z}.match(path1) and
531
+ # %r{\A(?:\.|\.\.)\z} !~ m1[2]
532
+ # path1 = m1[1].empty? ? '.' : '/' if (path1 = m1.pre_match).empty?
533
+ # path2 = '.' if (path2 = m2.post_match).empty?
534
+ # end
535
+ # if %r{\A/+\z} =~ path1
536
+ # while m2 = %r{\A\.\.(?:/+|\z)}.match(path2)
537
+ # path2 = '.' if (path2 = m2.post_match).empty?
538
+ # end
539
+ # end
540
+ #
541
+ # return Pathname.new(path2) if path1 == '.'
542
+ # return Pathname.new(path1) if path2 == '.'
543
+ #
544
+ # if %r{/\z} =~ path1
545
+ # Pathname.new(path1 + path2)
546
+ # else
547
+ # Pathname.new(path1 + '/' + path2)
548
+ # end
549
+ end
550
+
551
+ #
552
+ # Pathname#join joins pathnames.
553
+ #
554
+ # <tt>path0.join(path1, ..., pathN)</tt> is the same as
555
+ # <tt>path0 + path1 + ... + pathN</tt>.
556
+ #
557
+ # HELP ME!!!
558
+ #
559
+ def join(*args)
560
+ Pathname.new(*args)
561
+ #args.unshift self
562
+ #result = args.pop
563
+ #result = Pathname.new(result) unless Pathname === result
564
+ #return result if result.absolute?
565
+ #args.reverse_each {|arg|
566
+ # arg = Pathname.new(arg) unless Pathname === arg
567
+ # result = arg + result
568
+ # return result if result.absolute?
569
+ #}
570
+ #result
571
+ end
572
+
573
+ #
574
+ # Returns the children of the directory (files and subdirectories, not
575
+ # recursive) as an array of Pathname objects. By default, the returned
576
+ # pathnames will have enough information to access the files. If you set
577
+ # +with_directory+ to +false+, then the returned pathnames will contain the
578
+ # filename only.
579
+ #
580
+ # For example:
581
+ # p = Pathname("/usr/lib/ruby/1.8")
582
+ # p.children
583
+ # # -> [ Pathname:/usr/lib/ruby/1.8/English.rb,
584
+ # Pathname:/usr/lib/ruby/1.8/Env.rb,
585
+ # Pathname:/usr/lib/ruby/1.8/abbrev.rb, ... ]
586
+ # p.children(false)
587
+ # # -> [ Pathname:English.rb, Pathname:Env.rb, Pathname:abbrev.rb, ... ]
588
+ #
589
+ # Note that the result never contain the entries <tt>.</tt> and <tt>..</tt> in
590
+ # the directory because they are not children.
591
+ #
592
+ # This method has existed since 1.8.1.
593
+ #
594
+ def children(with_directory=true)
595
+ with_directory = false if @path == ['.']
596
+ result = []
597
+ Dir.foreach(to_s) {|e|
598
+ next if e == '.' || e == '..'
599
+ if with_directory
600
+ result << Pathname.create(@path + [e], absolute?)
601
+ else
602
+ result << Pathname.new(e)
603
+ end
604
+ }
605
+ result
606
+ end
607
+
608
+ #
609
+ # #relative_path_from returns a relative path from the argument to the
610
+ # receiver. If +self+ is absolute, the argument must be absolute too. If
611
+ # +self+ is relative, the argument must be relative too.
612
+ #
613
+ # #relative_path_from doesn't access the filesystem. It assumes no symlinks.
614
+ #
615
+ # ArgumentError is raised when it cannot find a relative path.
616
+ #
617
+ # This method has existed since 1.8.1.
618
+ #
619
+ def relative_path_from(base_directory)
620
+ if self.absolute? != base_directory.absolute?
621
+ raise ArgumentError,
622
+ "relative path between absolute and relative path: #{self.inspect}, #{base_directory.inspect}"
623
+ end
624
+
625
+ dest = []
626
+ self.cleanpath.each_filename {|f|
627
+ next if f == '.'
628
+ dest << f
629
+ }
630
+
631
+ base = []
632
+ base_directory.cleanpath.each_filename {|f|
633
+ next if f == '.'
634
+ base << f
635
+ }
636
+
637
+ while !base.empty? && !dest.empty? && base[0] == dest[0]
638
+ base.shift
639
+ dest.shift
640
+ end
641
+
642
+ if base.include? '..'
643
+ raise ArgumentError, "base_directory has ..: #{base_directory.inspect}"
644
+ end
645
+
646
+ base.fill '..'
647
+ relpath = base + dest
648
+ if relpath.empty?
649
+ Pathname.new('.')
650
+ else
651
+ Pathname.create(relpath, false) #.join('/'))
652
+ end
653
+ end
654
+
655
+ end
656
+
657
+
658
+ class Pathname # * IO *
659
+ #
660
+ # #each_line iterates over the line in the file. It yields a String object
661
+ # for each line.
662
+ #
663
+ # This method has existed since 1.8.1.
664
+ #
665
+ def each_line(*args, &block) # :yield: line
666
+ IO.foreach(path, *args, &block)
667
+ end
668
+
669
+ # Pathname#foreachline is *obsoleted* at 1.8.1. Use #each_line.
670
+ def foreachline(*args, &block)
671
+ warn "Pathname#foreachline is obsoleted. Use Pathname#each_line."
672
+ each_line(*args, &block)
673
+ end
674
+
675
+ # See <tt>IO.read</tt>. Returns all the bytes from the file, or the first +N+
676
+ # if specified.
677
+ def read(*args) IO.read(path, *args) end
678
+
679
+ # See <tt>IO.readlines</tt>. Returns all the lines from the file.
680
+ def readlines(*args) IO.readlines(path, *args) end
681
+
682
+ # See <tt>IO.sysopen</tt>.
683
+ def sysopen(*args) IO.sysopen(path, *args) end
684
+ end
685
+
686
+
687
+ class Pathname # * File *
688
+
689
+ # See <tt>File.atime</tt>. Returns last access time.
690
+ def atime() File.atime(path) end
691
+
692
+ # See <tt>File.ctime</tt>. Returns last (directory entry, not file) change time.
693
+ def ctime() File.ctime(path) end
694
+
695
+ # See <tt>File.mtime</tt>. Returns last modification time.
696
+ def mtime() File.mtime(path) end
697
+
698
+ # See <tt>File.chmod</tt>. Changes permissions.
699
+ def chmod(mode) File.chmod(mode, path) end
700
+
701
+ # See <tt>File.lchmod</tt>.
702
+ def lchmod(mode) File.lchmod(mode, path) end
703
+
704
+ # See <tt>File.chown</tt>. Change owner and group of file.
705
+ def chown(owner, group) File.chown(owner, group, path) end
706
+
707
+ # See <tt>File.lchown</tt>.
708
+ def lchown(owner, group) File.lchown(owner, group, path) end
709
+
710
+ # See <tt>File.fnmatch</tt>. Return +true+ if the receiver matches the given
711
+ # pattern.
712
+ def fnmatch(pattern, *args) File.fnmatch(pattern, path, *args) end
713
+
714
+ # See <tt>File.fnmatch?</tt> (same as #fnmatch).
715
+ def fnmatch?(pattern, *args) File.fnmatch?(pattern, path, *args) end
716
+
717
+ # See <tt>File.ftype</tt>. Returns "type" of file ("file", "directory",
718
+ # etc).
719
+ def ftype() File.ftype(path) end
720
+
721
+ # See <tt>File.link</tt>. Creates a hard link.
722
+ def make_link(old) File.link(old, path) end
723
+
724
+ # See <tt>File.open</tt>. Opens the file for reading or writing.
725
+ def open(*args, &block) # :yield: file
726
+ File.open(path, *args, &block)
727
+ end
728
+
729
+ # See <tt>File.readlink</tt>. Read symbolic link.
730
+ def readlink() Pathname.new(File.readlink(path)) end
731
+
732
+ # See <tt>File.rename</tt>. Rename the file.
733
+ def rename(to) File.rename(path, to) end
734
+
735
+ # See <tt>File.stat</tt>. Returns a <tt>File::Stat</tt> object.
736
+ def stat() File.stat(path) end
737
+
738
+ # See <tt>File.lstat</tt>.
739
+ def lstat() File.lstat(path) end
740
+
741
+ # See <tt>File.symlink</tt>. Creates a symbolic link.
742
+ def make_symlink(old) File.symlink(old, path) end
743
+
744
+ # See <tt>File.truncate</tt>. Truncate the file to +length+ bytes.
745
+ def truncate(length) File.truncate(path, length) end
746
+
747
+ # See <tt>File.utime</tt>. Update the access and modification times.
748
+ def utime(atime, mtime) File.utime(atime, mtime, path) end
749
+
750
+ # See <tt>File.basename</tt>. Returns the last component of the path.
751
+ def basename(*args) Pathname.new(File.basename(path, *args)) end
752
+
753
+ # See <tt>File.dirname</tt>. Returns all but the last component of the path.
754
+ def dirname() Pathname.new(File.dirname(path)) end
755
+
756
+ # See <tt>File.extname</tt>. Returns the file's extension.
757
+ def extname() File.extname(path) end
758
+
759
+ # See <tt>File.expand_path</tt>.
760
+ def expand_path(*args) Pathname.new(File.expand_path(path, *args)) end
761
+
762
+ # See <tt>File.split</tt>. Returns the #dirname and the #basename in an
763
+ # Array.
764
+ def split() File.split(path).map {|f| Pathname.new(f) } end
765
+
766
+ # Pathname#link is confusing and *obsoleted* because the receiver/argument
767
+ # order is inverted to corresponding system call.
768
+ def link(old)
769
+ warn 'Pathname#link is obsoleted. Use Pathname#make_link.'
770
+ File.link(old, path)
771
+ end
772
+
773
+ # Pathname#symlink is confusing and *obsoleted* because the receiver/argument
774
+ # order is inverted to corresponding system call.
775
+ def symlink(old)
776
+ warn 'Pathname#symlink is obsoleted. Use Pathname#make_symlink.'
777
+ File.symlink(old, path)
778
+ end
779
+ end
780
+
781
+
782
+ class Pathname # * FileTest *
783
+
784
+ # See <tt>FileTest.blockdev?</tt>.
785
+ def blockdev?() FileTest.blockdev?(path) end
786
+
787
+ # See <tt>FileTest.chardev?</tt>.
788
+ def chardev?() FileTest.chardev?(path) end
789
+
790
+ # See <tt>FileTest.executable?</tt>.
791
+ def executable?() FileTest.executable?(path) end
792
+
793
+ # See <tt>FileTest.executable_real?</tt>.
794
+ def executable_real?() FileTest.executable_real?(path) end
795
+
796
+ # See <tt>FileTest.exist?</tt>.
797
+ def exist?() FileTest.exist?(path) end
798
+
799
+ # See <tt>FileTest.grpowned?</tt>.
800
+ def grpowned?() FileTest.grpowned?(path) end
801
+
802
+ # See <tt>FileTest.directory?</tt>.
803
+ def directory?() FileTest.directory?(path) end
804
+
805
+ # See <tt>FileTest.file?</tt>.
806
+ def file?() FileTest.file?(path) end
807
+
808
+ # See <tt>FileTest.pipe?</tt>.
809
+ def pipe?() FileTest.pipe?(path) end
810
+
811
+ # See <tt>FileTest.socket?</tt>.
812
+ def socket?() FileTest.socket?(path) end
813
+
814
+ # See <tt>FileTest.owned?</tt>.
815
+ def owned?() FileTest.owned?(path) end
816
+
817
+ # See <tt>FileTest.readable?</tt>.
818
+ def readable?() FileTest.readable?(path) end
819
+
820
+ # See <tt>FileTest.readable_real?</tt>.
821
+ def readable_real?() FileTest.readable_real?(path) end
822
+
823
+ # See <tt>FileTest.setuid?</tt>.
824
+ def setuid?() FileTest.setuid?(path) end
825
+
826
+ # See <tt>FileTest.setgid?</tt>.
827
+ def setgid?() FileTest.setgid?(path) end
828
+
829
+ # See <tt>FileTest.size</tt>.
830
+ def size() FileTest.size(path) end
831
+
832
+ # See <tt>FileTest.size?</tt>.
833
+ def size?() FileTest.size?(path) end
834
+
835
+ # See <tt>FileTest.sticky?</tt>.
836
+ def sticky?() FileTest.sticky?(path) end
837
+
838
+ # See <tt>FileTest.symlink?</tt>.
839
+ def symlink?() FileTest.symlink?(path) end
840
+
841
+ # See <tt>FileTest.writable?</tt>.
842
+ def writable?() FileTest.writable?(path) end
843
+
844
+ # See <tt>FileTest.writable_real?</tt>.
845
+ def writable_real?() FileTest.writable_real?(path) end
846
+
847
+ # See <tt>FileTest.zero?</tt>.
848
+ def zero?() FileTest.zero?(path) end
849
+ end
850
+
851
+
852
+ class Pathname # * Dir *
853
+ # See <tt>Dir.glob</tt>. Returns or yields Pathname objects.
854
+ def Pathname.glob(*args) # :yield: p
855
+ if block_given?
856
+ Dir.glob(*args) {|f| yield Pathname.new(f) }
857
+ else
858
+ Dir.glob(*args).map {|f| Pathname.new(f) }
859
+ end
860
+ end
861
+
862
+ # See <tt>Dir.getwd</tt>. Returns the current working directory as a Pathname.
863
+ def Pathname.getwd() Pathname.new(Dir.getwd) end
864
+ class << self; alias pwd getwd end
865
+
866
+ # Pathname#chdir is *obsoleted* at 1.8.1.
867
+ def chdir(&block)
868
+ warn "Pathname#chdir is obsoleted. Use Dir.chdir."
869
+ Dir.chdir(path, &block)
870
+ end
871
+
872
+ # Pathname#chroot is *obsoleted* at 1.8.1.
873
+ def chroot
874
+ warn "Pathname#chroot is obsoleted. Use Dir.chroot."
875
+ Dir.chroot(path)
876
+ end
877
+
878
+ # Return the entries (files and subdirectories) in the directory, each as a
879
+ # Pathname object.
880
+ def entries() Dir.entries(path).map {|f| Pathname.new(f) } end
881
+
882
+ # Iterates over the entries (files and subdirectories) in the directory. It
883
+ # yields a Pathname object for each entry.
884
+ #
885
+ # This method has existed since 1.8.1.
886
+ def each_entry(&block) # :yield: p
887
+ Dir.foreach(path) {|f| yield Pathname.new(f) }
888
+ end
889
+
890
+ # Pathname#dir_foreach is *obsoleted* at 1.8.1.
891
+ def dir_foreach(*args, &block)
892
+ warn "Pathname#dir_foreach is obsoleted. Use Pathname#each_entry."
893
+ each_entry(*args, &block)
894
+ end
895
+
896
+ # See <tt>Dir.mkdir</tt>. Create the referenced directory.
897
+ def mkdir(*args) Dir.mkdir(path, *args) end
898
+
899
+ # See <tt>Dir.rmdir</tt>. Remove the referenced directory.
900
+ def rmdir() Dir.rmdir(path) end
901
+
902
+ # See <tt>Dir.open</tt>.
903
+ def opendir(&block) # :yield: dir
904
+ Dir.open(path, &block)
905
+ end
906
+ end
907
+
908
+
909
+ class Pathname # * Find *
910
+ #
911
+ # Pathname#find is an iterator to traverse a directory tree in a depth first
912
+ # manner. It yields a Pathname for each file under "this" directory.
913
+ #
914
+ # Since it is implemented by <tt>find.rb</tt>, <tt>Find.prune</tt> can be used
915
+ # to control the traverse.
916
+ #
917
+ # If +self+ is <tt>.</tt>, yielded pathnames begin with a filename in the
918
+ # current directory, not <tt>./</tt>.
919
+ #
920
+ def find(&block) # :yield: p
921
+ require 'find'
922
+ if @path == ['.']
923
+ Find.find(path) {|f| yield Pathname.new(f.sub(%r{\A\./}, '')) }
924
+ else
925
+ Find.find(path) {|f| yield Pathname.new(f) }
926
+ end
927
+ end
928
+ end
929
+
930
+
931
+ class Pathname # * FileUtils *
932
+ # See <tt>FileUtils.mkpath</tt>. Creates a full path, including any
933
+ # intermediate directories that don't yet exist.
934
+ def mkpath
935
+ require 'fileutils'
936
+ FileUtils.mkpath(path)
937
+ nil
938
+ end
939
+
940
+ # See <tt>FileUtils.rm_r</tt>. Deletes a directory and all beneath it.
941
+ def rmtree
942
+ # The name "rmtree" is borrowed from File::Path of Perl.
943
+ # File::Path provides "mkpath" and "rmtree".
944
+ require 'fileutils'
945
+ FileUtils.rm_r(path)
946
+ nil
947
+ end
948
+ end
949
+
950
+
951
+ class Pathname # * mixed *
952
+ # Removes a file or directory, using <tt>File.unlink</tt> or
953
+ # <tt>Dir.unlink</tt> as necessary.
954
+ def unlink()
955
+ begin
956
+ Dir.unlink path
957
+ rescue Errno::ENOTDIR
958
+ File.unlink path
959
+ end
960
+ end
961
+ alias delete unlink
962
+
963
+ # This method is *obsoleted* at 1.8.1. Use #each_line or #each_entry.
964
+ def foreach(*args, &block)
965
+ warn "Pathname#foreach is obsoleted. Use each_line or each_entry."
966
+ if FileTest.directory? path
967
+ # For polymorphism between Dir.foreach and IO.foreach,
968
+ # Pathname#foreach doesn't yield Pathname object.
969
+ Dir.foreach(path, *args, &block)
970
+ else
971
+ IO.foreach(path, *args, &block)
972
+ end
973
+ end
974
+ end
975
+
976
+
977
+
978
+ # _____ _
979
+ # |_ _|__ ___| |_
980
+ # | |/ _ \/ __| __|
981
+ # | | __/\__ \ |_
982
+ # |_|\___||___/\__|
983
+ #
984
+
985
+ if $0 == __FILE__
986
+ require 'test/unit'
987
+
988
+ class PathnameTest < Test::Unit::TestCase # :nodoc:
989
+ def test_initialize
990
+ p1 = Pathname.new('a')
991
+ assert_equal('a', p1.to_s)
992
+ p2 = Pathname.new(p1)
993
+ assert_equal(p1, p2)
994
+ end
995
+
996
+ class AnotherStringLike # :nodoc:
997
+ def initialize(s) @s = s end
998
+ def to_str() @s end
999
+ def ==(other) @s == other end
1000
+ end
1001
+
1002
+ def test_equality
1003
+ obj = Pathname.new("a")
1004
+ str = "a"
1005
+ sym = :a
1006
+ ano = AnotherStringLike.new("a")
1007
+ assert_equal(false, obj == str)
1008
+ assert_equal(false, str == obj)
1009
+ assert_equal(false, obj == ano)
1010
+ assert_equal(false, ano == obj)
1011
+ assert_equal(false, obj == sym)
1012
+ assert_equal(false, sym == obj)
1013
+
1014
+ obj2 = Pathname.new("a")
1015
+ assert_equal(true, obj == obj2)
1016
+ assert_equal(true, obj === obj2)
1017
+ assert_equal(true, obj.eql?(obj2))
1018
+ end
1019
+
1020
+ def test_hashkey
1021
+ h = {}
1022
+ h[Pathname.new("a")] = 1
1023
+ h[Pathname.new("a")] = 2
1024
+ assert_equal(1, h.size)
1025
+ end
1026
+
1027
+ def assert_pathname_cmp(e, s1, s2)
1028
+ p1 = Pathname.new(s1)
1029
+ p2 = Pathname.new(s2)
1030
+ r = p1 <=> p2
1031
+ assert(e == r,
1032
+ "#{p1.inspect} <=> #{p2.inspect}: <#{e}> expected but was <#{r}>")
1033
+ end
1034
+ def test_comparison
1035
+ assert_pathname_cmp( 0, "a", "a")
1036
+ assert_pathname_cmp( 1, "b", "a")
1037
+ assert_pathname_cmp(-1, "a", "b")
1038
+ ss = %w(
1039
+ a
1040
+ a/
1041
+ a/b
1042
+ a.
1043
+ a0
1044
+ )
1045
+ s1 = ss.shift
1046
+ ss.each {|s2|
1047
+ assert_pathname_cmp(-1, s1, s2)
1048
+ s1 = s2
1049
+ }
1050
+ end
1051
+
1052
+ def test_comparison_string
1053
+ assert_equal(nil, Pathname.new("a") <=> "a")
1054
+ assert_equal(nil, "a" <=> Pathname.new("a"))
1055
+ end
1056
+
1057
+ def test_syntactical
1058
+ assert_equal(true, Pathname.new("/").root?)
1059
+ assert_equal(true, Pathname.new("//").root?)
1060
+ assert_equal(true, Pathname.new("///").root?)
1061
+ assert_equal(false, Pathname.new("").root?)
1062
+ assert_equal(false, Pathname.new("a").root?)
1063
+ end
1064
+
1065
+ def test_paths
1066
+ assert_equal('/', Pathname.new('/').to_s)
1067
+ assert_equal('a/', Pathname.new('a/').to_s)
1068
+ assert_equal('/a', Pathname.new('/a').to_s)
1069
+ assert_equal('.', Pathname.new('.').to_s)
1070
+ assert_equal('..', Pathname.new('..').to_s)
1071
+ end
1072
+
1073
+ def test_cleanpath
1074
+
1075
+ assert_equal('/', Pathname.new('/').cleanpath(true).to_s)
1076
+ assert_equal('/', Pathname.new('//').cleanpath(true).to_s)
1077
+ assert_equal('', Pathname.new('').cleanpath(true).to_s)
1078
+
1079
+ assert_equal('.', Pathname.new('.').cleanpath(true).to_s)
1080
+ assert_equal('..', Pathname.new('..').cleanpath(true).to_s)
1081
+ assert_equal('a', Pathname.new('a').cleanpath(true).to_s)
1082
+ assert_equal('/', Pathname.new('/.').cleanpath(true).to_s)
1083
+ assert_equal('/', Pathname.new('/..').cleanpath(true).to_s)
1084
+ assert_equal('/a', Pathname.new('/a').cleanpath(true).to_s)
1085
+ assert_equal('.', Pathname.new('./').cleanpath(true).to_s)
1086
+ assert_equal('..', Pathname.new('../').cleanpath(true).to_s)
1087
+ assert_equal('a/', Pathname.new('a/').cleanpath(true).to_s)
1088
+
1089
+ assert_equal('a/b', Pathname.new('a//b').cleanpath(true).to_s)
1090
+ assert_equal('a/.', Pathname.new('a/.').cleanpath(true).to_s)
1091
+ assert_equal('a/.', Pathname.new('a/./').cleanpath(true).to_s)
1092
+ assert_equal('a/..', Pathname.new('a/../').cleanpath(true).to_s)
1093
+ assert_equal('/a/.', Pathname.new('/a/.').cleanpath(true).to_s)
1094
+ assert_equal('..', Pathname.new('./..').cleanpath(true).to_s)
1095
+ assert_equal('..', Pathname.new('../.').cleanpath(true).to_s)
1096
+ assert_equal('..', Pathname.new('./../').cleanpath(true).to_s)
1097
+ assert_equal('..', Pathname.new('.././').cleanpath(true).to_s)
1098
+ assert_equal('/', Pathname.new('/./..').cleanpath(true).to_s)
1099
+ assert_equal('/', Pathname.new('/../.').cleanpath(true).to_s)
1100
+ assert_equal('/', Pathname.new('/./../').cleanpath(true).to_s)
1101
+ assert_equal('/', Pathname.new('/.././').cleanpath(true).to_s)
1102
+
1103
+ assert_equal('a/b/c', Pathname.new('a/b/c').cleanpath(true).to_s)
1104
+ assert_equal('b/c', Pathname.new('./b/c').cleanpath(true).to_s)
1105
+ assert_equal('a/c', Pathname.new('a/./c').cleanpath(true).to_s)
1106
+ assert_equal('a/b/.', Pathname.new('a/b/.').cleanpath(true).to_s)
1107
+ assert_equal('a/..', Pathname.new('a/../.').cleanpath(true).to_s)
1108
+
1109
+ assert_equal('/a', Pathname.new('/../.././../a').cleanpath(true).to_s)
1110
+ assert_equal('a/b/../../../../c/../d',
1111
+ Pathname.new('a/b/../../../../c/../d').cleanpath(true).to_s)
1112
+ end
1113
+
1114
+ def test_cleanpath_no_symlink
1115
+ assert_equal('/', Pathname.new('/').cleanpath.to_s)
1116
+ assert_equal('/', Pathname.new('//').cleanpath.to_s)
1117
+ assert_equal('', Pathname.new('').cleanpath.to_s)
1118
+
1119
+ assert_equal('.', Pathname.new('.').cleanpath.to_s)
1120
+ assert_equal('..', Pathname.new('..').cleanpath.to_s)
1121
+ assert_equal('a', Pathname.new('a').cleanpath.to_s)
1122
+ assert_equal('/', Pathname.new('/.').cleanpath.to_s)
1123
+ assert_equal('/', Pathname.new('/..').cleanpath.to_s)
1124
+ assert_equal('/a', Pathname.new('/a').cleanpath.to_s)
1125
+ assert_equal('.', Pathname.new('./').cleanpath.to_s)
1126
+ assert_equal('..', Pathname.new('../').cleanpath.to_s)
1127
+ assert_equal('a', Pathname.new('a/').cleanpath.to_s)
1128
+
1129
+ assert_equal('a/b', Pathname.new('a//b').cleanpath.to_s)
1130
+ assert_equal('a', Pathname.new('a/.').cleanpath.to_s)
1131
+ assert_equal('a', Pathname.new('a/./').cleanpath.to_s)
1132
+ assert_equal('.', Pathname.new('a/../').cleanpath.to_s)
1133
+ assert_equal('/a', Pathname.new('/a/.').cleanpath.to_s)
1134
+ assert_equal('..', Pathname.new('./..').cleanpath.to_s)
1135
+ assert_equal('..', Pathname.new('../.').cleanpath.to_s)
1136
+ assert_equal('..', Pathname.new('./../').cleanpath.to_s)
1137
+ assert_equal('..', Pathname.new('.././').cleanpath.to_s)
1138
+ assert_equal('/', Pathname.new('/./..').cleanpath.to_s)
1139
+ assert_equal('/', Pathname.new('/../.').cleanpath.to_s)
1140
+ assert_equal('/', Pathname.new('/./../').cleanpath.to_s)
1141
+ assert_equal('/', Pathname.new('/.././').cleanpath.to_s)
1142
+
1143
+ assert_equal('a/b/c', Pathname.new('a/b/c').cleanpath.to_s)
1144
+ assert_equal('b/c', Pathname.new('./b/c').cleanpath.to_s)
1145
+ assert_equal('a/c', Pathname.new('a/./c').cleanpath.to_s)
1146
+ assert_equal('a/b', Pathname.new('a/b/.').cleanpath.to_s)
1147
+ assert_equal('.', Pathname.new('a/../.').cleanpath.to_s)
1148
+
1149
+ assert_equal('/a', Pathname.new('/../.././../a').cleanpath.to_s)
1150
+ assert_equal('../../d', Pathname.new('a/b/../../../../c/../d').cleanpath.to_s)
1151
+ end
1152
+
1153
+ def test_destructive_update
1154
+ path = Pathname.new("a")
1155
+ path.to_s.replace "b"
1156
+ assert_equal(Pathname.new("a"), path)
1157
+ end
1158
+
1159
+ #def test_null_character
1160
+ # assert_raise(ArgumentError) { Pathname.new("\0") }
1161
+ #end
1162
+
1163
+ def assert_relpath(result, dest, base)
1164
+ assert_equal(Pathname.new(result),
1165
+ Pathname.new(dest).relative_path_from(Pathname.new(base)))
1166
+ end
1167
+
1168
+ def assert_relpath_err(dest, base)
1169
+ assert_raise(ArgumentError) {
1170
+ Pathname.new(dest).relative_path_from(Pathname.new(base))
1171
+ }
1172
+ end
1173
+
1174
+ def test_relative_path_from
1175
+ assert_relpath("../a", "a", "b")
1176
+ assert_relpath("../a", "a", "b/")
1177
+ assert_relpath("../a", "a/", "b")
1178
+ assert_relpath("../a", "a/", "b/")
1179
+ assert_relpath("../a", "/a", "/b")
1180
+ assert_relpath("../a", "/a", "/b/")
1181
+ assert_relpath("../a", "/a/", "/b")
1182
+ assert_relpath("../a", "/a/", "/b/")
1183
+
1184
+ assert_relpath("../b", "a/b", "a/c")
1185
+ assert_relpath("../a", "../a", "../b")
1186
+
1187
+ assert_relpath("a", "a", ".")
1188
+ assert_relpath("..", ".", "a")
1189
+
1190
+ assert_relpath(".", ".", ".")
1191
+ assert_relpath(".", "..", "..")
1192
+ assert_relpath("..", "..", ".")
1193
+
1194
+ assert_relpath("c/d", "/a/b/c/d", "/a/b")
1195
+ assert_relpath("../..", "/a/b", "/a/b/c/d")
1196
+ assert_relpath("../../../../e", "/e", "/a/b/c/d")
1197
+ assert_relpath("../b/c", "a/b/c", "a/d")
1198
+
1199
+ assert_relpath("../a", "/../a", "/b")
1200
+ assert_relpath("../../a", "../a", "b")
1201
+ assert_relpath(".", "/a/../../b", "/b")
1202
+ assert_relpath("..", "a/..", "a")
1203
+ assert_relpath(".", "a/../b", "b")
1204
+
1205
+ assert_relpath("a", "a", "b/..")
1206
+ assert_relpath("b/c", "b/c", "b/..")
1207
+
1208
+ assert_relpath_err("/", ".")
1209
+ assert_relpath_err(".", "/")
1210
+ assert_relpath_err("a", "..")
1211
+ assert_relpath_err(".", "..")
1212
+ end
1213
+
1214
+ def assert_pathname_plus(a, b, c)
1215
+ a = Pathname.new(a)
1216
+ b = Pathname.new(b)
1217
+ c = Pathname.new(c)
1218
+ d = b + c
1219
+ assert(a == d,
1220
+ "#{b.inspect} + #{c.inspect}: #{a.inspect} expected but was #{d.inspect}")
1221
+ end
1222
+
1223
+ def test_plus
1224
+ assert_pathname_plus('a/b', 'a', 'b')
1225
+ assert_pathname_plus('a', 'a', '.')
1226
+ assert_pathname_plus('b', '.', 'b')
1227
+ assert_pathname_plus('.', '.', '.')
1228
+ assert_pathname_plus('/b', 'a', '/b')
1229
+
1230
+ assert_pathname_plus('/', '/', '..')
1231
+ assert_pathname_plus('.', 'a', '..')
1232
+ assert_pathname_plus('a', 'a/b', '..')
1233
+ assert_pathname_plus('../..', '..', '..')
1234
+ assert_pathname_plus('/c', '/', '../c')
1235
+ assert_pathname_plus('c', 'a', '../c')
1236
+ assert_pathname_plus('a/c', 'a/b', '../c')
1237
+ assert_pathname_plus('../../c', '..', '../c')
1238
+ end
1239
+
1240
+ def test_taint
1241
+ obj = Pathname.new("a"); assert_same(obj, obj.taint)
1242
+ obj = Pathname.new("a"); assert_same(obj, obj.untaint)
1243
+
1244
+ assert_equal(false, Pathname.new("a" ) .tainted?)
1245
+ assert_equal(false, Pathname.new("a" ) .to_s.tainted?)
1246
+ assert_equal(true, Pathname.new("a" ).taint .tainted?)
1247
+ assert_equal(true, Pathname.new("a" ).taint.to_s.tainted?)
1248
+ assert_equal(true, Pathname.new("a".taint) .tainted?)
1249
+ assert_equal(true, Pathname.new("a".taint) .to_s.tainted?)
1250
+ assert_equal(true, Pathname.new("a".taint).taint .tainted?)
1251
+ assert_equal(true, Pathname.new("a".taint).taint.to_s.tainted?)
1252
+
1253
+ str = "a"
1254
+ path = Pathname.new(str)
1255
+ str.taint
1256
+ assert_equal(false, path .tainted?)
1257
+ assert_equal(false, path.to_s.tainted?)
1258
+ end
1259
+
1260
+ def test_untaint
1261
+ obj = Pathname.new("a"); assert_same(obj, obj.untaint)
1262
+
1263
+ assert_equal(false, Pathname.new("a").taint.untaint .tainted?)
1264
+ assert_equal(false, Pathname.new("a").taint.untaint.to_s.tainted?)
1265
+
1266
+ str = "a".taint
1267
+ path = Pathname.new(str)
1268
+ str.untaint
1269
+ assert_equal(true, path .tainted?)
1270
+ assert_equal(true, path.to_s.tainted?)
1271
+ end
1272
+
1273
+ def test_freeze
1274
+ obj = Pathname.new("a"); assert_same(obj, obj.freeze)
1275
+
1276
+ assert_equal(false, Pathname.new("a" ) .frozen?)
1277
+ assert_equal(false, Pathname.new("a".freeze) .frozen?)
1278
+ assert_equal(true, Pathname.new("a" ).freeze .frozen?)
1279
+ assert_equal(true, Pathname.new("a".freeze).freeze .frozen?)
1280
+ assert_equal(false, Pathname.new("a" ) .to_s.frozen?)
1281
+ assert_equal(false, Pathname.new("a".freeze) .to_s.frozen?)
1282
+ assert_equal(false, Pathname.new("a" ).freeze.to_s.frozen?)
1283
+ assert_equal(false, Pathname.new("a".freeze).freeze.to_s.frozen?)
1284
+ end
1285
+
1286
+ def test_to_s
1287
+ str = "a"
1288
+ obj = Pathname.new(str)
1289
+ assert_equal(str, obj.to_s)
1290
+ assert_not_same(str, obj.to_s)
1291
+ assert_not_same(obj.to_s, obj.to_s)
1292
+ end
1293
+
1294
+ def test_kernel_open
1295
+ count = 0
1296
+ stat1 = File.stat(__FILE__)
1297
+ result = Kernel.open(Pathname.new(__FILE__)) {|f|
1298
+ stat2 = f.stat
1299
+ assert_equal(stat1.dev, stat2.dev)
1300
+ assert_equal(stat1.ino, stat2.ino)
1301
+ assert_equal(stat1.size, stat2.size)
1302
+ count += 1
1303
+ 2
1304
+ }
1305
+ assert_equal(1, count)
1306
+ assert_equal(2, result)
1307
+ end
1308
+ end
1309
+ end