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
|
@@ -0,0 +1,166 @@
|
|
|
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 'uri'
|
|
39
|
+
require 'rio/local'
|
|
40
|
+
require 'rio/rl/base'
|
|
41
|
+
require 'stringio'
|
|
42
|
+
|
|
43
|
+
module RIO
|
|
44
|
+
module RL
|
|
45
|
+
class Builder
|
|
46
|
+
|
|
47
|
+
def self.canon(a)
|
|
48
|
+
#puts "canon: #{a.inspect}"
|
|
49
|
+
case a[0]
|
|
50
|
+
when ::String
|
|
51
|
+
case a[0]
|
|
52
|
+
when /^[a-z][a-z]+:/
|
|
53
|
+
a[0] = 'rio:'+a[0] unless a[0] =~ /^rio:/
|
|
54
|
+
a
|
|
55
|
+
when %r|^/|
|
|
56
|
+
a[0] = 'rio:file://'+a[0]
|
|
57
|
+
a
|
|
58
|
+
else
|
|
59
|
+
a[0] = 'rio:path:'+a[0]
|
|
60
|
+
a
|
|
61
|
+
end
|
|
62
|
+
when RIO::Rio
|
|
63
|
+
a[0] = a[0].to_rl
|
|
64
|
+
canon(a)
|
|
65
|
+
when RL::Base
|
|
66
|
+
a
|
|
67
|
+
when ::URI
|
|
68
|
+
a
|
|
69
|
+
when ?? , ?= , ?_ , ?",?[,?#,?`
|
|
70
|
+
a[0] = 'rio:'+CHMAP[a[0]]+':'
|
|
71
|
+
a
|
|
72
|
+
when ?-
|
|
73
|
+
a[0] = ( a.size == 1 ? 'rio:'+CHMAP[a[0]]+':' : 'rio:cmdio:' )
|
|
74
|
+
a
|
|
75
|
+
when ?$
|
|
76
|
+
a[0] = 'rio:strio:'
|
|
77
|
+
a
|
|
78
|
+
when ::IO
|
|
79
|
+
a.unshift('rio:sysio:')
|
|
80
|
+
a
|
|
81
|
+
when ::StringIO
|
|
82
|
+
a.unshift('rio:strio:')
|
|
83
|
+
a
|
|
84
|
+
else
|
|
85
|
+
a[0] = a[0].to_s
|
|
86
|
+
canon(a)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def self.build(*a)
|
|
92
|
+
#puts "build: #{a.inspect}"
|
|
93
|
+
a.flatten!
|
|
94
|
+
case a[0]
|
|
95
|
+
when ::String
|
|
96
|
+
case a[0]
|
|
97
|
+
when /^[a-z][a-z]+:/
|
|
98
|
+
a[0] = 'rio:'+a[0] unless a[0] =~ /^rio:/
|
|
99
|
+
when %r|^/|
|
|
100
|
+
a[0] = 'file://'+a[0]
|
|
101
|
+
return Factory.instance.riorl_class('file').new(*a)
|
|
102
|
+
else
|
|
103
|
+
return Factory.instance.riorl_class('path').new(*a)
|
|
104
|
+
end
|
|
105
|
+
when RIO::Rio
|
|
106
|
+
a[0] = a[0].to_rl
|
|
107
|
+
when RL::Base
|
|
108
|
+
#p 'heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
|
|
109
|
+
a0 = a.shift
|
|
110
|
+
return a0.class.new(a0.uri.dup,*a)
|
|
111
|
+
when ::URI
|
|
112
|
+
a0 = a.shift
|
|
113
|
+
cl = Factory.instance.riorl_class(a0.scheme)
|
|
114
|
+
o = cl.new(a0,*a) unless cl.nil?
|
|
115
|
+
return o
|
|
116
|
+
when ?? , ?= , ?_ , ?",?[,?#,?`
|
|
117
|
+
a[0] = 'rio:'+CHMAP[a[0]]+':'
|
|
118
|
+
when ?-
|
|
119
|
+
a[0] = ( a.size == 1 ? 'rio:'+CHMAP[a[0]]+':' : 'rio:cmdio:' )
|
|
120
|
+
when ?$
|
|
121
|
+
a[0] = 'rio:strio:'
|
|
122
|
+
when ::IO
|
|
123
|
+
a.unshift('rio:sysio:')
|
|
124
|
+
when ::StringIO
|
|
125
|
+
a.unshift('rio:strio:')
|
|
126
|
+
else
|
|
127
|
+
a[0] = a[0].to_s
|
|
128
|
+
return build(*a)
|
|
129
|
+
end
|
|
130
|
+
a0 = a.shift
|
|
131
|
+
sch = Base.subscheme(a0)
|
|
132
|
+
cl = Factory.instance.riorl_class(sch)
|
|
133
|
+
cl.parse(a0,*a) unless cl.nil?
|
|
134
|
+
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def self.build0(*args)
|
|
139
|
+
#p "build(#{args.inspect})"
|
|
140
|
+
|
|
141
|
+
# aryio is a special case -- must not flatten
|
|
142
|
+
if args[0] == 'rio:aryio'
|
|
143
|
+
args.shift
|
|
144
|
+
ary = args[0] unless args.empty?
|
|
145
|
+
require 'rio/scheme/aryio'
|
|
146
|
+
return RIO::AryIO::RL.new(ary)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
args = canon(args.flatten)
|
|
150
|
+
a0 = args.shift
|
|
151
|
+
case a0
|
|
152
|
+
when RL::Base
|
|
153
|
+
a0.class.new(a0.uri.dup,*args)
|
|
154
|
+
when ::URI
|
|
155
|
+
cl = Factory.instance.riorl_class(a0.scheme)
|
|
156
|
+
cl.new(a0,*args) unless cl.nil?
|
|
157
|
+
else
|
|
158
|
+
sch = Base.subscheme(a0)
|
|
159
|
+
cl = Factory.instance.riorl_class(sch)
|
|
160
|
+
cl.parse(a0,*args) unless cl.nil?
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
data/lib/rio/rl/ioi.rb
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
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 'rio/rl/base'
|
|
39
|
+
|
|
40
|
+
module RIO
|
|
41
|
+
module RL
|
|
42
|
+
class IOIBase < Base
|
|
43
|
+
RESET_STATE = 'Stream::Open'
|
|
44
|
+
def scheme() self.class.const_get(:RIOSCHEME) end
|
|
45
|
+
def opaque() '' end
|
|
46
|
+
def self.splitrl(s) nil end
|
|
47
|
+
def path() self.class.const_get(:RIOPATH) end
|
|
48
|
+
def fspath() nil end
|
|
49
|
+
def to_s() url() end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
module RL
|
|
53
|
+
class SysIOBase < IOIBase
|
|
54
|
+
attr_reader :ios
|
|
55
|
+
attr_writer :ios
|
|
56
|
+
protected(:ios=)
|
|
57
|
+
def initialize(ios=nil)
|
|
58
|
+
@ios = ios
|
|
59
|
+
end
|
|
60
|
+
def open(*args)
|
|
61
|
+
@ios
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
data/lib/rio/rl/path.rb
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
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 'rio/rl/uri'
|
|
39
|
+
module RIO
|
|
40
|
+
module RL
|
|
41
|
+
class PathBase < Base
|
|
42
|
+
RESET_STATE = 'Path::Reset'
|
|
43
|
+
|
|
44
|
+
RIOSCHEME = 'path'
|
|
45
|
+
|
|
46
|
+
def initialize(pth,*args)
|
|
47
|
+
@host = nil
|
|
48
|
+
case pth
|
|
49
|
+
when ::URI
|
|
50
|
+
@uri = pth.dup
|
|
51
|
+
@uri.path = '/' if pth.absolute? and pth.path == ''
|
|
52
|
+
@pth = @uri.path
|
|
53
|
+
when %r|^file://(localhost)?(/.*)?$|
|
|
54
|
+
@host = $1
|
|
55
|
+
@pth = $2 || '/'
|
|
56
|
+
else
|
|
57
|
+
@pth = pth
|
|
58
|
+
@uri= nil
|
|
59
|
+
end
|
|
60
|
+
self.join(*args) unless args.empty?
|
|
61
|
+
@wd = RL.fs2url(::Dir.getwd)+'/'
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def parse_url(str)
|
|
65
|
+
::URI.parse(::URI.escape(str,ESCAPE))
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def initialize_copy(*args)
|
|
69
|
+
super
|
|
70
|
+
@uri = nil
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def init_paths()
|
|
74
|
+
@uri = nil
|
|
75
|
+
end
|
|
76
|
+
def path=(pt)
|
|
77
|
+
@uri = nil
|
|
78
|
+
@pth = pt
|
|
79
|
+
end
|
|
80
|
+
def join(*args)
|
|
81
|
+
return self if args.empty?
|
|
82
|
+
sa = args.map(&:to_s).map { |s| ::URI.escape(s,ESCAPE) }
|
|
83
|
+
sa.unshift(@pth) unless @pth.empty?
|
|
84
|
+
@uri = nil
|
|
85
|
+
@pth = sa.join('/').squeeze('/')
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def uri()
|
|
89
|
+
@uri ||= (absolute? ? ::URI::FILE.new('file',nil,@host,nil,nil,@pth,nil,nil,nil) : ::URI.parse(@pth))
|
|
90
|
+
end
|
|
91
|
+
def url()
|
|
92
|
+
if uri and uri.scheme
|
|
93
|
+
self.uri.to_s
|
|
94
|
+
else
|
|
95
|
+
self.scheme+SUBSEPAR+self.opaque
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
def to_s() RL.url2fs(@pth) end
|
|
99
|
+
|
|
100
|
+
def self.splitrl(s)
|
|
101
|
+
|
|
102
|
+
sch,opq,whole = split_riorl(s)
|
|
103
|
+
case sch
|
|
104
|
+
when 'file' then [whole]
|
|
105
|
+
else [opq]
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
def scheme() (absolute? ? 'file' : 'path') end
|
|
109
|
+
def opaque() (absolute? ? "//#{@host}#{@pth}" : @pth) end
|
|
110
|
+
def fspath() RL.url2fs(@pth) end
|
|
111
|
+
def fs2url(pth) RL.fs2url(pth) end
|
|
112
|
+
def url2fs(pth) RL.url2fs(pth) end
|
|
113
|
+
def wd=(wd) @wd = wd end
|
|
114
|
+
def route_from(other)
|
|
115
|
+
rfrl = self.class.new(uri.route_from(other.uri))
|
|
116
|
+
rfrl.wd = other.path
|
|
117
|
+
rfrl
|
|
118
|
+
end
|
|
119
|
+
def route_to(other)
|
|
120
|
+
rtrl = self.class.new(uri.route_to(other.uri))
|
|
121
|
+
rtrl.wd = self.abs
|
|
122
|
+
rtrl
|
|
123
|
+
end
|
|
124
|
+
def merge(other)
|
|
125
|
+
self.class.new(uri.merge(other.uri))
|
|
126
|
+
end
|
|
127
|
+
def base() (absolute? ? @pth : @wd) end
|
|
128
|
+
|
|
129
|
+
def abs()
|
|
130
|
+
return self if absolute?
|
|
131
|
+
self.class.new(@wd + @pth)
|
|
132
|
+
end
|
|
133
|
+
def path_no_slash() @pth.sub(/\/$/,'') end
|
|
134
|
+
def path() @pth end
|
|
135
|
+
def absolute?() @pth[0] == ?/ end
|
|
136
|
+
def host() @host ||= uri.host end
|
|
137
|
+
alias abs? absolute?
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
data/lib/rio/rl/uri.rb
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
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 'rio/rl/base'
|
|
39
|
+
module RIO
|
|
40
|
+
module RL
|
|
41
|
+
class URIBase < Base
|
|
42
|
+
attr_reader :uri
|
|
43
|
+
attr_writer :base
|
|
44
|
+
def initialize(u,*args)
|
|
45
|
+
#p callstr('initialize',u,*args)
|
|
46
|
+
# u should be a ::URI or something that can be parsed to one
|
|
47
|
+
args = get_base(*args)
|
|
48
|
+
@uri = ( u.kind_of?(::URI) ? u.dup : parse_url(u.to_s) )
|
|
49
|
+
self.join(*args)
|
|
50
|
+
@uri.path = '/' if @uri.absolute? and @uri.path == ''
|
|
51
|
+
end
|
|
52
|
+
def initialize_copy(*args)
|
|
53
|
+
#p callstr('initialize_copy',*args)
|
|
54
|
+
|
|
55
|
+
super
|
|
56
|
+
@uri = @uri.clone unless @uri.nil?
|
|
57
|
+
@base = @base.clone unless @base.nil?
|
|
58
|
+
end
|
|
59
|
+
def join(*args)
|
|
60
|
+
# self.class.joinuri(self.uri,*args)
|
|
61
|
+
return @uri if args.empty?
|
|
62
|
+
sa = args.map(&:to_s).map { |str| ::URI.escape(str,ESCAPE) }
|
|
63
|
+
sa.unshift @uri.path unless @uri.path.empty?
|
|
64
|
+
@uri.path = sa.join('/')
|
|
65
|
+
@uri.path.gsub!(%r|/+|,'/')
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def parse_url(str)
|
|
69
|
+
::URI.parse(::URI.escape(str,ESCAPE))
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def url() self.uri.to_s end
|
|
73
|
+
def fs2url(pth) RL.fs2url(pth) end
|
|
74
|
+
def url2fs(pth) RL.url2fs(pth) end
|
|
75
|
+
def fspath() RL.url2fs(@uri.path) end
|
|
76
|
+
|
|
77
|
+
def route_from(other)
|
|
78
|
+
self.class.new(@uri.route_from(other.uri),other)
|
|
79
|
+
end
|
|
80
|
+
def route_to(other)
|
|
81
|
+
self.class.new(@uri.route_to(other.uri),self.abs)
|
|
82
|
+
end
|
|
83
|
+
def merge(other)
|
|
84
|
+
self.class.new(@uri.merge(other.uri))
|
|
85
|
+
end
|
|
86
|
+
def base()
|
|
87
|
+
(@base.nil? ? @uri : @base)
|
|
88
|
+
end
|
|
89
|
+
def get_base(*args)
|
|
90
|
+
# args.each { |a| p "get_base len=#{args.length} #{a.class}##{a.to_s}" }
|
|
91
|
+
@base = nil
|
|
92
|
+
if args.length > 0
|
|
93
|
+
b = args.pop
|
|
94
|
+
@base = case b
|
|
95
|
+
when URIBase then b.uri if b.uri.absolute?
|
|
96
|
+
when ::URI then b if b.absolute?
|
|
97
|
+
when ::String then ::URI.parse(b) if b =~ /^[a-z]+:/
|
|
98
|
+
end
|
|
99
|
+
args.push b unless @base
|
|
100
|
+
end
|
|
101
|
+
args
|
|
102
|
+
end
|
|
103
|
+
def abs()
|
|
104
|
+
return self if @uri.absolute?
|
|
105
|
+
self.class.new(@base.merge(@uri),@base)
|
|
106
|
+
end
|
|
107
|
+
def path_no_slash
|
|
108
|
+
path.sub(/\/$/,'')
|
|
109
|
+
end
|
|
110
|
+
def path=(pt)
|
|
111
|
+
@uri.path = pt
|
|
112
|
+
end
|
|
113
|
+
extend Forwardable
|
|
114
|
+
def_instance_delegators(:@uri,:to_s,:path,:absolute?,:host)
|
|
115
|
+
alias abs? absolute?
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|