rio 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +340 -0
- data/ChangeLog +755 -0
- data/README +65 -0
- data/RUNME.1st.rb +75 -0
- data/Rakefile +312 -0
- data/VERSION +1 -0
- data/doc/README_MSWIN32.txt +39 -0
- data/doc/RELEASE_NOTES +130 -0
- data/doc/generators/template/html/rio.rb +895 -0
- data/doc/rdoc/classes/Kernel.html +181 -0
- data/doc/rdoc/classes/Kernel.src/M000183.html +18 -0
- data/doc/rdoc/classes/RIO.html +508 -0
- data/doc/rdoc/classes/RIO.src/M000001.html +18 -0
- data/doc/rdoc/classes/RIO.src/M000002.html +18 -0
- data/doc/rdoc/classes/RIO.src/M000003.html +18 -0
- data/doc/rdoc/classes/RIO/Doc.html +138 -0
- data/doc/rdoc/classes/RIO/Doc/HOWTO.html +1031 -0
- data/doc/rdoc/classes/RIO/Doc/INTRO.html +1116 -0
- data/doc/rdoc/classes/RIO/Doc/MISC.html +443 -0
- data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +325 -0
- data/doc/rdoc/classes/RIO/Rio.html +6333 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000004.html +18 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000005.html +20 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000006.html +27 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000007.html +27 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000008.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000009.html +18 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000010.html +20 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000011.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000012.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000013.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000014.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000015.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000016.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000017.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000018.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000019.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000020.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000021.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000022.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000023.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000024.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000025.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000026.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000027.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000028.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000029.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000030.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000031.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000032.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000033.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000034.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000035.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000036.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000037.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000038.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000039.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000040.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000041.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000042.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000043.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000044.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000045.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000046.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000047.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000048.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000049.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000050.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000051.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000052.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000053.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000054.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000055.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000056.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000057.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000058.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000059.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000060.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000061.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000062.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000063.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000064.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000065.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000066.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000067.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000068.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000069.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000070.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000071.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000072.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000073.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000074.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000075.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000076.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000077.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000078.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000079.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000080.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000081.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000082.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000083.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000084.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000085.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000086.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000087.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000088.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000089.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000090.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000091.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000092.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000093.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000094.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000095.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000096.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000097.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000098.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000099.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000100.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000101.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000102.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000103.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000104.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000105.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000106.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000107.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000108.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000109.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000110.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000111.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000112.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000113.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000114.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000115.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000116.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000117.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000118.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000119.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000120.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000121.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000122.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000123.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000124.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000125.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000126.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000127.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000128.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000129.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000130.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000131.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000132.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000133.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000134.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000135.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000136.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000137.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000138.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000139.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000140.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000141.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000142.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000143.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000144.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000145.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000146.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000147.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000148.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000149.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000150.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000151.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000152.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000153.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000154.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000155.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000156.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000157.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000158.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000159.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000160.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000161.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000162.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000163.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000164.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000165.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000166.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000167.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000168.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000169.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000170.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000171.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000172.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000173.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000174.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000175.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000176.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000177.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000178.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000179.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000180.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000181.html +16 -0
- data/doc/rdoc/classes/RIO/Rio.src/M000182.html +16 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/README.html +215 -0
- data/doc/rdoc/files/lib/rio/constructor_rb.html +142 -0
- data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/doc/MISC_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/basic_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/dir_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/file_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/grande_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/internal_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/methods_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/path_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/stream_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/if/test_rb.html +135 -0
- data/doc/rdoc/files/lib/rio/kernel_rb.html +142 -0
- data/doc/rdoc/files/lib/rio_rb.html +153 -0
- data/doc/rdoc/fr_class_index.html +34 -0
- data/doc/rdoc/fr_file_index.html +44 -0
- data/doc/rdoc/fr_method_index.html +210 -0
- data/doc/rdoc/index.html +24 -0
- data/doc/rdoc/rdoc-style.css +384 -0
- data/doc/rfc1738.txt +1403 -0
- data/doc/rfc959.txt +3933 -0
- data/ex/colx.rb +6 -0
- data/ex/findinruby +19 -0
- data/ex/findruby +11 -0
- data/ex/prompt.rb +25 -0
- data/ex/rgb.txt.gz +0 -0
- data/ex/riocat +35 -0
- data/ex/riogunzip +31 -0
- data/ex/riogzip +24 -0
- data/ex/tolf +11 -0
- data/lib/rio.rb +163 -0
- data/lib/rio/abstract_method.rb +57 -0
- data/lib/rio/argv.rb +57 -0
- data/lib/rio/arrayio.rb +199 -0
- data/lib/rio/arycopy.rb +44 -0
- data/lib/rio/assert.rb +115 -0
- data/lib/rio/base.rb +59 -0
- data/lib/rio/constructor.rb +183 -0
- data/lib/rio/context.rb +117 -0
- data/lib/rio/context/chomp.rb +53 -0
- data/lib/rio/context/closeoneof.rb +50 -0
- data/lib/rio/context/cxx.rb +67 -0
- data/lib/rio/context/dir.rb +92 -0
- data/lib/rio/context/gzip.rb +51 -0
- data/lib/rio/context/methods.rb +196 -0
- data/lib/rio/context/stream.rb +170 -0
- data/lib/rio/cp.rb +305 -0
- data/lib/rio/cxdir.rb +79 -0
- data/lib/rio/dir.rb +145 -0
- data/lib/rio/doc.rb +45 -0
- data/lib/rio/doc/HOWTO.rb +691 -0
- data/lib/rio/doc/INTRO.rb +579 -0
- data/lib/rio/doc/MISC.rb +257 -0
- data/lib/rio/doc/SYNOPSIS.rb +170 -0
- data/lib/rio/entrysel.rb +162 -0
- data/lib/rio/exception.rb +42 -0
- data/lib/rio/exception/copy.rb +98 -0
- data/lib/rio/exception/open.rb +62 -0
- data/lib/rio/exception/state.rb +74 -0
- data/lib/rio/ext.rb +62 -0
- data/lib/rio/ext/csv.rb +261 -0
- data/lib/rio/factory.rb +236 -0
- data/lib/rio/file.rb +77 -0
- data/lib/rio/filter/chomp.rb +61 -0
- data/lib/rio/filter/closeoneof.rb +103 -0
- data/lib/rio/filter/gzip.rb +58 -0
- data/lib/rio/ftp.rb +275 -0
- data/lib/rio/ftp/conn.rb +167 -0
- data/lib/rio/ftp/ioh.rb +88 -0
- data/lib/rio/grande.rb +126 -0
- data/lib/rio/handle.rb +101 -0
- data/lib/rio/if.rb +53 -0
- data/lib/rio/if/basic.rb +64 -0
- data/lib/rio/if/dir.rb +362 -0
- data/lib/rio/if/file.rb +57 -0
- data/lib/rio/if/fileordir.rb +247 -0
- data/lib/rio/if/grande.rb +510 -0
- data/lib/rio/if/internal.rb +53 -0
- data/lib/rio/if/methods.rb +612 -0
- data/lib/rio/if/path.rb +413 -0
- data/lib/rio/if/stream.rb +599 -0
- data/lib/rio/if/test.rb +219 -0
- data/lib/rio/impl/path.rb +82 -0
- data/lib/rio/ioh.rb +137 -0
- data/lib/rio/iomode.rb +96 -0
- data/lib/rio/kernel.rb +47 -0
- data/lib/rio/local.rb +63 -0
- data/lib/rio/match.rb +51 -0
- data/lib/rio/matchrecord.rb +254 -0
- data/lib/rio/open3.rb +69 -0
- data/lib/rio/ops/create.rb +78 -0
- data/lib/rio/ops/dir.rb +302 -0
- data/lib/rio/ops/either.rb +117 -0
- data/lib/rio/ops/file.rb +94 -0
- data/lib/rio/ops/path.rb +292 -0
- data/lib/rio/ops/stream.rb +84 -0
- data/lib/rio/ops/stream/input.rb +237 -0
- data/lib/rio/ops/stream/output.rb +96 -0
- data/lib/rio/ops/stream/read.rb +84 -0
- data/lib/rio/ops/stream/write.rb +58 -0
- data/lib/rio/ops/symlink.rb +70 -0
- data/lib/rio/path.rb +117 -0
- data/lib/rio/path/reset.rb +70 -0
- data/lib/rio/record.rb +59 -0
- data/lib/rio/rectype.rb +86 -0
- data/lib/rio/rl/base.rb +147 -0
- data/lib/rio/rl/builder.rb +166 -0
- data/lib/rio/rl/ioi.rb +66 -0
- data/lib/rio/rl/path.rb +141 -0
- data/lib/rio/rl/uri.rb +118 -0
- data/lib/rio/scheme/aryio.rb +89 -0
- data/lib/rio/scheme/cmdio.rb +74 -0
- data/lib/rio/scheme/fd.rb +65 -0
- data/lib/rio/scheme/ftp.rb +73 -0
- data/lib/rio/scheme/http.rb +81 -0
- data/lib/rio/scheme/path.rb +100 -0
- data/lib/rio/scheme/stderr.rb +56 -0
- data/lib/rio/scheme/stdio.rb +71 -0
- data/lib/rio/scheme/strio.rb +82 -0
- data/lib/rio/scheme/sysio.rb +61 -0
- data/lib/rio/scheme/tcp.rb +74 -0
- data/lib/rio/scheme/tempfile.rb +104 -0
- data/lib/rio/state.rb +209 -0
- data/lib/rio/state/error.rb +73 -0
- data/lib/rio/stream.rb +181 -0
- data/lib/rio/stream/base.rb +50 -0
- data/lib/rio/stream/duplex.rb +76 -0
- data/lib/rio/stream/open.rb +203 -0
- data/lib/rio/symantics.rb +46 -0
- data/lib/rio/to_rio.rb +57 -0
- data/lib/rio/uri/file.rb +145 -0
- data/lib/rio/version.rb +52 -0
- data/setup.rb +1331 -0
- data/test/1.rb +14 -0
- data/test/mswin32.rb +28 -0
- data/test/once.rb +7 -0
- data/test/runtests.rb +12 -0
- data/test/runtests_gem.rb +15 -0
- data/test/tc/abs.rb +349 -0
- data/test/tc/all.rb +42 -0
- data/test/tc/cd1.rb +116 -0
- data/test/tc/clearsel.rb +69 -0
- data/test/tc/closeoncopy.rb +91 -0
- data/test/tc/closeoneof.rb +194 -0
- data/test/tc/copy-from.rb +183 -0
- data/test/tc/copy-to.rb +94 -0
- data/test/tc/copy.rb +72 -0
- data/test/tc/copyarray.rb +191 -0
- data/test/tc/copydest.rb +50 -0
- data/test/tc/copydir.rb +192 -0
- data/test/tc/copydirlines.rb +124 -0
- data/test/tc/copylines.rb +40 -0
- data/test/tc/copynonex.rb +121 -0
- data/test/tc/create.rb +104 -0
- data/test/tc/csv.rb +229 -0
- data/test/tc/dir.rb +79 -0
- data/test/tc/dirautoclose.rb +70 -0
- data/test/tc/dirent.rb +180 -0
- data/test/tc/dirss.rb +84 -0
- data/test/tc/each.rb +111 -0
- data/test/tc/each_break.rb +241 -0
- data/test/tc/edf.rb +82 -0
- data/test/tc/entary.rb +230 -0
- data/test/tc/eq.rb +101 -0
- data/test/tc/expand_path.rb +94 -0
- data/test/tc/ext.rb +115 -0
- data/test/tc/fileno.rb +95 -0
- data/test/tc/getrec.rb +140 -0
- data/test/tc/lineno.rb +197 -0
- data/test/tc/lines.rb +66 -0
- data/test/tc/methods.rb +185 -0
- data/test/tc/misc.rb +473 -0
- data/test/tc/nolines.rb +205 -0
- data/test/tc/noqae.rb +873 -0
- data/test/tc/once.rb +6 -0
- data/test/tc/overload.rb +137 -0
- data/test/tc/pa.rb +159 -0
- data/test/tc/pathop.rb +63 -0
- data/test/tc/paths.rb +147 -0
- data/test/tc/qae.rb +494 -0
- data/test/tc/qae_riovar.rb +500 -0
- data/test/tc/records.rb +69 -0
- data/test/tc/rename.rb +224 -0
- data/test/tc/rename_assign.rb +48 -0
- data/test/tc/sub.rb +49 -0
- data/test/tc/symlink.rb +177 -0
- data/test/tc/symlink0.rb +298 -0
- data/test/tc/symlink1.rb +115 -0
- data/test/tc/testcase.rb +152 -0
- metadata +461 -0
data/lib/rio/arrayio.rb
ADDED
@@ -0,0 +1,199 @@
|
|
1
|
+
#--
|
2
|
+
# ===============================================================================
|
3
|
+
# Copyright (c) 2005, Christopher Kleckner
|
4
|
+
# All rights reserved
|
5
|
+
#
|
6
|
+
# This file is part of the Rio library for ruby.
|
7
|
+
#
|
8
|
+
# Rio is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Rio is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Rio; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# ===============================================================================
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
# To create the documentation for Rio run the command
|
25
|
+
# rake rdoc
|
26
|
+
# from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
|
27
|
+
#
|
28
|
+
# Suggested Reading
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
30
|
+
# * RIO::Doc::INTRO
|
31
|
+
# * RIO::Doc::HOWTO
|
32
|
+
# * RIO::Rio
|
33
|
+
#
|
34
|
+
# <b>Rio is pre-alpha software.
|
35
|
+
# The documented interface and behavior is subject to change without notice.</b>
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
module RIO
|
40
|
+
class NotSupportedException < ArgumentError #:nodoc: all
|
41
|
+
def self.emsg(fname,obj)
|
42
|
+
"#{fname}() is not supported for #{obj.class} objects"
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
class AIOMode #:nodoc: all
|
47
|
+
def initialize(mode_string)
|
48
|
+
@str = mode_string
|
49
|
+
end
|
50
|
+
def to_s() @str end
|
51
|
+
def can_write?
|
52
|
+
@str =~ /^[aw]/ or @str =~ /\+/
|
53
|
+
end
|
54
|
+
def can_read?
|
55
|
+
@str =~ /^r/ or @str =~ /\+/
|
56
|
+
end
|
57
|
+
def appends?
|
58
|
+
@str =~ /^a/
|
59
|
+
end
|
60
|
+
def =~(re)
|
61
|
+
re =~ @str
|
62
|
+
end
|
63
|
+
end
|
64
|
+
class AIOH #:nodoc: all
|
65
|
+
attr_accessor :array,:lineno,:mode,:ln
|
66
|
+
def initialize(a,m)
|
67
|
+
@array = a || []
|
68
|
+
@mode = AIOMode.new(m)
|
69
|
+
@lineno = 0
|
70
|
+
@ln = 0
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class ArrayIO #:nodoc: all
|
75
|
+
def initialize(a=nil,m='r')
|
76
|
+
# p "#{callstr('initialize',a,m)} hnd=#{@hnd.inspect}"
|
77
|
+
raise ArgumentError,"ArrayIO.new() requires an array but got #{a.inspect}" unless a.kind_of?(::Array)
|
78
|
+
a = a.array if a.kind_of?(ArrayIO)
|
79
|
+
@hnd = AIOH.new(a,m)
|
80
|
+
_open(@hnd.mode)
|
81
|
+
end
|
82
|
+
def array() @hnd.array end
|
83
|
+
def array=(a) @hnd.array = a end
|
84
|
+
def lineno() @hnd.lineno end
|
85
|
+
def lineno=(a) @hnd.lineno = a end
|
86
|
+
def to_a() array.dup end
|
87
|
+
|
88
|
+
def _open(m)
|
89
|
+
@hnd.mode = AIOMode.new(m.to_s)
|
90
|
+
@hnd.ln = 0
|
91
|
+
# p m.to_s,@hnd.mode.to_s,@hnd.array
|
92
|
+
@hnd.array.clear if @hnd.mode.to_s =~ /^w/
|
93
|
+
@hnd.ln = @hnd.array.size if @hnd.mode.to_s =~ /^a/
|
94
|
+
end
|
95
|
+
def self.open(a=nil,m='r',&block)
|
96
|
+
rtn = io = self.class.new(a,m)
|
97
|
+
if block_given?
|
98
|
+
rtn = yield(io)
|
99
|
+
io.close
|
100
|
+
end
|
101
|
+
rtn
|
102
|
+
end
|
103
|
+
def fileno() nil end
|
104
|
+
def flush() nil end
|
105
|
+
def fsync() nil end
|
106
|
+
def isatty() false end
|
107
|
+
def tty?() false end
|
108
|
+
def pos() @hnd.ln end
|
109
|
+
def pos=(n) @hnd.ln = n end
|
110
|
+
|
111
|
+
def readchar() raise NotSupportedException,NotSupportedException.emsg('readchar',self) end
|
112
|
+
def read() raise NotSupportedException,NotSupportedException.emsg('read',self) end
|
113
|
+
def getc() raise NotSupportedException,NotSupportedException.emsg('getc',self) end
|
114
|
+
|
115
|
+
def closed?
|
116
|
+
@hnd.ln.nil?
|
117
|
+
end
|
118
|
+
def close_read
|
119
|
+
@hnd.ln = @hnd.lineno = nil
|
120
|
+
end
|
121
|
+
def close_write
|
122
|
+
@hnd.ln = nil
|
123
|
+
end
|
124
|
+
def close
|
125
|
+
close_read
|
126
|
+
close_write
|
127
|
+
end
|
128
|
+
def eof?()
|
129
|
+
raise IOError,"ArrayIO is not open for reading" unless @hnd.mode.can_read?
|
130
|
+
@hnd.ln >= @hnd.array.size
|
131
|
+
end
|
132
|
+
def each_line(sep_string=$/,&block)
|
133
|
+
while line = gets(sep_string)
|
134
|
+
yield(line)
|
135
|
+
end
|
136
|
+
self
|
137
|
+
end
|
138
|
+
alias each each_line
|
139
|
+
def gets(sep_string=$/)
|
140
|
+
raise IOError,"ArrayIO is not open for reading" unless @hnd.mode.can_read?
|
141
|
+
return nil if @hnd.ln >= @hnd.array.size
|
142
|
+
str = nil
|
143
|
+
if sep_string.nil?
|
144
|
+
str = @hnd.array[@hnd.ln...@hnd.array.size].join('')
|
145
|
+
@hnd.lineno += @hnd.array.size - @hnd.ln
|
146
|
+
@hnd.ln = @hnd.array.size
|
147
|
+
else
|
148
|
+
str = @hnd.array[@hnd.ln]
|
149
|
+
@hnd.lineno += 1
|
150
|
+
@hnd.ln += 1
|
151
|
+
end
|
152
|
+
$_ = str
|
153
|
+
end
|
154
|
+
def readline(sep_string=$/)
|
155
|
+
raise EOFError unless str = gets(sep_string)
|
156
|
+
str
|
157
|
+
end
|
158
|
+
|
159
|
+
def readlines(sep_string=$/)
|
160
|
+
ary = []
|
161
|
+
until eof?
|
162
|
+
ary.push(gets(sep_string))
|
163
|
+
end
|
164
|
+
ary
|
165
|
+
end
|
166
|
+
def rewind
|
167
|
+
@hnd.ln = @hnd.lineno = 0
|
168
|
+
end
|
169
|
+
def print(*objs)
|
170
|
+
raise IOError,"ArrayIO is not open for writing" unless @hnd.mode.can_write?
|
171
|
+
if objs.empty?
|
172
|
+
@hnd.array[@hnd.ln] = $_
|
173
|
+
@hnd.ln += 1
|
174
|
+
else
|
175
|
+
for obj in objs
|
176
|
+
@hnd.array[@hnd.ln] = obj.to_s
|
177
|
+
@hnd.ln += 1
|
178
|
+
end
|
179
|
+
end
|
180
|
+
nil
|
181
|
+
end
|
182
|
+
def <<(obj)
|
183
|
+
print(obj.to_s)
|
184
|
+
self
|
185
|
+
end
|
186
|
+
def puts(*objs)
|
187
|
+
for obj in objs
|
188
|
+
print(obj.to_s.chomp + $/)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
def printf(fmt,*args)
|
192
|
+
print(sprintf(fmt,*args))
|
193
|
+
end
|
194
|
+
def callstr(func,*args)
|
195
|
+
self.class.to_s+'['+self.to_s+']'+'.'+func.to_s+'('+args.join(',')+')'
|
196
|
+
end
|
197
|
+
|
198
|
+
end
|
199
|
+
end
|
data/lib/rio/arycopy.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#--
|
2
|
+
# ===============================================================================
|
3
|
+
# Copyright (c) 2005, Christopher Kleckner
|
4
|
+
# All rights reserved
|
5
|
+
#
|
6
|
+
# This file is part of the Rio library for ruby.
|
7
|
+
#
|
8
|
+
# Rio is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Rio is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Rio; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# ===============================================================================
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
# To create the documentation for Rio run the command
|
25
|
+
# rake rdoc
|
26
|
+
# from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
|
27
|
+
#
|
28
|
+
# Suggested Reading
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
30
|
+
# * RIO::Doc::INTRO
|
31
|
+
# * RIO::Doc::HOWTO
|
32
|
+
# * RIO::Rio
|
33
|
+
#
|
34
|
+
# <b>Rio is pre-alpha software.
|
35
|
+
# The documented interface and behavior is subject to change without notice.</b>
|
36
|
+
|
37
|
+
|
38
|
+
module RIO
|
39
|
+
module AryCopy #:nodoc: all
|
40
|
+
def >>(dest)
|
41
|
+
rio(?$) << self >> dest
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/rio/assert.rb
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
#--
|
2
|
+
# ===============================================================================
|
3
|
+
# Copyright (c) 2005, Christopher Kleckner
|
4
|
+
# All rights reserved
|
5
|
+
#
|
6
|
+
# This file is part of the Rio library for ruby.
|
7
|
+
#
|
8
|
+
# Rio is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Rio is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Rio; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# ===============================================================================
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
# To create the documentation for Rio run the command
|
25
|
+
# rake rdoc
|
26
|
+
# from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
|
27
|
+
#
|
28
|
+
# Suggested Reading
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
30
|
+
# * RIO::Doc::INTRO
|
31
|
+
# * RIO::Doc::HOWTO
|
32
|
+
# * RIO::Rio
|
33
|
+
#
|
34
|
+
# <b>Rio is pre-alpha software.
|
35
|
+
# The documented interface and behavior is subject to change without notice.</b>
|
36
|
+
|
37
|
+
|
38
|
+
#!/usr/bin/env ruby
|
39
|
+
|
40
|
+
require 'rio/kernel'
|
41
|
+
module RIO
|
42
|
+
module Assert #:nodoc: all
|
43
|
+
def ok(a,b,msg=nil)
|
44
|
+
puts "PASS" + (msg.nil? ? "" : ": #{msg}")
|
45
|
+
end
|
46
|
+
def nok(a,b,msg=nil)
|
47
|
+
puts "FAIL" + (msg.nil? ? "" : ": #{msg}")
|
48
|
+
puts " exp: #{a.inspect}"
|
49
|
+
puts " was: #{b.inspect}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def assert(a,msg=nil)
|
53
|
+
assert_equal(true,a,msg)
|
54
|
+
end
|
55
|
+
def assert_equal(a,b,msg=nil)
|
56
|
+
if a == b
|
57
|
+
ok(a,b,msg)
|
58
|
+
else
|
59
|
+
nok(a,b,msg)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
def assert_case_equal(a,b,msg=nil)
|
63
|
+
if a == b
|
64
|
+
ok(a,b,msg)
|
65
|
+
else
|
66
|
+
nok(a,b,msg)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
def assert_block(msg=nil)
|
70
|
+
if yield
|
71
|
+
ok(nil,nil,msg)
|
72
|
+
else
|
73
|
+
nok(nil,nil,msg)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def assert_not_equal(a,b,msg=nil)
|
78
|
+
if a != b
|
79
|
+
ok(a,b,msg)
|
80
|
+
else
|
81
|
+
nok(a,b,msg)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
def assert_nil(a,msg=nil)
|
85
|
+
if a.nil?
|
86
|
+
ok(nil,a)
|
87
|
+
else
|
88
|
+
nok(nil,a)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
def assert_same(a,b,msg=nil)
|
92
|
+
if a.equal? b
|
93
|
+
ok(a,b)
|
94
|
+
else
|
95
|
+
nok(a,b)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
def assert_match(a,b,msg=nil)
|
99
|
+
if a =~ b
|
100
|
+
ok(a,b)
|
101
|
+
else
|
102
|
+
nok(a,b)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
def assert_kind_of(a,b,msg=nil)
|
106
|
+
if b.kind_of?(a)
|
107
|
+
ok(a,b.class)
|
108
|
+
else
|
109
|
+
nok(a,b.class)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
def assert_equal_s(a,b,msg=nil) assert_equal(a.to_s,b.to_s,msg) end
|
113
|
+
def assert_equal_a(a,b,msg=nil) assert_equal(a.sort,b.sort,msg) end
|
114
|
+
end
|
115
|
+
end
|
data/lib/rio/base.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#--
|
2
|
+
# ===============================================================================
|
3
|
+
# Copyright (c) 2005, Christopher Kleckner
|
4
|
+
# All rights reserved
|
5
|
+
#
|
6
|
+
# This file is part of the Rio library for ruby.
|
7
|
+
#
|
8
|
+
# Rio is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Rio is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Rio; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# ===============================================================================
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
# To create the documentation for Rio run the command
|
25
|
+
# rake rdoc
|
26
|
+
# from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
|
27
|
+
#
|
28
|
+
# Suggested Reading
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
30
|
+
# * RIO::Doc::INTRO
|
31
|
+
# * RIO::Doc::HOWTO
|
32
|
+
# * RIO::Rio
|
33
|
+
#
|
34
|
+
# <b>Rio is pre-alpha software.
|
35
|
+
# The documented interface and behavior is subject to change without notice.</b>
|
36
|
+
|
37
|
+
|
38
|
+
module RIO
|
39
|
+
class Base < ::Object #:nodoc: all
|
40
|
+
# KIOSYMS = [:gets,:open,:readline,:readlines,
|
41
|
+
# :chop,:chomp!,:chop!,
|
42
|
+
# :to_a,:putc,:puts,:print,:printf,:split,:=~]
|
43
|
+
# @@kernel_cleaned ||= KIOSYMS.each { |sym| undef_method(sym) }
|
44
|
+
KEEPSYM = {
|
45
|
+
'__id__' => true,
|
46
|
+
'__send__' => true,
|
47
|
+
'class' => true,
|
48
|
+
'kind_of?' => true,
|
49
|
+
'instance_of?' => true,
|
50
|
+
'equal?' => true,
|
51
|
+
'respond_to?' => true,
|
52
|
+
'object_id' => true,
|
53
|
+
'dup' => true,
|
54
|
+
'clone' => true,
|
55
|
+
|
56
|
+
}.freeze
|
57
|
+
instance_methods.each { |m| undef_method m unless KEEPSYM[m] }
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,183 @@
|
|
1
|
+
#--
|
2
|
+
# ===============================================================================
|
3
|
+
# Copyright (c) 2005, Christopher Kleckner
|
4
|
+
# All rights reserved
|
5
|
+
#
|
6
|
+
# This file is part of the Rio library for ruby.
|
7
|
+
#
|
8
|
+
# Rio is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Rio is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Rio; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# ===============================================================================
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
# To create the documentation for Rio run the command
|
25
|
+
# rake rdoc
|
26
|
+
# from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
|
27
|
+
#
|
28
|
+
# Suggested Reading
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
30
|
+
# * RIO::Doc::INTRO
|
31
|
+
# * RIO::Doc::HOWTO
|
32
|
+
# * RIO::Rio
|
33
|
+
#
|
34
|
+
# <b>Rio is pre-alpha software.
|
35
|
+
# The documented interface and behavior is subject to change without notice.</b>
|
36
|
+
|
37
|
+
#
|
38
|
+
|
39
|
+
require 'rio'
|
40
|
+
|
41
|
+
module RIO
|
42
|
+
# Rio Constructor
|
43
|
+
#
|
44
|
+
# For purposes of discussion, we divide Rios into two catagories, those that have a path
|
45
|
+
# and those that don't.
|
46
|
+
#
|
47
|
+
# ==== Creating a Rio that has a path
|
48
|
+
#
|
49
|
+
# To create a Rio that has a path the arguments to +rio+ may be:
|
50
|
+
#
|
51
|
+
# * a string representing the entire path. The separator used for Rios is as specified in RFC1738 ('/').
|
52
|
+
# rio('adir/afile')
|
53
|
+
# * a string representing a fully qualified +file+ URL as per RFC1738
|
54
|
+
# rio('file:///atopleveldir/adir/afile')
|
55
|
+
# * a +URI+ object representing a +file+ or generic +URL+
|
56
|
+
# rio(URI('adir/afile'))
|
57
|
+
# * the components of a path as separate arguments
|
58
|
+
# rio('adir','afile')
|
59
|
+
# * the components of a path as an array of separate arguments
|
60
|
+
# rio(%w/adir afile/)
|
61
|
+
# * another Rio
|
62
|
+
# another_rio = rio('adir/afile')
|
63
|
+
# rio(another_rio)
|
64
|
+
# * any object whose +to_s+ method returns one of the above
|
65
|
+
# rio(Pathname.new('apath'))
|
66
|
+
# * any combination of the above either as separate arguments or as elements of an array,
|
67
|
+
# another_rio = rio('dir1/dir2')
|
68
|
+
# auri = URI('dir4/dir5)
|
69
|
+
# rio(another_rio,'dir3',auri,'dir6/dir7')
|
70
|
+
#
|
71
|
+
# ===== Creating a Rio that refers to a web page
|
72
|
+
#
|
73
|
+
# To create a Rio that refers to a web page the arguments to +rio+ may be:
|
74
|
+
#
|
75
|
+
# * a string representing a fully qualified +http+ URL
|
76
|
+
# rio('http://ruby-doc.org/index.html')
|
77
|
+
# * a +URI+ object representing a +http+ +URL+
|
78
|
+
# rio(URI('http://ruby-doc.org/index.html'))
|
79
|
+
# * either of the above with additional path elements
|
80
|
+
# rio('http://www.ruby-doc.org/','core','classes/Object.html')
|
81
|
+
#
|
82
|
+
# ===== Creating a Rio that refers to a file or directory on a FTP server
|
83
|
+
#
|
84
|
+
# To create a Rio that refers to a file on a FTP server the arguments to +rio+ may be:
|
85
|
+
#
|
86
|
+
# * a string representing a fully qualified +ftp+ URL
|
87
|
+
# rio('ftp://user:password@ftp.example.com/afile.tar.gz')
|
88
|
+
# * a +URI+ object representing a +ftp+ +URL+
|
89
|
+
# rio(URI('ftp://ftp.example.com/afile.tar.gz'))
|
90
|
+
# * either of the above with additional path elements
|
91
|
+
# rio('ftp://ftp.gnu.org/pub/gnu','emacs','windows','README')
|
92
|
+
#
|
93
|
+
# ==== Creating Rios that do not have a path
|
94
|
+
#
|
95
|
+
# To create a Rio without a path, the first argument to +rio+ is usually a single
|
96
|
+
# character.
|
97
|
+
#
|
98
|
+
# ===== Creating a Rio that refers to a clone of your programs stdin or stdout.
|
99
|
+
#
|
100
|
+
# <tt>rio(?-)</tt> (mnemonic: '-' is used by some Unix programs to specify stdin or stdout in place of a file)
|
101
|
+
#
|
102
|
+
# Just as a Rio that refers to a file, does not know whether that file will be opened for reading or
|
103
|
+
# writing until an I/O operation is specified, a <tt>stdio:</tt> Rio does not know whether it will connect
|
104
|
+
# to stdin or stdout until an I/O operation is specified.
|
105
|
+
#
|
106
|
+
# ===== Creating a Rio that refers to a clone of your programs stderr.
|
107
|
+
#
|
108
|
+
# <tt>rio(?=)</tt> (mnemonic: '-' refers to fileno 1, so '=' refers to fileno 2)
|
109
|
+
#
|
110
|
+
# ===== Creating a Rio that refers to an arbitrary IO object.
|
111
|
+
#
|
112
|
+
# an_io = ::File.new('afile')
|
113
|
+
# rio(an_io)
|
114
|
+
#
|
115
|
+
# ===== Creating a Rio that refers to a file descriptor
|
116
|
+
#
|
117
|
+
# <tt>rio(?#,fd)</tt> (mnemonic: a file descriptor is a number '#')
|
118
|
+
#
|
119
|
+
# an_io = ::File.new('afile')
|
120
|
+
# fnum = an_io.fileno
|
121
|
+
# rio(?#,fnum)
|
122
|
+
#
|
123
|
+
# ===== Creating a Rio that refers to a StringIO object
|
124
|
+
#
|
125
|
+
# <tt>rio(?")</tt> (mnemonic: '"' surrounds strings)
|
126
|
+
# * create a Rio that refers to a string that it creates
|
127
|
+
# rio(?")
|
128
|
+
# * create a Rio that refers to a string of your choosing
|
129
|
+
# astring = ""
|
130
|
+
# rio(?",astring)
|
131
|
+
#
|
132
|
+
# ===== Creating a Rio that refers to a Tempfile object
|
133
|
+
#
|
134
|
+
# <tt>rio(??)</tt> (mnemonic: '?' you don't know its name)
|
135
|
+
# rio(??)
|
136
|
+
# rio(??,basename='rio',tmpdir=Dir::tmpdir)
|
137
|
+
#
|
138
|
+
# ===== Creating a Rio that refers to an arbitrary TCPSocket
|
139
|
+
#
|
140
|
+
# rio('tcp:',hostname,port)
|
141
|
+
# or
|
142
|
+
# rio('tcp://hostname:port')
|
143
|
+
#
|
144
|
+
# ===== Creating a Rio that runs an external program and connects to its stdin and stdout
|
145
|
+
#
|
146
|
+
# <tt>rio(?-,cmd)</tt> (mnemonic: '-' is used by some Unix programs to specify stdin or stdout in place of a file)
|
147
|
+
#
|
148
|
+
# or
|
149
|
+
#
|
150
|
+
# <tt>rio(?`,cmd)</tt> (mnemonic: '`' (backtick) runs an external program in ruby)
|
151
|
+
#
|
152
|
+
# This is Rio's interface to IO#popen
|
153
|
+
def rio(*args,&block) # :yields: self
|
154
|
+
Rio.rio(*args,&block)
|
155
|
+
end
|
156
|
+
module_function :rio
|
157
|
+
|
158
|
+
# Create a Rio as with RIO#rio which refers to the current working directory
|
159
|
+
# wd = RIO.cwd
|
160
|
+
def cwd(*args,&block) # :yields: self
|
161
|
+
Rio.new.getwd(*args,&block)
|
162
|
+
end
|
163
|
+
module_function :cwd
|
164
|
+
|
165
|
+
# Create a Rio as with RIO#rio which refers to a directory at the root of the file system
|
166
|
+
# tmpdir = RIO.root('tmp') #=> rio('/tmp')
|
167
|
+
def root(*args,&block) # :yields: self
|
168
|
+
Rio.new.rootpath(*args,&block)
|
169
|
+
end
|
170
|
+
module_function :root
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
if $0 == __FILE__
|
175
|
+
eval DATA.read, nil, $0, __LINE__+4
|
176
|
+
end
|
177
|
+
|
178
|
+
__END__
|
179
|
+
|
180
|
+
puts
|
181
|
+
puts("Run the tests that came with the distribution")
|
182
|
+
puts("From the distribution directory use 'test/runtests.rb'")
|
183
|
+
puts
|