rio 0.3.8 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. data/README +18 -12
  2. data/Rakefile +57 -87
  3. data/build_doc.rb +19 -17
  4. data/doc/ANNOUNCE +3 -32
  5. data/doc/RELEASE_NOTES +4 -5
  6. data/doc/RIOIS +215 -0
  7. data/doc/generators/template/html/rio.css +428 -0
  8. data/doc/generators/template/html/rio.rb +18 -389
  9. data/doc/generators/template/html/ugly.rb +130 -0
  10. data/doc/pkg_def.rb +66 -0
  11. data/ex/catcsv.rb +64 -0
  12. data/ex/colx.rb +8 -0
  13. data/ex/findinruby +15 -0
  14. data/ex/findruby +14 -0
  15. data/ex/passwd_report.rb +8 -0
  16. data/ex/prompt.rb +25 -0
  17. data/ex/rgb.txt.gz +0 -0
  18. data/ex/riocat +42 -0
  19. data/ex/riogunzip +31 -0
  20. data/ex/riogzip +24 -0
  21. data/ex/rioprompt.rb +10 -0
  22. data/ex/targz2zip +17 -0
  23. data/ex/tonl +10 -0
  24. data/lib/rio.rb +16 -10
  25. data/lib/rio/abstract_method.rb +3 -4
  26. data/lib/rio/argv.rb +3 -4
  27. data/lib/rio/arycopy.rb +3 -4
  28. data/lib/rio/assert.rb +3 -4
  29. data/lib/rio/base.rb +3 -4
  30. data/lib/rio/callstr.rb +3 -4
  31. data/lib/rio/const.rb +3 -4
  32. data/lib/rio/construct.rb +3 -4
  33. data/lib/rio/constructor.rb +12 -8
  34. data/lib/rio/context.rb +15 -30
  35. data/lib/rio/context/autoclose.rb +3 -4
  36. data/lib/rio/context/copying.rb +3 -4
  37. data/lib/rio/context/cxx.rb +3 -4
  38. data/lib/rio/context/dir.rb +3 -4
  39. data/lib/rio/context/gzip.rb +3 -4
  40. data/lib/rio/context/methods.rb +16 -5
  41. data/lib/rio/context/skip.rb +3 -4
  42. data/lib/rio/context/stream.rb +42 -5
  43. data/lib/rio/cp.rb +7 -7
  44. data/lib/rio/def.rb +3 -4
  45. data/lib/rio/dir.rb +3 -4
  46. data/lib/rio/doc.rb +4 -5
  47. data/lib/rio/doc/EXAMPLES.rb +299 -0
  48. data/lib/rio/doc/HOWTO.rb +3 -4
  49. data/lib/rio/doc/INTRO.rb +86 -105
  50. data/lib/rio/doc/OPTIONAL.rb +4 -5
  51. data/lib/rio/doc/SYNOPSIS.rb +7 -6
  52. data/lib/rio/entrysel.rb +21 -23
  53. data/lib/rio/exception.rb +3 -4
  54. data/lib/rio/exception/copy.rb +3 -4
  55. data/lib/rio/exception/notimplemented.rb +57 -0
  56. data/lib/rio/exception/notsupported.rb +3 -4
  57. data/lib/rio/exception/open.rb +3 -4
  58. data/lib/rio/exception/state.rb +3 -4
  59. data/lib/rio/ext.rb +47 -13
  60. data/lib/rio/ext/csv.rb +4 -5
  61. data/lib/rio/ext/if.rb +45 -0
  62. data/lib/rio/ext/mp3info.rb +80 -0
  63. data/lib/rio/ext/splitlines.rb +253 -0
  64. data/lib/rio/ext/yaml.rb +9 -5
  65. data/lib/rio/ext/yaml/doc.rb +133 -0
  66. data/lib/rio/ext/yaml/tie.rb +149 -0
  67. data/lib/rio/ext/zipfile.rb +23 -4
  68. data/lib/rio/ext/zipfile/fs.rb +116 -0
  69. data/lib/rio/ext/zipfile/rl.rb +251 -0
  70. data/lib/rio/ext/zipfile/rootdir.rb +117 -0
  71. data/lib/rio/ext/zipfile/state.rb +161 -0
  72. data/lib/rio/ext/zipfile/wrap.rb +204 -0
  73. data/lib/rio/factory.rb +235 -27
  74. data/lib/rio/file.rb +4 -4
  75. data/lib/rio/filter.rb +3 -4
  76. data/lib/rio/filter/closeoneof.rb +3 -4
  77. data/lib/rio/filter/gzip.rb +9 -4
  78. data/lib/rio/fs/base.rb +3 -4
  79. data/lib/rio/fs/impl.rb +4 -5
  80. data/lib/rio/fs/native.rb +3 -4
  81. data/lib/rio/fs/stream.rb +3 -4
  82. data/lib/rio/fs/url.rb +3 -4
  83. data/lib/rio/ftp/conncache.rb +19 -5
  84. data/lib/rio/ftp/dir.rb +3 -4
  85. data/lib/rio/ftp/fs.rb +30 -24
  86. data/lib/rio/grande.rb +27 -7
  87. data/lib/rio/handle.rb +3 -4
  88. data/lib/rio/if.rb +19 -15
  89. data/lib/rio/if/basic.rb +7 -7
  90. data/lib/rio/if/csv.rb +5 -6
  91. data/lib/rio/if/dir.rb +120 -114
  92. data/lib/rio/if/file.rb +52 -44
  93. data/lib/rio/if/fileordir.rb +217 -211
  94. data/lib/rio/if/grande.rb +674 -644
  95. data/lib/rio/if/grande_entry.rb +321 -313
  96. data/lib/rio/if/grande_stream.rb +653 -553
  97. data/lib/rio/if/internal.rb +3 -4
  98. data/lib/rio/if/path.rb +425 -426
  99. data/lib/rio/if/rubyio.rb +681 -0
  100. data/lib/rio/if/string.rb +42 -5
  101. data/lib/rio/if/temp.rb +3 -4
  102. data/lib/rio/if/test.rb +245 -238
  103. data/lib/rio/if/yaml.rb +15 -41
  104. data/lib/rio/ioh.rb +7 -5
  105. data/lib/rio/iomode.rb +19 -7
  106. data/lib/rio/ios/fail.rb +4 -5
  107. data/lib/rio/ios/generic.rb +4 -5
  108. data/lib/rio/ios/mode.rb +4 -5
  109. data/lib/rio/ios/null.rb +6 -7
  110. data/lib/rio/iowrap.rb +3 -4
  111. data/lib/rio/kernel.rb +3 -5
  112. data/lib/rio/local.rb +3 -4
  113. data/lib/rio/match.rb +3 -4
  114. data/lib/rio/matchrecord.rb +3 -4
  115. data/lib/rio/no_warn.rb +3 -4
  116. data/lib/rio/nullio.rb +3 -4
  117. data/lib/rio/open3.rb +4 -5
  118. data/lib/rio/ops/construct.rb +3 -4
  119. data/lib/rio/ops/create.rb +11 -6
  120. data/lib/rio/ops/dir.rb +19 -8
  121. data/lib/rio/ops/either.rb +6 -5
  122. data/lib/rio/ops/file.rb +3 -4
  123. data/lib/rio/ops/path.rb +14 -35
  124. data/lib/rio/ops/stream.rb +3 -4
  125. data/lib/rio/ops/stream/input.rb +4 -7
  126. data/lib/rio/ops/stream/output.rb +3 -4
  127. data/lib/rio/ops/stream/read.rb +6 -5
  128. data/lib/rio/ops/stream/write.rb +3 -4
  129. data/lib/rio/ops/symlink.rb +3 -4
  130. data/lib/rio/path.rb +22 -18
  131. data/lib/rio/path/reset.rb +4 -5
  132. data/lib/rio/piper.rb +3 -4
  133. data/lib/rio/piper/cp.rb +3 -4
  134. data/lib/rio/prompt.rb +10 -5
  135. data/lib/rio/rectype.rb +5 -5
  136. data/lib/rio/rl/base.rb +17 -71
  137. data/lib/rio/rl/builder.rb +14 -38
  138. data/lib/rio/rl/chmap.rb +66 -0
  139. data/lib/rio/rl/fs2url.rb +82 -0
  140. data/lib/rio/rl/ioi.rb +4 -4
  141. data/lib/rio/rl/path.rb +44 -122
  142. data/lib/rio/rl/pathmethods.rb +19 -8
  143. data/lib/rio/rl/uri.rb +137 -60
  144. data/lib/rio/rl/withpath.rb +295 -0
  145. data/lib/rio/scheme/aryio.rb +3 -4
  146. data/lib/rio/scheme/cmdio.rb +3 -4
  147. data/lib/rio/scheme/cmdpipe.rb +4 -4
  148. data/lib/rio/scheme/fd.rb +3 -4
  149. data/lib/rio/scheme/ftp.rb +7 -7
  150. data/lib/rio/scheme/http.rb +4 -5
  151. data/lib/rio/scheme/null.rb +3 -4
  152. data/lib/rio/scheme/path.rb +3 -4
  153. data/lib/rio/scheme/stderr.rb +3 -4
  154. data/lib/rio/scheme/stdio.rb +3 -4
  155. data/lib/rio/scheme/strio.rb +3 -4
  156. data/lib/rio/scheme/sysio.rb +3 -4
  157. data/lib/rio/scheme/tcp.rb +3 -4
  158. data/lib/rio/scheme/temp.rb +6 -6
  159. data/lib/rio/state.rb +18 -46
  160. data/lib/rio/state/error.rb +3 -4
  161. data/lib/rio/stream.rb +4 -4
  162. data/lib/rio/stream/base.rb +3 -4
  163. data/lib/rio/stream/duplex.rb +3 -4
  164. data/lib/rio/stream/open.rb +3 -8
  165. data/lib/rio/symantics.rb +3 -4
  166. data/lib/rio/tempdir.rb +2 -2
  167. data/lib/rio/to_rio.rb +3 -4
  168. data/lib/rio/to_rio/all.rb +3 -4
  169. data/lib/rio/to_rio/array.rb +4 -5
  170. data/lib/rio/to_rio/io.rb +4 -5
  171. data/lib/rio/to_rio/object.rb +4 -5
  172. data/lib/rio/to_rio/string.rb +4 -5
  173. data/lib/rio/uri/file.rb +41 -5
  174. data/lib/rio/util.rb +3 -4
  175. data/lib/rio/version.rb +4 -5
  176. data/setup.rb +368 -339
  177. data/test/bin/list_dir.rb +1 -1
  178. data/test/ftp/anon_misc.rb +13 -1
  179. data/test/ftp/anon_special.rb +6 -6
  180. data/test/ftp/anon_write.rb +10 -3
  181. data/test/ftp/ftp2ftp.rb +2 -2
  182. data/test/ftp/testdef.rb +9 -6
  183. data/test/http/all.rb +3 -0
  184. data/test/http/copy-from-http.rb +140 -0
  185. data/test/lib/temp_server.rb +44 -0
  186. data/test/runalltests.rb +3 -1
  187. data/test/runhttp.rb +12 -0
  188. data/test/runhttptests.rb +1 -1
  189. data/test/runtests.rb +41 -3
  190. data/test/tc/abs.rb +9 -5
  191. data/test/tc/all.rb +9 -4
  192. data/test/tc/base.rb +1 -1
  193. data/test/tc/base2.rb +87 -0
  194. data/test/tc/{methods.rb → clone.rb} +72 -50
  195. data/test/tc/closeoncopy.rb +13 -2
  196. data/test/tc/copy-dir-samevar.rb +91 -0
  197. data/test/tc/dir_iter.rb +0 -1
  198. data/test/tc/empty.rb +6 -2
  199. data/test/tc/expand_path.rb +36 -54
  200. data/test/tc/ext.rb +42 -18
  201. data/test/tc/gzip.rb +30 -3
  202. data/test/tc/likeio.rb +5 -1
  203. data/test/tc/line_record_row.rb +51 -0
  204. data/test/tc/noqae.rb +71 -70
  205. data/test/tc/path_parts.rb +175 -0
  206. data/test/tc/programs_util.rb +3 -3
  207. data/test/tc/rename.rb +4 -5
  208. data/test/tc/riorl.rb +9 -7
  209. data/test/tc/skip.rb +35 -6
  210. data/test/tc/skiplines.rb +34 -5
  211. data/test/tc/split.rb +8 -50
  212. data/test/tc/splitlines.rb +65 -0
  213. data/test/tc/splitpath.rb +83 -0
  214. data/test/tc/testcase.rb +1 -1
  215. data/test/tc/truncate.rb +39 -0
  216. data/test/tc/yaml.rb +9 -8
  217. metadata +261 -207
  218. data/ChangeLog +0 -1418
  219. data/VERSION +0 -1
  220. data/lib/rio/doc/MISC.rb +0 -259
  221. data/lib/rio/if/stream.rb +0 -680
  222. data/lib/rio/impl/path.rb +0 -87
  223. data/test/tc/copy-from-http.rb +0 -89
@@ -1,87 +0,0 @@
1
- #--
2
- # ===============================================================================
3
- # Copyright (c) 2005, 2006 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
- # ruby build_doc.rb
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
- require 'pathname'
81
- def self.root?(s) ::Pathname.new(s).root? end
82
- def self.mountpoint?(s) ::Pathname.new(s).mountpoint? end
83
- def self.realpath(s) ::Pathname.new(s).realpath end
84
- def self.cleanpath(s,*args) ::Pathname.new(s).cleanpath(*args) end
85
- end
86
- end
87
- end
@@ -1,89 +0,0 @@
1
- #!/usr/local/bin/ruby
2
- if $0 == __FILE__
3
- Dir.chdir File.dirname(__FILE__)+'/../'
4
- $:.unshift File.expand_path('../lib/')
5
- end
6
-
7
- require 'rio'
8
- require 'tc/testcase'
9
-
10
- class TC_copy_from_http < Test::RIO::TestCase
11
- @@once = false
12
- def self.once
13
- @@once = true
14
-
15
- rio('d0').rmtree.mkpath
16
- rio('d1').rmtree.mkpath
17
- rio('d0/d2').rmtree.mkpath
18
- make_lines_file(1,'d0/f0')
19
- make_lines_file(2,'d0/f1')
20
- make_lines_file(3,'d1/f2')
21
- make_lines_file(4,'d1/f3')
22
- make_lines_file(5,'d0/d2/f4')
23
- make_lines_file(6,'d0/d2/f5')
24
- end
25
- def setup
26
- super
27
- self.class.once unless @@once
28
-
29
- @d0 = rio('d0')
30
- @d2 = rio('d0/d2')
31
- end
32
- def cptest(src)
33
- dst = rio('dst').delete!.mkpath
34
- dst < src.clone
35
- assert_rios_equal(src.clone,rio(dst,src.filename),"rio copy")
36
- end
37
-
38
- def test_uri_rio_to_file
39
- ario = rio('out').delete!.touch
40
- url = 'http://localhost/riotest/hw.html'
41
- urio = rio(url)
42
- ario < urio
43
- exp = urio.contents
44
- assert_equal(exp,ario.contents)
45
- end
46
- def test_uri_rio_to_dir
47
- ario = rio('ud').delete!.mkdir
48
- url = 'http://localhost/riotest/hw.html'
49
- urio = rio(url)
50
- #$trace_states = true
51
- ario < urio
52
- $trace_states = false
53
- drio = rio(ario,urio.filename)
54
- assert(drio.file?)
55
- assert(urio.contents,drio.contents)
56
- end
57
- def test_uri_string_to_dir
58
- ario = rio('uds').delete!.mkdir
59
- url = 'http://localhost/riotest/hw.html'
60
- urio = rio(url)
61
- #$trace_states = true
62
- ario < url
63
- $trace_states = false
64
- drio = rio(ario,urio.filename)
65
- assert(drio.file?)
66
- assert(urio.contents,drio.contents)
67
- end
68
- def test_url_string_to_file
69
- ario = rio('out').delete!.touch
70
- url = 'http://localhost/riotest/hw.html'
71
- ario < url
72
- exp = url
73
- assert_equal(exp,ario.contents)
74
- end
75
- def test_url_array_to_file
76
- ario = rio('out').delete!.touch
77
- url = 'http://localhost/riotest/hw.html'
78
- ario < [url]
79
- exp = url
80
- assert_equal(exp,ario.contents)
81
- end
82
- def test_url_string_to_nonex
83
- ario = rio('outz').delete!
84
- url = 'http://localhost/riotest/hw.html'
85
- ario < url
86
- exp = url
87
- assert_equal(exp,ario.contents)
88
- end
89
- end