rio 0.4.2 → 0.5.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 (641) hide show
  1. data/.gitignore +21 -0
  2. data/Gemfile +4 -0
  3. data/{COPYING → LICENSE} +3 -0
  4. data/README +20 -27
  5. data/Rakefile +48 -277
  6. data/lib/rio.rb +63 -24
  7. data/lib/rio/.document +5 -0
  8. data/lib/rio/abstract_method.rb +3 -14
  9. data/lib/rio/alturi.rb +507 -0
  10. data/lib/rio/alturi/algorithm.rb +313 -0
  11. data/lib/rio/alturi/cached_fields.rb +68 -0
  12. data/lib/rio/alturi/escape.rb +82 -0
  13. data/lib/rio/alturi/parse.rb +75 -0
  14. data/lib/rio/alturi/path_parts.rb +81 -0
  15. data/lib/rio/alturi/regex.rb +76 -0
  16. data/lib/rio/alturi/uri_parts.rb +512 -0
  17. data/lib/rio/argv.rb +3 -14
  18. data/lib/rio/arraynge.rb +146 -0
  19. data/lib/rio/arycopy.rb +3 -14
  20. data/lib/rio/assert.rb +87 -15
  21. data/lib/rio/base.rb +7 -30
  22. data/lib/rio/callstr.rb +3 -14
  23. data/lib/rio/const.rb +3 -14
  24. data/lib/rio/construct.rb +4 -15
  25. data/lib/rio/constructor.rb +4 -19
  26. data/lib/rio/context.rb +17 -14
  27. data/lib/rio/context/autoclose.rb +3 -14
  28. data/lib/rio/context/binmode.rb +63 -0
  29. data/lib/rio/context/copying.rb +3 -14
  30. data/lib/rio/context/cxx.rb +3 -14
  31. data/lib/rio/context/dir.rb +5 -15
  32. data/lib/rio/context/encoding.rb +84 -0
  33. data/lib/rio/context/gzip.rb +3 -14
  34. data/lib/rio/context/methods.rb +8 -17
  35. data/lib/rio/context/skip.rb +3 -14
  36. data/lib/rio/context/stream.rb +3 -14
  37. data/lib/rio/cp.rb +5 -20
  38. data/lib/rio/cxuri.rb +67 -0
  39. data/lib/rio/dbg/trace_states.rb +18 -0
  40. data/lib/rio/def.rb +3 -14
  41. data/lib/rio/dir.rb +9 -18
  42. data/lib/rio/doc.rb +3 -14
  43. data/lib/rio/doc/EXAMPLES.rb +256 -269
  44. data/lib/rio/doc/HOWTO.rb +685 -707
  45. data/lib/rio/doc/INDEX.rb +261 -282
  46. data/lib/rio/doc/INTRO.rb +1029 -1040
  47. data/lib/rio/doc/OPTIONAL.rb +77 -103
  48. data/lib/rio/doc/SYNOPSIS.rb +122 -143
  49. data/lib/rio/entrysel.rb +3 -14
  50. data/lib/rio/exception.rb +4 -14
  51. data/lib/rio/exception/copy.rb +3 -14
  52. data/lib/rio/exception/notimplemented.rb +3 -14
  53. data/lib/rio/exception/notsupported.rb +3 -14
  54. data/lib/rio/exception/open.rb +3 -14
  55. data/lib/rio/exception/state.rb +3 -14
  56. data/lib/rio/ext.rb +14 -17
  57. data/lib/rio/ext/csv.rb +25 -304
  58. data/lib/rio/ext/csv/csv-legacy.rb +344 -0
  59. data/lib/rio/ext/csv/csv.rb +359 -0
  60. data/lib/rio/ext/csv/filter.rb +209 -0
  61. data/lib/rio/ext/if.rb +3 -14
  62. data/lib/rio/ext/mp3info.rb +3 -14
  63. data/lib/rio/ext/splitlines.rb +3 -14
  64. data/lib/rio/ext/yaml.rb +3 -14
  65. data/lib/rio/ext/yaml/doc.rb +3 -14
  66. data/lib/rio/ext/yaml/tie.rb +3 -14
  67. data/lib/rio/ext/zipfile.rb +3 -14
  68. data/lib/rio/ext/zipfile/fs.rb +3 -14
  69. data/lib/rio/ext/zipfile/rl.rb +3 -14
  70. data/lib/rio/ext/zipfile/rootdir.rb +3 -14
  71. data/lib/rio/ext/zipfile/state.rb +3 -14
  72. data/lib/rio/ext/zipfile/wrap.rb +3 -14
  73. data/lib/rio/factory.rb +96 -213
  74. data/lib/rio/fibpipe.rb +373 -0
  75. data/lib/rio/file.rb +8 -17
  76. data/lib/rio/filter.rb +4 -15
  77. data/lib/rio/filter/closeoneof.rb +3 -14
  78. data/lib/rio/filter/gzip.rb +18 -27
  79. data/lib/rio/fs.rb +172 -0
  80. data/lib/rio/fs/base.rb +3 -14
  81. data/lib/rio/fs/impl.rb +3 -14
  82. data/lib/rio/fs/native.rb +3 -14
  83. data/lib/rio/fs/stream.rb +3 -14
  84. data/lib/rio/fs/url.rb +3 -14
  85. data/lib/rio/ftp/conncache.rb +16 -18
  86. data/lib/rio/ftp/dir.rb +4 -15
  87. data/lib/rio/ftp/fs.rb +62 -42
  88. data/lib/rio/fwd.rb +15 -0
  89. data/lib/rio/grande.rb +4 -15
  90. data/lib/rio/handle.rb +3 -45
  91. data/lib/rio/if.rb +15 -20
  92. data/lib/rio/if/basic.rb +3 -36
  93. data/lib/rio/if/csv.rb +7 -20
  94. data/lib/rio/if/dir.rb +9 -21
  95. data/lib/rio/if/file.rb +6 -19
  96. data/lib/rio/if/fileordir.rb +18 -29
  97. data/lib/rio/if/grande.rb +109 -120
  98. data/lib/rio/if/grande_entry.rb +5 -18
  99. data/lib/rio/if/grande_stream.rb +29 -42
  100. data/lib/rio/if/internal.rb +15 -16
  101. data/lib/rio/if/path.rb +35 -47
  102. data/lib/rio/if/rubyio.rb +35 -47
  103. data/lib/rio/if/string.rb +3 -16
  104. data/lib/rio/if/temp.rb +3 -16
  105. data/lib/rio/if/test.rb +8 -20
  106. data/lib/rio/if/yaml.rb +16 -29
  107. data/lib/rio/ioh.rb +35 -34
  108. data/lib/rio/iomode.rb +3 -14
  109. data/lib/rio/ios/fail.rb +3 -14
  110. data/lib/rio/ios/generic.rb +3 -14
  111. data/lib/rio/ios/mode.rb +3 -14
  112. data/lib/rio/ios/null.rb +3 -14
  113. data/lib/rio/iowrap.rb +3 -14
  114. data/lib/rio/kernel.rb +4 -17
  115. data/lib/rio/local.rb +3 -14
  116. data/lib/rio/match.rb +3 -14
  117. data/lib/rio/matchrecord.rb +8 -17
  118. data/lib/rio/no_warn.rb +3 -14
  119. data/lib/rio/nullio.rb +3 -14
  120. data/lib/rio/open3.rb +3 -16
  121. data/lib/rio/ops.rb +33 -0
  122. data/lib/rio/ops/construct.rb +3 -14
  123. data/lib/rio/ops/create.rb +11 -25
  124. data/lib/rio/ops/dir.rb +17 -24
  125. data/lib/rio/ops/either.rb +28 -31
  126. data/lib/rio/ops/file.rb +29 -26
  127. data/lib/rio/ops/path.rb +65 -34
  128. data/lib/rio/ops/stream.rb +13 -15
  129. data/lib/rio/ops/stream/input.rb +59 -28
  130. data/lib/rio/ops/stream/output.rb +4 -14
  131. data/lib/rio/ops/stream/read.rb +4 -15
  132. data/lib/rio/ops/stream/write.rb +3 -14
  133. data/lib/rio/ops/symlink.rb +6 -15
  134. data/lib/rio/path.rb +10 -17
  135. data/lib/rio/path/reset.rb +3 -14
  136. data/lib/rio/piper.rb +3 -27
  137. data/lib/rio/piper/cp.rb +50 -27
  138. data/lib/rio/prompt.rb +3 -14
  139. data/lib/rio/rectype.rb +8 -16
  140. data/lib/rio/rl/base.rb +12 -25
  141. data/lib/rio/rl/builder.rb +25 -24
  142. data/lib/rio/rl/chmap.rb +3 -16
  143. data/lib/rio/rl/fs2url.rb +5 -16
  144. data/lib/rio/rl/ioi.rb +3 -14
  145. data/lib/rio/rl/path.rb +14 -25
  146. data/lib/rio/rl/pathmethods.rb +3 -14
  147. data/lib/rio/rl/uri.rb +18 -35
  148. data/lib/rio/rl/withpath.rb +36 -53
  149. data/lib/rio/rrl/base.rb +75 -0
  150. data/lib/rio/rrl/builder.rb +122 -0
  151. data/lib/rio/rrl/chmap.rb +53 -0
  152. data/lib/rio/rrl/ioi.rb +78 -0
  153. data/lib/rio/rrl/path.rb +117 -0
  154. data/lib/rio/rrl/withpath.rb +269 -0
  155. data/lib/rio/scheme/aryio.rb +3 -14
  156. data/lib/rio/scheme/cmdio.rb +73 -42
  157. data/lib/rio/scheme/cmdpipe.rb +122 -59
  158. data/lib/rio/scheme/fd.rb +19 -33
  159. data/lib/rio/scheme/ftp.rb +34 -40
  160. data/lib/rio/scheme/http.rb +13 -22
  161. data/lib/rio/scheme/null.rb +6 -17
  162. data/lib/rio/scheme/path.rb +60 -71
  163. data/lib/rio/scheme/stderr.rb +9 -21
  164. data/lib/rio/scheme/stdio.rb +14 -26
  165. data/lib/rio/scheme/strio.rb +37 -38
  166. data/lib/rio/scheme/sysio.rb +20 -32
  167. data/lib/rio/scheme/tcp.rb +3 -14
  168. data/lib/rio/scheme/temp.rb +103 -92
  169. data/lib/rio/state.rb +85 -67
  170. data/lib/rio/state/data.rb +55 -0
  171. data/lib/rio/state/error.rb +7 -27
  172. data/lib/rio/stream.rb +46 -19
  173. data/lib/rio/stream/base.rb +14 -14
  174. data/lib/rio/stream/duplex.rb +64 -26
  175. data/lib/rio/stream/open.rb +9 -19
  176. data/lib/rio/symantics.rb +3 -14
  177. data/lib/rio/tempdir.rb +8 -17
  178. data/lib/rio/to_rio.rb +3 -16
  179. data/lib/rio/to_rio/all.rb +3 -14
  180. data/lib/rio/to_rio/array.rb +3 -14
  181. data/lib/rio/to_rio/io.rb +3 -14
  182. data/lib/rio/to_rio/object.rb +3 -14
  183. data/lib/rio/to_rio/string.rb +3 -14
  184. data/lib/rio/uri/file.rb +98 -153
  185. data/lib/rio/uriref.rb +144 -0
  186. data/lib/rio/util.rb +3 -14
  187. data/lib/rio/version.rb +4 -15
  188. data/misc/clean-heading-comments.rb +39 -0
  189. data/misc/fixdoclinks.rb +36 -0
  190. data/misc/update-copyright.rb +17 -0
  191. data/rio.gemspec +31 -0
  192. data/test/alturi/tc/create.rb +24 -0
  193. data/test/alturi/tc/empty.rb +13 -0
  194. data/test/alturi/tc/encoding.rb +73 -0
  195. data/test/alturi/tc/file_test.rb +335 -0
  196. data/test/alturi/tc/ftp_alturi.rb +147 -0
  197. data/test/alturi/tc/generic_test.rb +335 -0
  198. data/test/alturi/tc/http_test.rb +359 -0
  199. data/test/alturi/tc/path_parts_test.rb +215 -0
  200. data/test/alturi/tc/rfc_test.rb +83 -0
  201. data/test/alturi/tc/uri_parts_authority.rb +129 -0
  202. data/test/alturi/tc/uri_parts_test.rb +473 -0
  203. data/test/alturi/tc/uri_parts_userinfo.rb +140 -0
  204. data/test/alturi/tests.rb +27 -0
  205. data/test/base_test.rb +18 -0
  206. data/test/bin/demo_chdir.rb +60 -0
  207. data/test/bin/elipsis.rb +11 -0
  208. data/test/env.sh +4 -0
  209. data/test/ftp/initftpfiles.rb +1 -0
  210. data/test/ftp/tc/anon_copy_data.rb +31 -0
  211. data/test/ftp/tc/anon_misc.rb +109 -0
  212. data/test/ftp/tc/anon_read.rb +99 -0
  213. data/test/ftp/tc/anon_special.rb +37 -0
  214. data/test/ftp/tc/anon_write.rb +68 -0
  215. data/test/ftp/tc/copy.rb +35 -0
  216. data/test/ftp/tc/empty.rb +16 -0
  217. data/test/ftp/tc/ftp2ftp.rb +42 -0
  218. data/test/ftp/tc/ftp_fs.rb +333 -0
  219. data/test/ftp/testdef.rb +7 -2
  220. data/test/ftp/tests.rb +24 -0
  221. data/test/gem_runtests.rb +1 -1
  222. data/test/http/copy-from-http.rb +0 -1
  223. data/test/http/def.rb +20 -0
  224. data/test/http/tc/copy_from_http.rb +128 -0
  225. data/test/http/tc/empty.rb +14 -0
  226. data/test/http/tc/uri_meta.rb +52 -0
  227. data/test/http/tests.rb +19 -0
  228. data/test/lib/assertions.rb +7 -0
  229. data/test/lib/run_tests.rb +26 -0
  230. data/test/lib/temp_server.rb +7 -4
  231. data/test/methods/test_suite.rb +108 -0
  232. data/test/platform.rb +5 -0
  233. data/test/qpdir.rb +2 -0
  234. data/test/rio/scheme.rb +49 -0
  235. data/test/rio/tc/pathparts.rb +61 -0
  236. data/test/riotest/test_suite.rb +33 -0
  237. data/test/riotest/unit_test.rb +118 -0
  238. data/test/riotest/util.rb +23 -0
  239. data/test/runalltests.rb +1 -1
  240. data/test/runftptests.rb +2 -7
  241. data/test/runhttp.rb +4 -2
  242. data/test/runhttptests.rb +6 -5
  243. data/test/runtests.rb +66 -37
  244. data/test/srv/www/htdocs/riotest/dir/index.html +11 -0
  245. data/test/srv/www/htdocs/riotest/hw.html +8 -0
  246. data/test/srv/www/htdocs/riotest/lines.txt.gz +0 -0
  247. data/test/tc/abs2.rb +358 -0
  248. data/test/tc/all.rb +17 -10
  249. data/test/tc/base2.rb +8 -7
  250. data/test/tc/clearsel.rb +3 -2
  251. data/test/tc/closeoneof.rb +14 -15
  252. data/test/tc/cmdio.rb +193 -0
  253. data/test/tc/cmdpipe.rb +258 -63
  254. data/test/tc/copy.rb +3 -2
  255. data/test/tc/copyarray.rb +0 -4
  256. data/test/tc/copydest.rb +2 -3
  257. data/test/tc/copydir.rb +5 -1
  258. data/test/tc/copydir2.rb +68 -0
  259. data/test/tc/create.rb +4 -9
  260. data/test/tc/csv.rb +38 -119
  261. data/test/tc/csv2.rb +38 -57
  262. data/test/tc/csv_columns.rb +210 -8
  263. data/test/tc/csv_gzip.rb +78 -0
  264. data/test/tc/csv_headers.rb +134 -0
  265. data/test/tc/csvutil.rb +53 -16
  266. data/test/tc/dir.rb +3 -4
  267. data/test/tc/dir_iter.rb +3 -1
  268. data/test/tc/dirent.rb +8 -7
  269. data/test/tc/each.rb +62 -47
  270. data/test/tc/each_break.rb +67 -25
  271. data/test/tc/edf.rb +3 -2
  272. data/test/tc/empty.rb +6 -4
  273. data/test/tc/encoding.rb +30 -0
  274. data/test/tc/entary.rb +6 -5
  275. data/test/tc/eq.rb +2 -2
  276. data/test/tc/expand_path.rb +14 -14
  277. data/test/tc/ext.rb +7 -7
  278. data/test/tc/fileno.rb +3 -2
  279. data/test/tc/files_select.rb +1 -1
  280. data/test/tc/getrec.rb +2 -3
  281. data/test/tc/gzip.rb +5 -3
  282. data/test/tc/likeio.rb +5 -5
  283. data/test/tc/lineno.rb +1 -1
  284. data/test/tc/lines.rb +4 -4
  285. data/test/tc/misc.rb +29 -171
  286. data/test/tc/nolines.rb +4 -2
  287. data/test/tc/noqae.rb +12 -10
  288. data/test/tc/overload.rb +1 -2
  289. data/test/tc/pa.rb +25 -24
  290. data/test/tc/path_parts.rb +54 -20
  291. data/test/tc/paths.rb +3 -2
  292. data/test/tc/piper.rb +32 -31
  293. data/test/tc/programs_util.rb +9 -9
  294. data/test/tc/qae.rb +9 -8
  295. data/test/tc/qae_riovar.rb +9 -8
  296. data/test/tc/records.rb +3 -2
  297. data/test/tc/rename.rb +4 -4
  298. data/test/tc/riorl.rb +19 -19
  299. data/test/tc/rlparts.ans.yml +1161 -0
  300. data/test/tc/splitlines.rb +1 -1
  301. data/test/tc/splitpath.rb +9 -8
  302. data/test/tc/strio.rb +73 -0
  303. data/test/tc/symlink.rb +3 -2
  304. data/test/tc/symlink0.rb +4 -3
  305. data/test/tc/symlink1.rb +4 -3
  306. data/test/tc/temp.rb +40 -26
  307. data/test/tc/tempdir.rb +12 -12
  308. data/test/tc/testcase.rb +45 -31
  309. data/test/tc/tonl.rb +0 -1
  310. data/test/tc/truncate.rb +111 -13
  311. data/test/tc/yaml.rb +1 -1
  312. data/test/test_suite.rb +31 -0
  313. data/test/tests.rb +35 -0
  314. data/test/tsuite.rb +19 -0
  315. data/test/uriref/tc/basic.rb +171 -0
  316. data/test/uriref/tc/build.rb +30 -0
  317. data/test/uriref/tc/empty.rb +13 -0
  318. data/test/uriref/tc/route.rb +72 -0
  319. data/test/uriref/tests.rb +16 -0
  320. metadata +356 -424
  321. data/ChangeLog +0 -3122
  322. data/VERSION +0 -1
  323. data/build_doc.rb +0 -94
  324. data/doc/ANNOUNCE +0 -157
  325. data/doc/RELEASE_NOTES +0 -308
  326. data/doc/RIOIS +0 -215
  327. data/doc/generators/template/html/rio.css +0 -428
  328. data/doc/generators/template/html/rio.rb +0 -523
  329. data/doc/generators/template/html/ugly.rb +0 -132
  330. data/doc/pkg_def.rb +0 -60
  331. data/doc/rdoc/classes/Kernel.html +0 -133
  332. data/doc/rdoc/classes/Kernel.src/M000234.html +0 -18
  333. data/doc/rdoc/classes/RIO.html +0 -625
  334. data/doc/rdoc/classes/RIO.src/M000001.html +0 -18
  335. data/doc/rdoc/classes/RIO.src/M000002.html +0 -18
  336. data/doc/rdoc/classes/RIO.src/M000003.html +0 -18
  337. data/doc/rdoc/classes/RIO/Doc.html +0 -149
  338. data/doc/rdoc/classes/RIO/Doc/EXAMPLES.html +0 -432
  339. data/doc/rdoc/classes/RIO/Doc/HOWTO.html +0 -1084
  340. data/doc/rdoc/classes/RIO/Doc/INDEX.html +0 -368
  341. data/doc/rdoc/classes/RIO/Doc/INTRO.html +0 -1529
  342. data/doc/rdoc/classes/RIO/Doc/OPTIONAL.html +0 -221
  343. data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +0 -336
  344. data/doc/rdoc/classes/RIO/IF.html +0 -165
  345. data/doc/rdoc/classes/RIO/IF/CSV.html +0 -203
  346. data/doc/rdoc/classes/RIO/IF/CSV.src/M000129.html +0 -19
  347. data/doc/rdoc/classes/RIO/IF/CSV.src/M000130.html +0 -16
  348. data/doc/rdoc/classes/RIO/IF/CSV.src/M000131.html +0 -16
  349. data/doc/rdoc/classes/RIO/IF/Dir.html +0 -343
  350. data/doc/rdoc/classes/RIO/IF/Dir.src/M000045.html +0 -16
  351. data/doc/rdoc/classes/RIO/IF/Dir.src/M000046.html +0 -16
  352. data/doc/rdoc/classes/RIO/IF/Dir.src/M000047.html +0 -16
  353. data/doc/rdoc/classes/RIO/IF/Dir.src/M000048.html +0 -16
  354. data/doc/rdoc/classes/RIO/IF/Dir.src/M000049.html +0 -16
  355. data/doc/rdoc/classes/RIO/IF/Dir.src/M000050.html +0 -16
  356. data/doc/rdoc/classes/RIO/IF/Dir.src/M000051.html +0 -16
  357. data/doc/rdoc/classes/RIO/IF/File.html +0 -223
  358. data/doc/rdoc/classes/RIO/IF/File.src/M000216.html +0 -16
  359. data/doc/rdoc/classes/RIO/IF/File.src/M000217.html +0 -16
  360. data/doc/rdoc/classes/RIO/IF/File.src/M000218.html +0 -16
  361. data/doc/rdoc/classes/RIO/IF/File.src/M000219.html +0 -16
  362. data/doc/rdoc/classes/RIO/IF/FileOrDir.html +0 -572
  363. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000117.html +0 -16
  364. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000118.html +0 -16
  365. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000119.html +0 -16
  366. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000120.html +0 -16
  367. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000121.html +0 -16
  368. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000122.html +0 -16
  369. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000123.html +0 -16
  370. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000124.html +0 -16
  371. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000125.html +0 -16
  372. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000126.html +0 -16
  373. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000127.html +0 -16
  374. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000128.html +0 -16
  375. data/doc/rdoc/classes/RIO/IF/Grande.html +0 -1376
  376. data/doc/rdoc/classes/RIO/IF/Grande.src/M000052.html +0 -16
  377. data/doc/rdoc/classes/RIO/IF/Grande.src/M000053.html +0 -16
  378. data/doc/rdoc/classes/RIO/IF/Grande.src/M000054.html +0 -16
  379. data/doc/rdoc/classes/RIO/IF/Grande.src/M000055.html +0 -16
  380. data/doc/rdoc/classes/RIO/IF/Grande.src/M000056.html +0 -16
  381. data/doc/rdoc/classes/RIO/IF/Grande.src/M000057.html +0 -16
  382. data/doc/rdoc/classes/RIO/IF/Grande.src/M000058.html +0 -21
  383. data/doc/rdoc/classes/RIO/IF/Grande.src/M000059.html +0 -16
  384. data/doc/rdoc/classes/RIO/IF/Grande.src/M000060.html +0 -16
  385. data/doc/rdoc/classes/RIO/IF/Grande.src/M000061.html +0 -16
  386. data/doc/rdoc/classes/RIO/IF/Grande.src/M000062.html +0 -16
  387. data/doc/rdoc/classes/RIO/IF/Grande.src/M000063.html +0 -16
  388. data/doc/rdoc/classes/RIO/IF/Grande.src/M000064.html +0 -16
  389. data/doc/rdoc/classes/RIO/IF/Grande.src/M000065.html +0 -21
  390. data/doc/rdoc/classes/RIO/IF/Grande.src/M000066.html +0 -16
  391. data/doc/rdoc/classes/RIO/IF/Grande.src/M000067.html +0 -16
  392. data/doc/rdoc/classes/RIO/IF/Grande.src/M000068.html +0 -16
  393. data/doc/rdoc/classes/RIO/IF/Grande.src/M000069.html +0 -16
  394. data/doc/rdoc/classes/RIO/IF/Grande.src/M000070.html +0 -16
  395. data/doc/rdoc/classes/RIO/IF/GrandeEntry.html +0 -810
  396. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000107.html +0 -16
  397. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000108.html +0 -16
  398. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000109.html +0 -16
  399. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000110.html +0 -16
  400. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000111.html +0 -16
  401. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000112.html +0 -16
  402. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000113.html +0 -16
  403. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000114.html +0 -16
  404. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000115.html +0 -16
  405. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000116.html +0 -16
  406. data/doc/rdoc/classes/RIO/IF/GrandeStream.html +0 -1513
  407. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000071.html +0 -16
  408. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000072.html +0 -16
  409. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000073.html +0 -16
  410. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000074.html +0 -16
  411. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000075.html +0 -16
  412. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000076.html +0 -16
  413. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000077.html +0 -16
  414. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000078.html +0 -16
  415. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000079.html +0 -16
  416. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000080.html +0 -16
  417. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000081.html +0 -16
  418. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000082.html +0 -16
  419. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000083.html +0 -16
  420. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000084.html +0 -16
  421. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000085.html +0 -16
  422. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000086.html +0 -16
  423. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000087.html +0 -19
  424. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000088.html +0 -16
  425. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000089.html +0 -16
  426. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000090.html +0 -16
  427. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000091.html +0 -16
  428. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000092.html +0 -16
  429. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000093.html +0 -16
  430. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000094.html +0 -16
  431. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000095.html +0 -16
  432. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000096.html +0 -16
  433. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000097.html +0 -16
  434. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000098.html +0 -16
  435. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000099.html +0 -16
  436. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000100.html +0 -16
  437. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000101.html +0 -16
  438. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000102.html +0 -16
  439. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000103.html +0 -16
  440. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000104.html +0 -16
  441. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000105.html +0 -16
  442. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000106.html +0 -16
  443. data/doc/rdoc/classes/RIO/IF/Path.html +0 -999
  444. data/doc/rdoc/classes/RIO/IF/Path.src/M000132.html +0 -16
  445. data/doc/rdoc/classes/RIO/IF/Path.src/M000133.html +0 -16
  446. data/doc/rdoc/classes/RIO/IF/Path.src/M000134.html +0 -16
  447. data/doc/rdoc/classes/RIO/IF/Path.src/M000135.html +0 -16
  448. data/doc/rdoc/classes/RIO/IF/Path.src/M000136.html +0 -16
  449. data/doc/rdoc/classes/RIO/IF/Path.src/M000137.html +0 -16
  450. data/doc/rdoc/classes/RIO/IF/Path.src/M000138.html +0 -16
  451. data/doc/rdoc/classes/RIO/IF/Path.src/M000139.html +0 -16
  452. data/doc/rdoc/classes/RIO/IF/Path.src/M000140.html +0 -16
  453. data/doc/rdoc/classes/RIO/IF/Path.src/M000141.html +0 -16
  454. data/doc/rdoc/classes/RIO/IF/Path.src/M000142.html +0 -16
  455. data/doc/rdoc/classes/RIO/IF/Path.src/M000143.html +0 -16
  456. data/doc/rdoc/classes/RIO/IF/Path.src/M000144.html +0 -16
  457. data/doc/rdoc/classes/RIO/IF/Path.src/M000145.html +0 -16
  458. data/doc/rdoc/classes/RIO/IF/Path.src/M000146.html +0 -16
  459. data/doc/rdoc/classes/RIO/IF/Path.src/M000147.html +0 -16
  460. data/doc/rdoc/classes/RIO/IF/Path.src/M000148.html +0 -16
  461. data/doc/rdoc/classes/RIO/IF/Path.src/M000149.html +0 -16
  462. data/doc/rdoc/classes/RIO/IF/Path.src/M000150.html +0 -16
  463. data/doc/rdoc/classes/RIO/IF/Path.src/M000151.html +0 -16
  464. data/doc/rdoc/classes/RIO/IF/Path.src/M000152.html +0 -16
  465. data/doc/rdoc/classes/RIO/IF/Path.src/M000153.html +0 -16
  466. data/doc/rdoc/classes/RIO/IF/Path.src/M000154.html +0 -18
  467. data/doc/rdoc/classes/RIO/IF/Path.src/M000155.html +0 -16
  468. data/doc/rdoc/classes/RIO/IF/Path.src/M000156.html +0 -16
  469. data/doc/rdoc/classes/RIO/IF/Path.src/M000157.html +0 -16
  470. data/doc/rdoc/classes/RIO/IF/Path.src/M000158.html +0 -16
  471. data/doc/rdoc/classes/RIO/IF/Path.src/M000159.html +0 -16
  472. data/doc/rdoc/classes/RIO/IF/Path.src/M000160.html +0 -16
  473. data/doc/rdoc/classes/RIO/IF/Path.src/M000161.html +0 -16
  474. data/doc/rdoc/classes/RIO/IF/Path.src/M000162.html +0 -16
  475. data/doc/rdoc/classes/RIO/IF/Path.src/M000163.html +0 -16
  476. data/doc/rdoc/classes/RIO/IF/RubyIO.html +0 -1416
  477. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000004.html +0 -16
  478. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000005.html +0 -16
  479. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000006.html +0 -16
  480. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000007.html +0 -16
  481. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000008.html +0 -16
  482. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000009.html +0 -16
  483. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000010.html +0 -16
  484. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000011.html +0 -16
  485. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000012.html +0 -16
  486. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000013.html +0 -16
  487. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000014.html +0 -16
  488. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000015.html +0 -16
  489. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000016.html +0 -16
  490. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000017.html +0 -16
  491. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000018.html +0 -16
  492. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000019.html +0 -16
  493. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000020.html +0 -16
  494. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000021.html +0 -16
  495. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000022.html +0 -16
  496. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000023.html +0 -16
  497. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000024.html +0 -16
  498. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000025.html +0 -16
  499. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000026.html +0 -16
  500. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000027.html +0 -16
  501. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000028.html +0 -16
  502. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000029.html +0 -16
  503. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000030.html +0 -16
  504. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000031.html +0 -16
  505. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000032.html +0 -16
  506. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000033.html +0 -16
  507. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000034.html +0 -16
  508. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000035.html +0 -16
  509. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000036.html +0 -16
  510. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000037.html +0 -16
  511. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000038.html +0 -16
  512. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000039.html +0 -16
  513. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000040.html +0 -16
  514. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000041.html +0 -16
  515. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000042.html +0 -16
  516. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000043.html +0 -16
  517. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000044.html +0 -16
  518. data/doc/rdoc/classes/RIO/IF/String.html +0 -203
  519. data/doc/rdoc/classes/RIO/IF/String.src/M000213.html +0 -16
  520. data/doc/rdoc/classes/RIO/IF/String.src/M000214.html +0 -16
  521. data/doc/rdoc/classes/RIO/IF/String.src/M000215.html +0 -16
  522. data/doc/rdoc/classes/RIO/IF/Test.html +0 -990
  523. data/doc/rdoc/classes/RIO/IF/Test.src/M000177.html +0 -16
  524. data/doc/rdoc/classes/RIO/IF/Test.src/M000178.html +0 -16
  525. data/doc/rdoc/classes/RIO/IF/Test.src/M000179.html +0 -16
  526. data/doc/rdoc/classes/RIO/IF/Test.src/M000180.html +0 -16
  527. data/doc/rdoc/classes/RIO/IF/Test.src/M000181.html +0 -16
  528. data/doc/rdoc/classes/RIO/IF/Test.src/M000182.html +0 -16
  529. data/doc/rdoc/classes/RIO/IF/Test.src/M000183.html +0 -16
  530. data/doc/rdoc/classes/RIO/IF/Test.src/M000184.html +0 -16
  531. data/doc/rdoc/classes/RIO/IF/Test.src/M000185.html +0 -16
  532. data/doc/rdoc/classes/RIO/IF/Test.src/M000186.html +0 -16
  533. data/doc/rdoc/classes/RIO/IF/Test.src/M000187.html +0 -16
  534. data/doc/rdoc/classes/RIO/IF/Test.src/M000188.html +0 -16
  535. data/doc/rdoc/classes/RIO/IF/Test.src/M000189.html +0 -16
  536. data/doc/rdoc/classes/RIO/IF/Test.src/M000190.html +0 -16
  537. data/doc/rdoc/classes/RIO/IF/Test.src/M000191.html +0 -16
  538. data/doc/rdoc/classes/RIO/IF/Test.src/M000192.html +0 -16
  539. data/doc/rdoc/classes/RIO/IF/Test.src/M000193.html +0 -16
  540. data/doc/rdoc/classes/RIO/IF/Test.src/M000194.html +0 -16
  541. data/doc/rdoc/classes/RIO/IF/Test.src/M000195.html +0 -16
  542. data/doc/rdoc/classes/RIO/IF/Test.src/M000196.html +0 -16
  543. data/doc/rdoc/classes/RIO/IF/Test.src/M000197.html +0 -16
  544. data/doc/rdoc/classes/RIO/IF/Test.src/M000198.html +0 -16
  545. data/doc/rdoc/classes/RIO/IF/Test.src/M000199.html +0 -16
  546. data/doc/rdoc/classes/RIO/IF/Test.src/M000200.html +0 -16
  547. data/doc/rdoc/classes/RIO/IF/Test.src/M000201.html +0 -16
  548. data/doc/rdoc/classes/RIO/IF/Test.src/M000202.html +0 -16
  549. data/doc/rdoc/classes/RIO/IF/Test.src/M000203.html +0 -16
  550. data/doc/rdoc/classes/RIO/IF/Test.src/M000204.html +0 -16
  551. data/doc/rdoc/classes/RIO/IF/Test.src/M000205.html +0 -16
  552. data/doc/rdoc/classes/RIO/IF/Test.src/M000206.html +0 -16
  553. data/doc/rdoc/classes/RIO/IF/Test.src/M000207.html +0 -16
  554. data/doc/rdoc/classes/RIO/IF/Test.src/M000208.html +0 -16
  555. data/doc/rdoc/classes/RIO/IF/Test.src/M000209.html +0 -16
  556. data/doc/rdoc/classes/RIO/IF/Test.src/M000210.html +0 -16
  557. data/doc/rdoc/classes/RIO/IF/Test.src/M000211.html +0 -16
  558. data/doc/rdoc/classes/RIO/IF/Test.src/M000212.html +0 -16
  559. data/doc/rdoc/classes/RIO/IF/YAML.html +0 -517
  560. data/doc/rdoc/classes/RIO/IF/YAML.src/M000164.html +0 -19
  561. data/doc/rdoc/classes/RIO/IF/YAML.src/M000165.html +0 -16
  562. data/doc/rdoc/classes/RIO/IF/YAML.src/M000166.html +0 -16
  563. data/doc/rdoc/classes/RIO/IF/YAML.src/M000167.html +0 -16
  564. data/doc/rdoc/classes/RIO/IF/YAML.src/M000168.html +0 -16
  565. data/doc/rdoc/classes/RIO/IF/YAML.src/M000169.html +0 -16
  566. data/doc/rdoc/classes/RIO/IF/YAML.src/M000170.html +0 -16
  567. data/doc/rdoc/classes/RIO/IF/YAML.src/M000171.html +0 -16
  568. data/doc/rdoc/classes/RIO/IF/YAML.src/M000172.html +0 -16
  569. data/doc/rdoc/classes/RIO/IF/YAML.src/M000173.html +0 -16
  570. data/doc/rdoc/classes/RIO/IF/YAML.src/M000174.html +0 -16
  571. data/doc/rdoc/classes/RIO/IF/YAML.src/M000175.html +0 -16
  572. data/doc/rdoc/classes/RIO/IF/YAML.src/M000176.html +0 -16
  573. data/doc/rdoc/classes/RIO/Rio.html +0 -508
  574. data/doc/rdoc/classes/RIO/Rio.src/M000220.html +0 -18
  575. data/doc/rdoc/classes/RIO/Rio.src/M000221.html +0 -20
  576. data/doc/rdoc/classes/RIO/Rio.src/M000222.html +0 -27
  577. data/doc/rdoc/classes/RIO/Rio.src/M000223.html +0 -16
  578. data/doc/rdoc/classes/RIO/Rio.src/M000225.html +0 -19
  579. data/doc/rdoc/classes/RIO/Rio.src/M000226.html +0 -20
  580. data/doc/rdoc/classes/RIO/Rio.src/M000227.html +0 -16
  581. data/doc/rdoc/classes/RIO/Rio.src/M000228.html +0 -16
  582. data/doc/rdoc/classes/RIO/Rio.src/M000229.html +0 -16
  583. data/doc/rdoc/classes/RIO/Rio.src/M000230.html +0 -16
  584. data/doc/rdoc/classes/RIO/Rio.src/M000231.html +0 -16
  585. data/doc/rdoc/classes/RIO/Rio.src/M000232.html +0 -16
  586. data/doc/rdoc/classes/RIO/Rio.src/M000233.html +0 -16
  587. data/doc/rdoc/created.rid +0 -1
  588. data/doc/rdoc/files/README.html +0 -232
  589. data/doc/rdoc/files/lib/rio/constructor_rb.html +0 -141
  590. data/doc/rdoc/files/lib/rio/doc/EXAMPLES_rb.html +0 -134
  591. data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +0 -134
  592. data/doc/rdoc/files/lib/rio/doc/INDEX_rb.html +0 -134
  593. data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +0 -134
  594. data/doc/rdoc/files/lib/rio/doc/OPTIONAL_rb.html +0 -134
  595. data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +0 -134
  596. data/doc/rdoc/files/lib/rio/if/basic_rb.html +0 -134
  597. data/doc/rdoc/files/lib/rio/if/csv_rb.html +0 -134
  598. data/doc/rdoc/files/lib/rio/if/dir_rb.html +0 -134
  599. data/doc/rdoc/files/lib/rio/if/file_rb.html +0 -134
  600. data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +0 -134
  601. data/doc/rdoc/files/lib/rio/if/grande_entry_rb.html +0 -134
  602. data/doc/rdoc/files/lib/rio/if/grande_rb.html +0 -141
  603. data/doc/rdoc/files/lib/rio/if/grande_stream_rb.html +0 -134
  604. data/doc/rdoc/files/lib/rio/if/internal_rb.html +0 -134
  605. data/doc/rdoc/files/lib/rio/if/path_rb.html +0 -134
  606. data/doc/rdoc/files/lib/rio/if/rubyio_rb.html +0 -134
  607. data/doc/rdoc/files/lib/rio/if/string_rb.html +0 -134
  608. data/doc/rdoc/files/lib/rio/if/temp_rb.html +0 -134
  609. data/doc/rdoc/files/lib/rio/if/test_rb.html +0 -134
  610. data/doc/rdoc/files/lib/rio/if/yaml_rb.html +0 -134
  611. data/doc/rdoc/files/lib/rio/kernel_rb.html +0 -142
  612. data/doc/rdoc/files/lib/rio_rb.html +0 -153
  613. data/doc/rdoc/fr_class_index.html +0 -49
  614. data/doc/rdoc/fr_file_index.html +0 -51
  615. data/doc/rdoc/fr_method_index.html +0 -260
  616. data/doc/rdoc/index.html +0 -30
  617. data/doc/rdoc/rdoc-style.css +0 -428
  618. data/doc/rfc1738.txt +0 -1403
  619. data/doc/rfc959.txt +0 -3933
  620. data/ex/catcsv.rb +0 -64
  621. data/ex/colx.rb +0 -8
  622. data/ex/findinruby +0 -15
  623. data/ex/findruby +0 -14
  624. data/ex/passwd_report.rb +0 -8
  625. data/ex/prompt.rb +0 -25
  626. data/ex/rgb.txt.gz +0 -0
  627. data/ex/riocat +0 -42
  628. data/ex/riogunzip +0 -31
  629. data/ex/riogzip +0 -24
  630. data/ex/rioprompt.rb +0 -10
  631. data/ex/targz2zip +0 -17
  632. data/ex/tonl +0 -10
  633. data/setup.rb +0 -1360
  634. data/test/ftp/all.rb +0 -9
  635. data/test/ftp/anon_copy_data.rb +0 -36
  636. data/test/ftp/anon_misc.rb +0 -124
  637. data/test/ftp/anon_read.rb +0 -105
  638. data/test/ftp/anon_special.rb +0 -68
  639. data/test/ftp/anon_write.rb +0 -70
  640. data/test/ftp/ftp2ftp.rb +0 -51
  641. data/test/tc/abs.rb +0 -355
@@ -1,1084 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Module: RIO::Doc::HOWTO</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <meta name="revisit-after" content="5 days">
12
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
13
- <script type="text/javascript">
14
- // <![CDATA[
15
-
16
- function popupCode( url ) {
17
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
18
- }
19
-
20
- function toggleCode( id ) {
21
- if ( document.getElementById )
22
- elem = document.getElementById( id );
23
- else if ( document.all )
24
- elem = eval( "document.all." + id );
25
- else
26
- return false;
27
-
28
- elemStyle = elem.style;
29
-
30
- if ( elemStyle.display != "block" ) {
31
- elemStyle.display = "block"
32
- } else {
33
- elemStyle.display = "none"
34
- }
35
-
36
- return true;
37
- }
38
-
39
- // Make codeblocks hidden by default
40
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
41
-
42
- // ]]>
43
- </script>
44
-
45
- </head>
46
- <body>
47
-
48
-
49
-
50
- <div id="classHeader">
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td class="class-mod"><strong>Module</strong></td>
54
- <td class="class-name-in-header">RIO::Doc::HOWTO</td>
55
- <td rowspan="2" class="class-header-space-col"></td>
56
- <td rowspan="2">
57
- <a class="in-url" href="../../../files/lib/rio/doc/HOWTO_rb.html">
58
- lib/rio/doc/HOWTO.rb
59
- </a>
60
- &nbsp;&nbsp;
61
- </td>
62
- </tr>
63
-
64
- </table>
65
- </div>
66
- <!-- banner header -->
67
-
68
- <div id="bodyContent">
69
-
70
-
71
-
72
- <div id="contextContent">
73
-
74
- <div id="description">
75
- <h1>Rio - Ruby I/O Facilitator</h1>
76
- <p>
77
- Rio is a facade for most of the standard ruby classes that deal with I/O;
78
- providing a simple, intuitive, succinct interface to the functionality
79
- provided by IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO, OpenURI
80
- and others. Rio also provides an application level interface which allows
81
- many common I/O idioms to be expressed succinctly.
82
- </p>
83
- <h2><a href="HOWTO.html">HOWTO</a>&#8230;</h2>
84
- <h3>Read a single file</h3>
85
- <pre>
86
- ario = rio('afile')
87
- string = &quot;&quot;
88
- array = []
89
- </pre>
90
- <ul>
91
- <li>Read a file into a string.
92
-
93
- <pre>
94
- # method 1
95
- string = ario.contents
96
- # method 2
97
- ario &gt; string
98
- </pre>
99
- </li>
100
- <li>Append a file onto a string.
101
-
102
- <pre>
103
- # method 1
104
- ario &gt;&gt; string
105
- # method 2
106
- string += ario.contents
107
- </pre>
108
- </li>
109
- <li>Read lines of a file into an array
110
-
111
- <pre>
112
- # method 1
113
- array = ario[]
114
- # method 2
115
- ario &gt; array
116
- # method 3
117
- array = ario.to_a
118
- # method 4
119
- array = ario.readlines
120
- </pre>
121
- </li>
122
- <li>Append lines of a file into an array
123
-
124
- <pre>
125
- # method 1
126
- ario &gt;&gt; array
127
- # method 2
128
- array += ario.lines[]
129
- </pre>
130
- </li>
131
- <li>Read the first 10 lines of a file into an array
132
-
133
- <pre>
134
- # method 1
135
- array = ario[0...10]
136
- # method 2
137
- array = ario.lines[0...10]
138
- # method 3
139
- ario.lines(0...10) &gt; array
140
- </pre>
141
- </li>
142
- <li>Read lines of a file into an array, with each line chomped
143
-
144
- <pre>
145
- # method 1
146
- array = ario.chomp[]
147
- # method 2
148
- array = ario.chomp.lines[]
149
- # method 3
150
- ario.chomp &gt; array
151
- </pre>
152
- </li>
153
- <li>Append the first 10 lines of a file into an array, with each line chomped
154
-
155
- <pre>
156
- # method 1
157
- array += ario.chomp[0...10]
158
- # method 2
159
- array += ario.chomp.lines[0...10]
160
- # method 3
161
- ario.chomp.lines(0...10) &gt;&gt; array
162
- </pre>
163
- </li>
164
- <li>Read all lines starting with &#8216;require&#8217; into an array, with each
165
- line chomped
166
-
167
- <pre>
168
- # method 1
169
- array = ario.chomp[/^\s*require/]
170
- # method 2
171
- array = ario.chomp.lines[/^\s*require/]
172
- # method 3
173
- ario.chomp.lines(/^\s*require/) &gt; array
174
- </pre>
175
- </li>
176
- <li>Read a gzipped file into a string
177
-
178
- <pre>
179
- # method 1
180
- rio('afile.gz').gzip &gt; string
181
- # method 2
182
- string = rio('afile.gz').gzip.contents
183
- </pre>
184
- </li>
185
- <li>Append a gzipped file into a string
186
-
187
- <pre>
188
- # method 1
189
- rio('afile.gz').gzip &gt;&gt; string
190
- # method 2
191
- string += rio('afile.gz').gzip.contents
192
- </pre>
193
- </li>
194
- <li>Iterate through all the lines of a file
195
-
196
- <pre>
197
- # method 1
198
- rio('afile').lines { |line| ... }
199
- # method 2
200
- rio('afile').each { |line| ... }
201
- # method 3
202
- rio('afile').each_line { |line| ... }
203
- </pre>
204
- </li>
205
- <li>Iterate through the lines of a gzipped file
206
-
207
- <pre>
208
- rio('afile.gz').gzip { |line| ... }
209
- </pre>
210
- </li>
211
- <li>Iterate through all non-empty lines of a gzipped file, with each line
212
- chomped
213
-
214
- <pre>
215
- rio('afile.gz').gzip.chomp.skiplines(:empty?) { |line| ... }
216
- </pre>
217
- </li>
218
- <li>Iterate through the first 100 lines of a file
219
-
220
- <pre>
221
- # method 1
222
- rio('afile').lines(0...100) { |line| ... }
223
- </pre>
224
- </li>
225
- <li>Iterate through the first line and all ruby comment lines in a gzipped file
226
-
227
- <pre>
228
- rio('afile.rb.gz').gzip.lines(0,/^\s*#/) { |line| ... }
229
- </pre>
230
- </li>
231
- <li>Iterate through the lines of a ruby file that are neither empty nor
232
- comments, with all lines chomped
233
-
234
- <pre>
235
- rio('afile.rb').chomp.skiplines(/^\s*#/,:empty?) { |line| ... }
236
- </pre>
237
- </li>
238
- <li>Read all the comment lines from a ruby file into an array with all lines
239
- chomped
240
-
241
- <pre>
242
- # method 1
243
- array = rio('afile.rb').chomp[/^\s*#/]
244
- # method 2
245
- array = rio('afile.rb').chomp.lines[/^\s*#/]
246
- # method 3
247
- rio('afile.rb').chomp.lines(/^\s*#/) &gt; array
248
- </pre>
249
- </li>
250
- <li>Read lines of a file into an array, with each line chomped, skipping any
251
- lines longer than 1024 chars
252
-
253
- <pre>
254
- # method 1
255
- array = ario.chomp[proc{ |line| line.length &lt;= 1024}]
256
- # method 2
257
- ario.chomp.lines(proc{ |line| line.length &lt;= 1024}) &gt; array
258
- # method 3
259
- array = ario.chomp.skiplines[proc{ |line| line.length &gt; 1024}]
260
- # method 4
261
- array = ario.chomp.lines(proc{ |line| line.length &lt;= 1024}).to_a
262
- </pre>
263
- </li>
264
- </ul>
265
- <hr size="1"></hr><h3>Write to a single file</h3>
266
- <pre>
267
- ario = rio('afile')
268
- string = &quot;A String\n&quot;
269
- array = [&quot;Line 0\n&quot;,&quot;Line 1\n&quot;]
270
- </pre>
271
- <ul>
272
- <li>Write a string to a file, leaving the Rio open
273
-
274
- <pre>
275
- # method 1
276
- ario.puts(string)
277
- # method 2
278
- ario.print(string)
279
- # method 3
280
- ario.noautoclose &lt; string
281
- </pre>
282
- </li>
283
- <li>Write a string to a file and close the file
284
-
285
- <pre>
286
- # method 1
287
- rio('afile') &lt; string
288
- # method 2
289
- ario.print!(string)
290
- # method 3
291
- ario.print(string).close
292
- </pre>
293
- </li>
294
- <li>Append a string to a file, leaving the Rio open
295
-
296
- <pre>
297
- # method 1
298
- ario.a.puts(string)
299
- # method 2
300
- ario.a.print(string)
301
- # method 3
302
- ario.noautoclose &lt;&lt; string
303
- </pre>
304
- </li>
305
- <li>Append a string to a file and close the file
306
-
307
- <pre>
308
- # method 1
309
- rio('afile') &lt;&lt; string
310
- # method 2
311
- rio('afile').a.print!(string)
312
- # method 3
313
- rio('afile').a.print(string).close
314
- </pre>
315
- </li>
316
- <li>Write an array to a file, leaving the Rio open
317
-
318
- <pre>
319
- # method 1
320
- ario = rio('afile').nocloseoncopy
321
- ario &lt;&lt; array
322
- # method 2
323
- ario.noautoclose &lt; array
324
- </pre>
325
- </li>
326
- <li>Write an array to a file and close the file
327
-
328
- <pre>
329
- # method 1
330
- rio('afile') &lt; array
331
- </pre>
332
- </li>
333
- </ul>
334
- <hr size="1"></hr><h3>Select records</h3>
335
- <pre>
336
- ario = rio('afile')
337
- string = &quot;&quot;
338
- array = []
339
- </pre>
340
- <ul>
341
- <li>Put lines one thru ten and line 100 into an array
342
-
343
- <pre>
344
- # method 1
345
- array = ario[0..9,99]
346
- # method 2
347
- array = ario.lines[0..9,99]
348
- # method 3
349
- ario.lines(0..9,99) &gt; array
350
- </pre>
351
- </li>
352
- <li>Put lines one thru ten,line 100 and lines starting with
353
- &#8216;rio4ruby&#8217; into an array
354
-
355
- <pre>
356
- # method 1
357
- array = ario[0..9,99,/^rio4ruby/]
358
- # method 2
359
- array = ario.lines[0..9,99,/^rio4ruby/]
360
- # method 3
361
- ario.lines(0..9,99,/^rio4ruby/) &gt; array
362
- </pre>
363
- </li>
364
- <li>Put lines that are longer than 128 bytes into an array
365
-
366
- <pre>
367
- # method 1
368
- array = ario[proc{ |l| l.length &gt; 128}]
369
- # method 2
370
- array = ario.lines[proc{ |l| l.length &gt; 128}]
371
- # method 3
372
- array = ario.skiplines[proc{ |l| l.length &lt;= 128}]
373
- # method 4
374
- array = ario.skip.lines[proc{ |l| l.length &lt;= 128}]
375
- </pre>
376
- </li>
377
- <li>Copy all lines that do not start with &#8216;rio4ruby&#8217; into another
378
- file
379
-
380
- <pre>
381
- # method 1
382
- ario.skiplines(/^rio4ruby/) &gt; rio('another_file')
383
- # method 2
384
- ario.lines.skiplines(/^rio4ruby/) &gt; rio('another_file')
385
- # method 3
386
- rio('another_file') &lt; ario.skiplines(/^rio4ruby/)
387
- </pre>
388
- </li>
389
- <li>Copy the first 10 lines and lines starting with &#8216;rio4ruby&#8217;, but
390
- exclude any lines longer than 128 bytes
391
-
392
- <pre>
393
- # method 1
394
- ario.lines(0...10,/^rio4ruby/).skiplines(proc{ |l| l.length &gt; 128}] &gt; rio('another_file')
395
- # method 2
396
- rio('another_file') &lt; ario.lines(0...10,/^rio4ruby/).skiplines(proc{ |l| l.length &gt; 128})
397
- </pre>
398
- </li>
399
- </ul>
400
- <hr size="1"></hr><h3>Select directory entries</h3>
401
- <pre>
402
- ario = rio('adir')
403
- string = &quot;&quot;
404
- array = []
405
- </pre>
406
- <ul>
407
- <li>Put all entries with the extension &#8217;.txt&#8217; into an array
408
-
409
- <pre>
410
- # method 1
411
- array = ario['*.txt']
412
- # method 2
413
- array = ario[/\.txt$/]
414
- # method 3
415
- array = ario.entries['*.txt']
416
- </pre>
417
- </li>
418
- <li>Put all files with the extension &#8217;.txt&#8217; into an array
419
-
420
- <pre>
421
- # method 1
422
- array = ario.files['*.txt']
423
- # method 2
424
- array = ario.files[/\.txt$/]
425
- # method 3
426
- array = ario.files['*.txt']
427
- </pre>
428
- </li>
429
- <li>Put all entries with the extension &#8217;.txt&#8217; into an array,
430
- including those in subdirectories
431
-
432
- <pre>
433
- # method 1
434
- array = ario.all['*.txt']
435
- # method 2
436
- array = ario.all[/\.txt$/]
437
- # method 3
438
- array = ario.all.entries['*.txt']
439
- </pre>
440
- </li>
441
- <li>Put all entries with the extension &#8217;.txt&#8217; into an array,
442
- including those in subdirectories, except those in subdirectories name
443
- &#8217;.svn&#8217;
444
-
445
- <pre>
446
- # method 1
447
- array = ario.norecurse('.svn').all['*.txt']
448
- # method 2
449
- array = ario.norecurse(/^\.svn$/).all[/\.txt$/]
450
- # method 3
451
- array = ario.norecurse('.svn').entries['*.txt']
452
- # method 4
453
- array = ario.entries('*.txt').norecurse('.svn').to_a
454
- # method 5
455
- array = ario.norecurse('.svn')['*.txt']
456
- </pre>
457
- </li>
458
- <li>Put all directories into an array
459
-
460
- <pre>
461
- # method 1
462
- array = ario.dirs[]
463
- # method 2
464
- array = ario.dirs.to_a
465
- </pre>
466
- </li>
467
- <li>Put all directories (recursively) into an array
468
-
469
- <pre>
470
- # method 1
471
- array = ario.all.dirs[]
472
- # method 2
473
- array = ario.all.dirs.to_a
474
- </pre>
475
- </li>
476
- <li>Put all entries (recursively) into an array, but limit the depth of
477
- recursion to 2
478
-
479
- <pre>
480
- # method 1
481
- array = ario.norecurse(3).to_a
482
- </pre>
483
- </li>
484
- <li>Iterate through ruby files in a directory and subdirectories skipping those
485
- in the &#8217;.svn&#8217;, and &#8216;pkg&#8217; directories
486
-
487
- <pre>
488
- # method 1
489
- is_ruby_exe = proc{ |f| f.executable? and f[0][0] =~ /^#!.+ruby/ }
490
- ario.norecurse('.svn','pkg').files('*.rb',is_ruby_exe) { |f| ... }
491
- # method 2
492
- is_ruby_exe = proc{ |f| f.executable? and f.gets =~ /^#!.+ruby/ }
493
- ario.norecurse('.svn','pkg').files('*.rb',is_ruby_exe) { |f| ... }
494
- </pre>
495
- </li>
496
- <li>Put all files excluding those that are symlinks to files in an array
497
-
498
- <pre>
499
- # method 1
500
- array = ario.skipfiles[:symlink?]
501
- # method 2
502
- array = ario.skipfiles(:symlink?).files[]
503
- # method 3
504
- array = ario.skipfiles(:symlink?).to_a
505
- # method 4
506
- array = ario.files.skipfiles[:symlink?]
507
- </pre>
508
- </li>
509
- <li>Put all entries that are not files (or symlinks to files) into an array
510
-
511
- <pre>
512
- # method 1
513
- array = ario.skipfiles[]
514
- # method 2
515
- array = ario.skipfiles.to_a
516
- </pre>
517
- </li>
518
- <li>Put all entries that are symlinks to files into an array
519
-
520
- <pre>
521
- # method 1
522
- array = ario.files[proc{|f| f.file? and f.symlink?}]
523
- # method 2
524
- array = ario.files(proc{|f| f.file? and f.symlink?}).to_a
525
- </pre>
526
- </li>
527
- <li>Put all directories except those named &#8217;.svn&#8217; into an array
528
-
529
- <pre>
530
- # method 1
531
- array = ario.skipdirs['.svn']
532
- # method 2
533
- array = ario.skipdirs[/^\.svn$/]
534
- # method 3
535
- array = ario.skipdirs('.svn').to_a
536
- # method 4
537
- array = ario.skipdirs('.svn').dirs[]
538
- # method 5
539
- array = ario.skipdirs('.svn')[]
540
- </pre>
541
- </li>
542
- </ul>
543
- <hr size="1"></hr><h3>Read and writing files</h3>
544
- <pre>
545
- ario = rio('afile')
546
- string = &quot;&quot;
547
- array = []
548
- </pre>
549
- <ul>
550
- <li>Copy the contents of one file into another file
551
-
552
- <pre>
553
- # method 1
554
- rio('srcfile') &gt; rio('dstfile')
555
- # method 2
556
- rio('dstfile') &lt; rio('srcfile')
557
- # method 3
558
- rip('dstfile').print!(rio('srcfile').contents)
559
- </pre>
560
- </li>
561
- <li>Append the contents of one file to another file
562
-
563
- <pre>
564
- # method 1
565
- rio('srcfile') &gt;&gt; rio('dstfile')
566
- # method 2
567
- rio('dstfile') &lt;&lt; rio('srcfile')
568
- # method 3
569
- rip('dstfile').a.print!(rio('srcfile').contents)
570
- </pre>
571
- </li>
572
- <li>Copy the first 10 lines of one file to another file
573
-
574
- <pre>
575
- # method 1
576
- rio('srcfile').lines(0...10) &gt; rio('dstfile')
577
- # method 2
578
- rio('dstfile') &lt; rio('srcfile').lines(0...10)
579
- # method 3
580
- rio('dstfile') &lt; rio('srcfile').lines[0...10]
581
- </pre>
582
- </li>
583
- <li>Concatenate several files into one
584
-
585
- <pre>
586
- # method 1
587
- rio('dstfile') &lt; [ rio('src1'), rio('src2'), rio('src3') ]
588
- # method 2
589
- rio('dstfile') &lt; rio('src1') &lt;&lt; rio('src2') &lt;&lt; rio('src3')
590
- </pre>
591
- </li>
592
- <li>Copy a web page into a file
593
-
594
- <pre>
595
- # method 1
596
- rio('http://ruby-doc.org/') &gt; rio('afile')
597
- # method 2
598
- rio('afile') &lt; rio('http://ruby-doc.org/')
599
- # method 3
600
- rio('afile').print!(rio('http://ruby-doc.org/').contents)
601
- </pre>
602
- </li>
603
- <li>Append the output of the daytime server running on the localhost to a file
604
-
605
- <pre>
606
- # method 1
607
- rio(&quot;tcp://localhost:daytime&quot;) &gt;&gt; rio('afile')
608
- # method 2
609
- rio(&quot;tcp:&quot;,'localhost','daytime') &gt;&gt; rio('afile')
610
- # method 3
611
- rio('afile') &lt;&lt; rio(&quot;tcp://:daytime&quot;)
612
- # method 4
613
- rio('afile') &lt;&lt; rio(&quot;tcp://:13&quot;)
614
- </pre>
615
- </li>
616
- <li>Copy the first line and all lines containing &#8216;http:&#8217; to a file
617
-
618
- <pre>
619
- # method 1
620
- rio('srcfile').lines(0,/http:/) &gt; rio('dstfile')
621
- # method 2
622
- rio('dstfile') &lt; rio('srcfile').lines(0,/http:/)
623
- # method 3
624
- rio('dstfile') &lt; rio('srcfile').lines[0,/http:/]
625
- # method 4
626
- </pre>
627
- </li>
628
- <li>Create a gzipped copy of a file
629
-
630
- <pre>
631
- # method 1
632
- rio('afile') &gt; rio('afile.gz').gzip
633
- # method 2
634
- rio('afile.gz').gzip &lt; rio('afile')
635
- # method 3
636
- rio('afile.gz').gzip.print!( rio('afile').contents )
637
- </pre>
638
- </li>
639
- <li>Create an ungzipped copy of a gzipped file
640
-
641
- <pre>
642
- # method 1
643
- rio('afile') &lt; rio('afile.gz').gzip
644
- # method 2
645
- rio('afile.gz').gzip &gt; rio('afile')
646
- # method 3
647
- rio('afile').print!( rio('afile.gz').gzip.contents )
648
- </pre>
649
- </li>
650
- <li>Copy the first 100 lines of gzipped file on a webserver into a local file
651
-
652
- <pre>
653
- # method 1
654
- rio('http://aserver/afile.gz').gzip.lines(0...100) &gt; rio('afile')
655
- </pre>
656
- </li>
657
- <li>Create a file composed of a header from another file, the output of the
658
- &#8216;ps&#8217; command, some text and its creation time pulled from the
659
- daytime server running on your localhost
660
-
661
- <pre>
662
- # method 1
663
- rio('out') &lt; [ rio('header'), rio(?-,'ps'), &quot;Created on &quot;, rio('tcp://:daytime') ]
664
- # method 2
665
- rio('out') &lt; rio('header') &lt;&lt; rio(?-,'ps') &lt;&lt; &quot;Created on: &quot; &lt;&lt; rio(&quot;tcp://:daytime&quot;)
666
- </pre>
667
- </li>
668
- </ul>
669
- <hr size="1"></hr><h3>Reading multiple files</h3>
670
- <pre>
671
- ario = rio('adir')
672
- string = &quot;&quot;
673
- array = []
674
- </pre>
675
- <ul>
676
- <li>Count the lines of code in a directory tree of ruby source files
677
-
678
- <pre>
679
- # method 1
680
- cnt = ario.all.files('*.rb').skiplines[/^\s*#/,/^\s*$/].size
681
- # method 2
682
- cnt = ario.all.files('*.rb').skiplines(/^\s*#/,/^\s*$/).inject(0) { |sum,l| sum += 1 }
683
- </pre>
684
- </li>
685
- <li>Concatanate the contents of all .txt files in a directory into an array
686
-
687
- <pre>
688
- # method 1
689
- array = ario.lines.files['*.txt']
690
- # method 2
691
- array = ario.files('*.txt').lines[]
692
- # method 3
693
- ario.files('*.txt').lines &gt; array
694
- </pre>
695
- </li>
696
- <li>Concatanate the first line of all .txt files in a directory into an array
697
-
698
- <pre>
699
- # method 1
700
- array = ario.lines(0).files['*.txt']
701
- # method 2
702
- array = ario.files('*.txt').lines[0]
703
- # method 3
704
- ario.files('*.txt').lines(0) &gt; array
705
- </pre>
706
- </li>
707
- <li>Copy all .txt files (but only their first ten lines) in a directory into
708
- another directiory
709
-
710
- <pre>
711
- # method 1
712
- ario.files('*.txt').lines(0...10) &gt; rio('another_dir')
713
- </pre>
714
- </li>
715
- </ul>
716
- <hr size="1"></hr><h3>Read and write using Standard IO</h3>
717
- <pre>
718
- string = &quot;&quot;
719
- array = []
720
- </pre>
721
- <ul>
722
- <li>Prompt for input and return what was typed
723
-
724
- <pre>
725
- # method 1
726
- ans = rio(?-).chomp.print(&quot;Type Something: &quot;).gets
727
- # method 2
728
- stdio = rio(?-).chomp
729
- ans = stdio.print(&quot;Type Something: &quot;).gets
730
- </pre>
731
- </li>
732
- <li>Create a Rio tied to stdin or stdout, depending on how it is used
733
-
734
- <pre>
735
- stdio = rio(?-)
736
- </pre>
737
- </li>
738
- <li>Create a Rio tied to stderr
739
-
740
- <pre>
741
- stderr = rio(?=)
742
- </pre>
743
- </li>
744
- <li>Write a string to stdout
745
-
746
- <pre>
747
- # method 1
748
- rio(?-).puts(&quot;Hello World&quot;)
749
- # method 2
750
- rio(?-) &lt;&lt; &quot;Hello World\n&quot;
751
- # method 3
752
- rio(?-) &lt; &quot;Hello World\n&quot;
753
- </pre>
754
- </li>
755
- <li>Read a string from stdin with the input chomped
756
-
757
- <pre>
758
- # method 1
759
- ans = rio(?-).chomp.gets
760
- # method 2
761
- stdio = rio(?-).chomp
762
- ans = stdio.gets
763
- </pre>
764
- </li>
765
- <li>Read from stdin until end of file with the result going into a string
766
-
767
- <pre>
768
- # method 1
769
- rio(?-) &gt;&gt; string
770
- # method 2
771
- rio(?-) &gt; string
772
- </pre>
773
- </li>
774
- <li>Read from stdin until end of file with the chomped lines going into an
775
- array
776
-
777
- <pre>
778
- # method 1
779
- rio(?-).chomp &gt;&gt; array
780
- # method 2
781
- rio(?-).chomp &gt; array
782
- </pre>
783
- </li>
784
- <li>Read from stdin until end of file with the result going into a file
785
-
786
- <pre>
787
- # method 1
788
- rio(?-) &gt; rio('afile')
789
- # method 2
790
- rio('afile') &lt; rio(?-)
791
- </pre>
792
- </li>
793
- <li>Read from stdin until end of file with the result appended to a file
794
-
795
- <pre>
796
- # method 1
797
- rio(?-) &gt;&gt; rio('afile')
798
- # method 2
799
- rio('afile') &lt;&lt; rio(?-)
800
- </pre>
801
- </li>
802
- <li>Write a message to stderr
803
-
804
- <pre>
805
- # method 1
806
- rio(?=).puts(&quot;Hello Error&quot;)
807
- # method 2
808
- rio(?=) &lt;&lt; &quot;Hello Error\n&quot;
809
- # method 3
810
- rio(?=) &lt; &quot;Hello Error\n&quot;
811
- </pre>
812
- </li>
813
- <li>Dump a file to stdout
814
-
815
- <pre>
816
- # method 1
817
- rio('afile') &gt; ?-
818
- # method 2
819
- rio('afile') &gt; rio(?-)
820
- # method 3
821
- rio(?-) &lt;&lt; rio('afile')
822
- # method 4
823
- rio('afile') &gt;&gt; ?-
824
- # method 5
825
- rio(?-) &lt; rio('afile')
826
- # method 6
827
- rio(?-).print(rio('afile').contents)
828
- </pre>
829
- </li>
830
- <li>Emulate a simplified unix &#8216;head&#8217; command which reads from stdin
831
- and writes the first 10 lines to stdout
832
-
833
- <pre>
834
- # method 1
835
- rio(?-).lines(0..9) &gt; ?-
836
- </pre>
837
- </li>
838
- </ul>
839
- <hr size="1"></hr><h3>Reading and writing from processes as one might do with popen</h3>
840
- <ul>
841
- <li>Read the output of the &#8216;ps&#8217; command into an array without the
842
- header line or the line representing the &#8216;ps&#8217; command itself
843
-
844
- <pre>
845
- ps = rio(?-,'ps -a').skiplines[0,/ps$/]
846
- </pre>
847
- </li>
848
- <li>Run an external program, copying its input from one location and its output
849
- to another, and make it look very much like a shell command.
850
-
851
- <pre>
852
- infile = rio(?&quot;,&quot;Hello Kitty\n&quot;)
853
- outfile = rio('out.txt')
854
-
855
- # method 1
856
- cat = rio(?-,'cat').w!
857
- cat &lt;infile &gt;outfile
858
-
859
- # method 2
860
- infile | 'cat' | outfile
861
- </pre>
862
- </li>
863
- </ul>
864
- <hr size="1"></hr><h3>Renaming and moving files</h3>
865
- <pre>
866
- string = &quot;&quot;
867
- array = []
868
- </pre>
869
- <ul>
870
- <li>Rename the file &#8216;a&#8217; to &#8216;b&#8217;
871
-
872
- <pre>
873
- # method 1
874
- rio('a').rename('b')
875
- # method 2
876
- rio('a').rename.filename = 'b'
877
- </pre>
878
- </li>
879
- <li>Rename a file and leave the Rio referencing the files old name
880
-
881
- <pre>
882
- ario = rio('a')
883
- # method 1
884
- ario.rename('b')
885
- </pre>
886
- </li>
887
- <li>Rename a file and change the Rio to reference the new file name
888
-
889
- <pre>
890
- ario = rio('a')
891
- # method 1
892
- ario.rename!('b')
893
- </pre>
894
- </li>
895
- <li>Rename the file &#8216;index.htm&#8217; to &#8216;index.html&#8216;
896
-
897
- <pre>
898
- # method 1
899
- rio('index.htm').rename('index.html')
900
- # method 2
901
- rio('index.htm').rename.extname = '.html'
902
- </pre>
903
- </li>
904
- <li>Rename the file &#8216;index.html&#8217; to &#8216;welcome.html&#8216;
905
-
906
- <pre>
907
- # method 1
908
- rio('index.html').rename('welecome.html')
909
- # method 2
910
- rio('index.htm').rename.basename = 'welcome'
911
- </pre>
912
- </li>
913
- <li>Move a file from directory &#8216;src&#8217; to directory &#8216;dst&#8217;
914
-
915
- <pre>
916
- # method 1
917
- rio('src/afile').rename('dst/afile')
918
- # method 2
919
- rio('src/afile').rename.dirname = 'dst'
920
- </pre>
921
- </li>
922
- <li>Change a file to have the extension &#8217;.html&#8217; leaving the rest of
923
- it as is
924
-
925
- <pre>
926
- # method 1
927
- ario.rename.extname = '.html'
928
- </pre>
929
- </li>
930
- <li>Change a files basename to &#8216;rio4ruby&#8217; without changing its
931
- extension
932
-
933
- <pre>
934
- # method 1
935
- ario.rename.basename = 'rio4ruby'
936
- </pre>
937
- </li>
938
- <li>Change a file ending with &#8217;.tar.gz&#8217; to end with
939
- &#8217;.tgz&#8217;
940
-
941
- <pre>
942
- # method 1
943
- ario.rename.ext('.tar.gz').extname = '.tgz'
944
- </pre>
945
- </li>
946
- <li>Change the extension of all files with the extension &#8217;.htm&#8217; in
947
- a directory to have the extension &#8217;.html&#8217;
948
-
949
- <pre>
950
- # method 1
951
- rio('adir').rename.files('*.htm') do |htmfile|
952
- htmlfile.extname = '.html'
953
- end
954
- # method 2
955
- rio('adir').files('*.htm') do |htmfile|
956
- htmlfile.rename.extname = '.html'
957
- end
958
- </pre>
959
- </li>
960
- <li>Change the extension of all files with the extension &#8217;.htm&#8217; in
961
- a directory and its subdirectories to have the extension
962
- &#8217;.html&#8217;
963
-
964
- <pre>
965
- # method 1
966
- rio('adir').rename.all.files('*.htm') do |htmfile|
967
- htmfile.extname = '.html'
968
- end
969
- # method 2
970
- rio('adir').all.files('*.htm') do |htmfile|
971
- htmfile.rename.extname = '.html'
972
- end
973
- </pre>
974
- </li>
975
- <li>Move a file in an arbitrary directory into the current working directory.
976
-
977
- <pre>
978
- # method 1
979
- rio('arb/i/trary/di/rec/tory/afile').rename.dirname = '.'
980
- </pre>
981
- </li>
982
- </ul>
983
- <hr size="1"></hr><h3>Manipulate a Rio&#8217;s path</h3>
984
- <pre>
985
- string = &quot;&quot;
986
- array = []
987
- </pre>
988
- <ul>
989
- <li>Create a Rio with an additional subdirectory appended
990
-
991
- <pre>
992
- ap = rio('adir')
993
- # method 1
994
- ap /= 'subdirectory'
995
- # method 2
996
- ap = ap.join('subdirectory')
997
- # method 3
998
- ap = rio(ap,'subdirectory')
999
- </pre>
1000
- </li>
1001
- <li>Create a Rio from an array of subdirectories
1002
-
1003
- <pre>
1004
- dirs = ['adir','subdir1','subdir2']
1005
- # method 1
1006
- ario = rio(dirs)
1007
- </pre>
1008
- </li>
1009
- <li>Create an array of subdirectories from a Rio
1010
-
1011
- <pre>
1012
- # method 1
1013
- anarray = rio('adir/subdir1/subdir2').split
1014
- </pre>
1015
- </li>
1016
- <li>Append a string to a path
1017
-
1018
- <pre>
1019
- # method 1
1020
- ario = rio('apath') + astring
1021
- # method 2
1022
- ario = rio('apath')
1023
- ario += astring
1024
- </pre>
1025
- </li>
1026
- <li>create a directory &#8216;links&#8217; with a symlink pointing to each .rb
1027
- file in directory &#8216;lib&#8217; (including subdirectories)
1028
-
1029
- <pre>
1030
- lib = rio('lib')
1031
- links = rio('links').delete!.mkdir
1032
- lib.all.files(&quot;*.rb&quot;) do |f|
1033
- f.symlink( f.dirname.sub(/^#{lib}/,links).mkdir )
1034
- end
1035
- </pre>
1036
- </li>
1037
- </ul>
1038
- <hr size="2"></hr><p>
1039
- Suggested Reading
1040
- </p>
1041
- <ul>
1042
- <li><a href="SYNOPSIS.html">RIO::Doc::SYNOPSIS</a>
1043
-
1044
- </li>
1045
- <li><a href="INTRO.html">RIO::Doc::INTRO</a>
1046
-
1047
- </li>
1048
- <li><a href="../Rio.html">RIO::Rio</a>
1049
-
1050
- </li>
1051
- </ul>
1052
-
1053
- </div>
1054
-
1055
-
1056
- </div>
1057
-
1058
-
1059
-
1060
-
1061
- <!-- if includes -->
1062
-
1063
- <div id="section">
1064
-
1065
-
1066
-
1067
-
1068
-
1069
-
1070
-
1071
-
1072
- <!-- if method_list -->
1073
- </div>
1074
-
1075
-
1076
- </div>
1077
-
1078
-
1079
- <div id="validator-badges">
1080
- <p><small>Copyright &copy; 2005,2006,2007,2008 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
1081
- </div>
1082
-
1083
- </body>
1084
- </html>