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/if/test.rb
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
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 Rio
|
|
40
|
+
# Calls FileTest#blockdev?
|
|
41
|
+
# rio('afile').blockdev? => true or false
|
|
42
|
+
# Returns +true+ if the named file is a block device.
|
|
43
|
+
def blockdev?() target.blockdev?() end
|
|
44
|
+
# Calls FileTest#chardev?
|
|
45
|
+
# rio('afile').chardev? => true or false
|
|
46
|
+
# Returns +true+ if the named file is a character device.
|
|
47
|
+
def chardev?() target.chardev? end
|
|
48
|
+
# Calls FileTest#directory?
|
|
49
|
+
# rio('afile').directory? => true or false
|
|
50
|
+
# Returns +true+ if the named file is a directory, +false+ otherwise.
|
|
51
|
+
def directory?() target.directory? end
|
|
52
|
+
def dir?() target.dir? end
|
|
53
|
+
# Calls FileTest#exist?
|
|
54
|
+
# rio('afile').exist?() => true or false
|
|
55
|
+
# Returns +true+ if the named file exists.
|
|
56
|
+
def exist?() target.exist? end
|
|
57
|
+
# Calls FileTest#file?
|
|
58
|
+
# rio('afile').file? => true or false
|
|
59
|
+
# Returns +true+ if the named file exists and is a regular file.
|
|
60
|
+
def file?() target.file? end
|
|
61
|
+
# Calls FileTest#socket?
|
|
62
|
+
# rio('afile').socket? => true or false
|
|
63
|
+
# Returns +true+ if the named file is a socket.
|
|
64
|
+
def socket?() target.socket? end
|
|
65
|
+
# Calls FileTest#symlink?
|
|
66
|
+
# rio('afile').symlink? => true or false
|
|
67
|
+
# Returns +true+ if the named file is a symbolic link.
|
|
68
|
+
def symlink?() target.symlink? end
|
|
69
|
+
|
|
70
|
+
# Returns +true+ if a Rio is not closed?
|
|
71
|
+
def open?() target.open?() end
|
|
72
|
+
|
|
73
|
+
# Calls IO#closed?
|
|
74
|
+
# ario.closed? => true or false
|
|
75
|
+
# Returns +true+ if _ario_ is completely closed (for duplex streams,
|
|
76
|
+
# both reader and writer), +false+ otherwise.
|
|
77
|
+
def closed?() target.closed?() end
|
|
78
|
+
|
|
79
|
+
# Calls File#fnmatch?
|
|
80
|
+
#
|
|
81
|
+
# Returns true if path matches against pattern
|
|
82
|
+
def fnmatch?(*args) target.fnmatch?(*args) end
|
|
83
|
+
|
|
84
|
+
# Calls File#ftype
|
|
85
|
+
#
|
|
86
|
+
# Identifies the type of the named file; the return string is one of 'file�, 'directory�,
|
|
87
|
+
# 'characterSpecial�, 'blockSpecial�, 'fifo�, 'link�, 'socket�, or 'unknown�.
|
|
88
|
+
def ftype(*args) target.ftype(*args) end
|
|
89
|
+
|
|
90
|
+
# Calls File#stat
|
|
91
|
+
def stat(*args) target.stat(*args) end
|
|
92
|
+
|
|
93
|
+
# Calls File#lstat
|
|
94
|
+
def lstat(*args) target.lstat(*args) end
|
|
95
|
+
|
|
96
|
+
# Calls FileTest#pipe?
|
|
97
|
+
# rio('afile').pipe? => true or false
|
|
98
|
+
# Returns +true+ if the named file is a pipe.
|
|
99
|
+
def pipe?() target.pipe?() end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
# Calls File#atime
|
|
103
|
+
#
|
|
104
|
+
# Returns the last access time (a Time object) for the file system object referenced
|
|
105
|
+
def atime(*args) target.atime(*args) end
|
|
106
|
+
|
|
107
|
+
# Calls File#ctime
|
|
108
|
+
#
|
|
109
|
+
# Returns the change time for Rios that reference file system object (that is,
|
|
110
|
+
# the time directory information about the file was changed, not the file itself).
|
|
111
|
+
def ctime(*args) target.ctime(*args) end
|
|
112
|
+
|
|
113
|
+
# Calls File#mtime
|
|
114
|
+
#
|
|
115
|
+
# Returns the modification time for Rio that reference file system objects
|
|
116
|
+
def mtime(*args) target.mtime(*args) end
|
|
117
|
+
|
|
118
|
+
# Calls File#executable?
|
|
119
|
+
#
|
|
120
|
+
# Returns true if the file is executable by the effective user id of this process.
|
|
121
|
+
def executable?(*args) target.executable?(*args) end
|
|
122
|
+
|
|
123
|
+
# Calls File#executable_real?
|
|
124
|
+
#
|
|
125
|
+
# Returns true if the file is executable by the real user id of this process.
|
|
126
|
+
def executable_real?(*args) target.executable_real?(*args) end
|
|
127
|
+
|
|
128
|
+
# Calls FileTest#readable?
|
|
129
|
+
# rio('afile').readable? => true or false
|
|
130
|
+
# Returns +true+ if the named file is readable by the effective user
|
|
131
|
+
# id of this process.
|
|
132
|
+
def readable?(*args) target.readable?(*args) end
|
|
133
|
+
|
|
134
|
+
# Calls FileTest#readable_real?
|
|
135
|
+
# rio('afile').readable_real? => true or false
|
|
136
|
+
# Returns +true+ if the named file is readable by the real user id of
|
|
137
|
+
# this process.
|
|
138
|
+
def readable_real?(*args) target.readable_real?(*args) end
|
|
139
|
+
|
|
140
|
+
# Calls FileTest#writable?
|
|
141
|
+
# rio('afile').writable? => true or false
|
|
142
|
+
# Returns +true+ if the named file is writable by the effective user
|
|
143
|
+
# id of this process.
|
|
144
|
+
def writable?(*args) target.writable?(*args) end
|
|
145
|
+
|
|
146
|
+
# Calls FileTest#writable_real?
|
|
147
|
+
# rio('afile').writable_real? => true or false
|
|
148
|
+
# Returns +true+ if the named file is writable by the real user id of
|
|
149
|
+
# this process.
|
|
150
|
+
def writable_real?(*args) target.writable_real?(*args) end
|
|
151
|
+
|
|
152
|
+
# Calls FileTest#sticky?
|
|
153
|
+
# rio('afile').sticky? => true or false
|
|
154
|
+
# Returns +true+ if the named file is a has the sticky bit set.
|
|
155
|
+
def sticky?(*args) target.sticky?(*args) end
|
|
156
|
+
|
|
157
|
+
# Calls FileTest#owned?
|
|
158
|
+
# rio('afile').owned? => true or false
|
|
159
|
+
# Returns +true+ if the named file exists and the effective used id
|
|
160
|
+
# of the calling process is the owner of the file.
|
|
161
|
+
def owned?(*args) target.owned?(*args) end
|
|
162
|
+
|
|
163
|
+
# Calls FileTest#grpowned?
|
|
164
|
+
# rio('afile').grpowned? => true or false
|
|
165
|
+
# Returns +true+ if the named file exists and the effective group id
|
|
166
|
+
# of the calling process is the owner of the file. Returns +false+ on
|
|
167
|
+
# Windows.
|
|
168
|
+
def grpowned?(*args) target.grpowned?(*args) end
|
|
169
|
+
|
|
170
|
+
# Calls FileTest#setgid?
|
|
171
|
+
# rio('afile').setgid? => true or false
|
|
172
|
+
# Returns +true+ if the named file is a has the setgid bit set.
|
|
173
|
+
def setgid?(*args) target.setgid?(*args) end
|
|
174
|
+
|
|
175
|
+
# Calls FileTest#setuid?
|
|
176
|
+
# rio('afile').setuid? => true or false
|
|
177
|
+
# Returns +true+ if the named file is a has the setuid bit set.
|
|
178
|
+
def setuid?(*args) target.setuid?(*args) end
|
|
179
|
+
|
|
180
|
+
# Calls FileTest#size
|
|
181
|
+
# rio('afile').size => integer
|
|
182
|
+
# Returns the size of _afile_.
|
|
183
|
+
# To get the length of the Rio's string representation use Rio#length
|
|
184
|
+
def size(*args) target.size(*args) end
|
|
185
|
+
|
|
186
|
+
# Calls FileTest#size?
|
|
187
|
+
# rio('afile').size? => integer or nil
|
|
188
|
+
# Returns +nil+ if _afile_ doesn't exist or has zero size, the
|
|
189
|
+
# size of the file otherwise.
|
|
190
|
+
def size?(*args) target.size?(*args) end
|
|
191
|
+
|
|
192
|
+
# Calls FileTest#zero?
|
|
193
|
+
# rio('afile').zero? => true or false
|
|
194
|
+
# Returns +true+ if the named file exists and has a zero size.
|
|
195
|
+
def zero?(*args) target.zero?(*args) end
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
# Returns true if the rio represents and absolute path or URI. Alias for Rio#absolute?
|
|
199
|
+
#
|
|
200
|
+
# rio('/tmp').abs? # >> true
|
|
201
|
+
# rio('.ssh').abs? # >> false
|
|
202
|
+
# rio('file:///tmp').abs? # >> true
|
|
203
|
+
# rio('http://www.ruby-doc.org/').abs? # >> true
|
|
204
|
+
#
|
|
205
|
+
def abs?() target.abs?() end
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
# Returns true if the Rio represents and absolute path or URI. Calls URI#absolute?
|
|
209
|
+
#
|
|
210
|
+
# rio('/tmp').absolute? # >> true
|
|
211
|
+
# rio('.ssh').absolute? # >> false
|
|
212
|
+
# rio('file:///tmp').absolute? # >> true
|
|
213
|
+
# rio('http://www.ruby-doc.org/').absolute? # >> true
|
|
214
|
+
#
|
|
215
|
+
def absolute?() target.absolute?() end
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
end
|
|
219
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
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 Impl #:nodoc: all
|
|
40
|
+
module U
|
|
41
|
+
def self.fnmatch?(s,globstr,*flags) ::File.fnmatch?(globstr,s,*flags) end
|
|
42
|
+
def self.expand_path(s,*args) ::File.expand_path(s,*args) end
|
|
43
|
+
def self.extname(s,*args) ::File.extname(s,*args) end
|
|
44
|
+
|
|
45
|
+
def self.basename(s,*args) ::File.basename(s,*args) end
|
|
46
|
+
def self.dirname(s,*args) ::File.dirname(s,*args) end
|
|
47
|
+
|
|
48
|
+
def self.ftype(s,*args) ::File.ftype(s,*args) end
|
|
49
|
+
def self.symlink(s,d) ::File.symlink(s.to_s,d.to_s) end
|
|
50
|
+
|
|
51
|
+
def self.stat(s,*args) ::File.stat(s,*args) end
|
|
52
|
+
|
|
53
|
+
def self.atime(s,*args) ::File.atime(s,*args) end
|
|
54
|
+
def self.ctime(s,*args) ::File.ctime(s,*args) end
|
|
55
|
+
def self.mtime(s,*args) ::File.mtime(s,*args) end
|
|
56
|
+
|
|
57
|
+
def self.blockdev?(s,*args) ::FileTest.blockdev?(s,*args) end
|
|
58
|
+
def self.chardev?(s,*args) ::FileTest.chardev?(s,*args) end
|
|
59
|
+
def self.directory?(s,*args) ::FileTest.directory?(s,*args) end
|
|
60
|
+
def self.dir?(s,*args) ::FileTest.directory?(s,*args) end
|
|
61
|
+
def self.executable?(s,*args) ::FileTest.executable?(s,*args) end
|
|
62
|
+
def self.executable_real?(s,*args) ::FileTest.executable_real?(s,*args) end
|
|
63
|
+
def self.exist?(s,*args) ::FileTest.exist?(s,*args) end
|
|
64
|
+
def self.file?(s,*args) ::FileTest.file?(s,*args) end
|
|
65
|
+
def self.grpowned?(s,*args) ::FileTest.grpowned?(s,*args) end
|
|
66
|
+
def self.owned?(s,*args) ::FileTest.owned?(s,*args) end
|
|
67
|
+
def self.pipe?(s,*args) ::FileTest.pipe?(s,*args) end
|
|
68
|
+
def self.readable?(s,*args) ::FileTest.readable?(s,*args) end
|
|
69
|
+
def self.readable_real?(s,*args) ::FileTest.readable_real?(s,*args) end
|
|
70
|
+
def self.setgid?(s,*args) ::FileTest.setgid?(s,*args) end
|
|
71
|
+
def self.setuid?(s,*args) ::FileTest.setuid?(s,*args) end
|
|
72
|
+
def self.size(s,*args) ::FileTest.size(s,*args) end
|
|
73
|
+
def self.size?(s,*args) ::FileTest.size?(s,*args) end
|
|
74
|
+
def self.socket?(s,*args) ::FileTest.socket?(s,*args) end
|
|
75
|
+
def self.sticky?(s,*args) ::FileTest.sticky?(s,*args) end
|
|
76
|
+
def self.symlink?(s,*args) ::FileTest.symlink?(s,*args) end
|
|
77
|
+
def self.writable?(s,*args) ::FileTest.writable?(s,*args) end
|
|
78
|
+
def self.writable_real?(s,*args) ::FileTest.writable_real?(s,*args) end
|
|
79
|
+
def self.zero?(s,*args) ::FileTest.zero?(s,*args) end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
data/lib/rio/ioh.rb
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
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
|
+
#require 'fileutils'
|
|
39
|
+
|
|
40
|
+
module RIO
|
|
41
|
+
module IOH #:nodoc: all
|
|
42
|
+
class Base
|
|
43
|
+
attr :ios
|
|
44
|
+
def initialize(ios,*args)
|
|
45
|
+
@ios = ios
|
|
46
|
+
end
|
|
47
|
+
def initialize_copy(*args)
|
|
48
|
+
#p callstr('ioh:initialize_copy',*args)
|
|
49
|
+
super
|
|
50
|
+
@ios = @ios.clone unless @ios.nil?
|
|
51
|
+
end
|
|
52
|
+
def callstr(func,*args)
|
|
53
|
+
self.class.to_s+'['+self.to_s+']'+'.'+func.to_s+'('+args.join(',')+')'
|
|
54
|
+
end
|
|
55
|
+
def handle() @ios end
|
|
56
|
+
def open?() not closed? end
|
|
57
|
+
end
|
|
58
|
+
class Stream < Base
|
|
59
|
+
attr_reader :iostack
|
|
60
|
+
def initialize(iosp,*args)
|
|
61
|
+
super
|
|
62
|
+
@iostack = [@ios]
|
|
63
|
+
end
|
|
64
|
+
def initialize_copy(*args)
|
|
65
|
+
#p callstr('ioh_stream:initialize_copy',*args)
|
|
66
|
+
super
|
|
67
|
+
@iostack = @iostack.map { |io| io.nil? || io.equal?(@ios) ? io : io.clone }
|
|
68
|
+
end
|
|
69
|
+
def copy_blksize()
|
|
70
|
+
if @ios.respond_to? :stat
|
|
71
|
+
sz = @ios.stat.blksize
|
|
72
|
+
sz = nil if sz.nil? || sz == 0
|
|
73
|
+
end
|
|
74
|
+
sz || 512
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def handle() @iostack[-1] end
|
|
78
|
+
def close() handle.close unless self.closed? end
|
|
79
|
+
def closed?() handle.nil? or handle.closed? end
|
|
80
|
+
def eof?() closed? or handle.eof? end
|
|
81
|
+
def copy_stream(dst)
|
|
82
|
+
#p callstr('copy_stream',dst)
|
|
83
|
+
blksize = _stream_blksize(handle,dst)
|
|
84
|
+
until handle.eof?
|
|
85
|
+
dst.print(handle.read(blksize))
|
|
86
|
+
end
|
|
87
|
+
self
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
extend Forwardable
|
|
91
|
+
def_instance_delegators(:handle,:binmode,:stat,:rewind,
|
|
92
|
+
:each,:each_byte,:each_line,:gets,:getc,
|
|
93
|
+
:read,:readlines,:readline,:sysread,
|
|
94
|
+
:<<,:print,:printf,:puts,:putc,:write,:syswrite,
|
|
95
|
+
:pos,:pos=,:lineno,
|
|
96
|
+
:fileno,
|
|
97
|
+
:close_read,:close_write,
|
|
98
|
+
:fsync,:sync,:sync=,:fcntl,:ioctl)
|
|
99
|
+
def method_missing(sym,*args,&block)
|
|
100
|
+
#p callstr('method_missing',sym,*args)
|
|
101
|
+
handle.__send__(sym,*args,&block)
|
|
102
|
+
end
|
|
103
|
+
DEFAULT_BLKSIZE = 1024
|
|
104
|
+
def _stream_blksize(*streams)
|
|
105
|
+
sizes = []
|
|
106
|
+
streams.each do |s|
|
|
107
|
+
next unless s.kind_of?(::IO)
|
|
108
|
+
next unless s.respond_to?(:stat)
|
|
109
|
+
size = _stat_blksize(s.stat)
|
|
110
|
+
sizes << size if size
|
|
111
|
+
end
|
|
112
|
+
sizes.min || DEFAULT_BLKSIZE
|
|
113
|
+
end
|
|
114
|
+
def _stat_blksize(st)
|
|
115
|
+
s = st.blksize
|
|
116
|
+
return nil unless s
|
|
117
|
+
return nil if s == 0
|
|
118
|
+
s
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
class Dir < Base
|
|
122
|
+
def close
|
|
123
|
+
#p "#{callstr('close')} ios=#{@ios}"
|
|
124
|
+
unless @ios.nil?
|
|
125
|
+
@ios.close
|
|
126
|
+
@ios = nil
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
def closed?() @ios.nil? end
|
|
130
|
+
extend Forwardable
|
|
131
|
+
def_instance_delegators(:handle,
|
|
132
|
+
:each,:read,
|
|
133
|
+
:pos,:pos=,:tell,:seek,:rewind)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
__END__
|
data/lib/rio/iomode.rb
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
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/abstract_method'
|
|
40
|
+
|
|
41
|
+
module RIO
|
|
42
|
+
module Mode #:nodoc: all
|
|
43
|
+
class Base
|
|
44
|
+
attr_reader :mode
|
|
45
|
+
protected :mode
|
|
46
|
+
|
|
47
|
+
def initialize(arg)
|
|
48
|
+
if arg.kind_of? self.class
|
|
49
|
+
copy(arg)
|
|
50
|
+
else
|
|
51
|
+
@mode = arg
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def copy(other)
|
|
56
|
+
@mode = other.mode
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def to_s() @mode.to_s end
|
|
60
|
+
|
|
61
|
+
abstract_method :primarily_read?, :primarily_write?, :allows_both?
|
|
62
|
+
|
|
63
|
+
def read_only?()
|
|
64
|
+
allows_read? and !allows_write?
|
|
65
|
+
end
|
|
66
|
+
def write_only?()
|
|
67
|
+
!allows_read? and allows_read?
|
|
68
|
+
end
|
|
69
|
+
def allows_read?()
|
|
70
|
+
primarily_read? or allows_both?
|
|
71
|
+
end
|
|
72
|
+
def allows_write?()
|
|
73
|
+
primarily_write? or allows_both?
|
|
74
|
+
end
|
|
75
|
+
extend Forwardable
|
|
76
|
+
def_instance_delegators(:@mode,:=~,:==,:===)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
module Mode
|
|
80
|
+
module StrMethods
|
|
81
|
+
def primarily_read?() @mode[0,1] == 'r' end
|
|
82
|
+
def primarily_write?() @mode[0,1] == 'w' or primarily_append? end
|
|
83
|
+
def primarily_append?() @mode[0,1] == 'a' end
|
|
84
|
+
def allows_both?()
|
|
85
|
+
@mode[1,1] == '+'
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
class Str < Base
|
|
89
|
+
include StrMethods
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
module Mode
|
|
93
|
+
class Int < Base
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|