rio 0.3.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.
- 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
|