facets 1.4.0 → 1.4.1

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