rio 0.3.7 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (208) hide show
  1. data/ChangeLog +1273 -1482
  2. data/README +2 -2
  3. data/Rakefile +5 -5
  4. data/VERSION +1 -1
  5. data/{RUNME.1st.rb → build_doc.rb} +4 -10
  6. data/doc/ANNOUNCE +33 -80
  7. data/doc/RELEASE_NOTES +31 -1
  8. data/doc/generators/template/html/rio.rb +3 -3
  9. data/lib/rio/abstract_method.rb +2 -2
  10. data/lib/rio/argv.rb +2 -2
  11. data/lib/rio/arycopy.rb +2 -2
  12. data/lib/rio/assert.rb +2 -2
  13. data/lib/rio/base.rb +2 -2
  14. data/lib/rio/callstr.rb +47 -0
  15. data/lib/rio/const.rb +52 -0
  16. data/lib/rio/construct.rb +6 -24
  17. data/lib/rio/constructor.rb +12 -2
  18. data/lib/rio/context/autoclose.rb +73 -0
  19. data/lib/rio/context/copying.rb +2 -2
  20. data/lib/rio/context/cxx.rb +2 -2
  21. data/lib/rio/context/dir.rb +2 -2
  22. data/lib/rio/context/gzip.rb +2 -2
  23. data/lib/rio/context/methods.rb +6 -34
  24. data/lib/rio/context/skip.rb +2 -2
  25. data/lib/rio/context/stream.rb +2 -2
  26. data/lib/rio/context.rb +17 -2
  27. data/lib/rio/cp.rb +35 -9
  28. data/lib/rio/def.rb +54 -0
  29. data/lib/rio/dir.rb +19 -20
  30. data/lib/rio/doc/HOWTO.rb +23 -7
  31. data/lib/rio/doc/INTRO.rb +57 -23
  32. data/lib/rio/doc/MISC.rb +2 -2
  33. data/lib/rio/doc/OPTIONAL.rb +134 -0
  34. data/lib/rio/doc/SYNOPSIS.rb +11 -4
  35. data/lib/rio/doc.rb +2 -2
  36. data/lib/rio/entrysel.rb +25 -6
  37. data/lib/rio/exception/copy.rb +2 -2
  38. data/lib/rio/exception/notsupported.rb +47 -0
  39. data/lib/rio/exception/open.rb +2 -2
  40. data/lib/rio/exception/state.rb +2 -2
  41. data/lib/rio/exception.rb +2 -2
  42. data/lib/rio/ext/csv.rb +56 -11
  43. data/lib/rio/ext/yaml.rb +2 -2
  44. data/lib/rio/ext/zipfile.rb +91 -0
  45. data/lib/rio/ext.rb +38 -3
  46. data/lib/rio/factory.rb +17 -34
  47. data/lib/rio/file.rb +48 -8
  48. data/lib/rio/filter/closeoneof.rb +36 -16
  49. data/lib/rio/filter/gzip.rb +2 -2
  50. data/lib/rio/filter.rb +2 -2
  51. data/lib/rio/fs/base.rb +42 -0
  52. data/lib/rio/fs/impl.rb +123 -0
  53. data/lib/rio/fs/native.rb +76 -0
  54. data/lib/rio/{record.rb → fs/stream.rb} +21 -18
  55. data/lib/rio/fs/url.rb +64 -0
  56. data/lib/rio/ftp/{ioh.rb → conncache.rb} +38 -39
  57. data/lib/rio/ftp/dir.rb +95 -0
  58. data/lib/rio/ftp/fs.rb +173 -0
  59. data/lib/rio/ftp/ftpfile.rb +20 -0
  60. data/lib/rio/grande.rb +2 -2
  61. data/lib/rio/handle.rb +2 -2
  62. data/lib/rio/if/basic.rb +2 -2
  63. data/lib/rio/if/csv.rb +2 -2
  64. data/lib/rio/if/dir.rb +2 -2
  65. data/lib/rio/if/file.rb +26 -2
  66. data/lib/rio/if/fileordir.rb +44 -49
  67. data/lib/rio/if/grande.rb +32 -10
  68. data/lib/rio/if/grande_entry.rb +12 -2
  69. data/lib/rio/if/grande_stream.rb +17 -28
  70. data/lib/rio/if/internal.rb +2 -2
  71. data/lib/rio/if/path.rb +7 -6
  72. data/lib/rio/if/stream.rb +85 -29
  73. data/lib/rio/if/string.rb +2 -2
  74. data/lib/rio/if/temp.rb +2 -2
  75. data/lib/rio/if/test.rb +37 -4
  76. data/lib/rio/if/yaml.rb +2 -2
  77. data/lib/rio/if.rb +2 -2
  78. data/lib/rio/impl/path.rb +2 -2
  79. data/lib/rio/ioh.rb +17 -6
  80. data/lib/rio/iomode.rb +4 -3
  81. data/lib/rio/ios/fail.rb +107 -0
  82. data/lib/rio/ios/generic.rb +120 -0
  83. data/lib/rio/ios/mode.rb +61 -0
  84. data/lib/rio/ios/null.rb +120 -0
  85. data/lib/rio/iowrap.rb +129 -0
  86. data/lib/rio/kernel.rb +12 -3
  87. data/lib/rio/local.rb +2 -2
  88. data/lib/rio/match.rb +3 -3
  89. data/lib/rio/matchrecord.rb +2 -2
  90. data/lib/rio/no_warn.rb +50 -0
  91. data/lib/rio/{arrayio.rb → nullio.rb} +47 -86
  92. data/lib/rio/open3.rb +2 -2
  93. data/lib/rio/ops/construct.rb +20 -13
  94. data/lib/rio/ops/create.rb +10 -19
  95. data/lib/rio/ops/dir.rb +60 -54
  96. data/lib/rio/ops/either.rb +11 -9
  97. data/lib/rio/ops/file.rb +28 -24
  98. data/lib/rio/ops/path.rb +45 -43
  99. data/lib/rio/ops/stream/input.rb +12 -8
  100. data/lib/rio/ops/stream/output.rb +2 -2
  101. data/lib/rio/ops/stream/read.rb +35 -32
  102. data/lib/rio/ops/stream/write.rb +5 -5
  103. data/lib/rio/ops/stream.rb +7 -3
  104. data/lib/rio/ops/symlink.rb +12 -10
  105. data/lib/rio/path/reset.rb +5 -5
  106. data/lib/rio/path.rb +32 -24
  107. data/lib/rio/piper/cp.rb +2 -2
  108. data/lib/rio/piper.rb +2 -2
  109. data/lib/rio/prompt.rb +2 -2
  110. data/lib/rio/rectype.rb +9 -7
  111. data/lib/rio/rl/base.rb +5 -4
  112. data/lib/rio/rl/builder.rb +17 -5
  113. data/lib/rio/rl/ioi.rb +14 -4
  114. data/lib/rio/rl/path.rb +23 -15
  115. data/lib/rio/rl/pathmethods.rb +12 -2
  116. data/lib/rio/rl/uri.rb +13 -6
  117. data/lib/rio/scheme/aryio.rb +3 -3
  118. data/lib/rio/scheme/cmdio.rb +4 -3
  119. data/lib/rio/scheme/cmdpipe.rb +3 -35
  120. data/lib/rio/scheme/fd.rb +4 -3
  121. data/lib/rio/scheme/ftp.rb +36 -7
  122. data/lib/rio/scheme/http.rb +2 -2
  123. data/lib/rio/{context/closeoneof.rb → scheme/null.rb} +17 -11
  124. data/lib/rio/scheme/path.rb +28 -30
  125. data/lib/rio/scheme/stderr.rb +4 -4
  126. data/lib/rio/scheme/stdio.rb +6 -5
  127. data/lib/rio/scheme/strio.rb +10 -20
  128. data/lib/rio/scheme/sysio.rb +5 -2
  129. data/lib/rio/scheme/tcp.rb +4 -3
  130. data/lib/rio/scheme/temp.rb +14 -1
  131. data/lib/rio/state/error.rb +2 -2
  132. data/lib/rio/state.rb +80 -34
  133. data/lib/rio/stream/base.rb +7 -2
  134. data/lib/rio/stream/duplex.rb +13 -10
  135. data/lib/rio/stream/open.rb +74 -79
  136. data/lib/rio/stream.rb +15 -23
  137. data/lib/rio/symantics.rb +2 -2
  138. data/lib/rio/tempdir.rb +132 -132
  139. data/lib/rio/to_rio/all.rb +40 -0
  140. data/lib/rio/to_rio/array.rb +40 -0
  141. data/lib/rio/to_rio/io.rb +41 -0
  142. data/lib/rio/to_rio/object.rb +43 -0
  143. data/lib/rio/to_rio/string.rb +41 -0
  144. data/lib/rio/to_rio.rb +13 -2
  145. data/lib/rio/uri/file.rb +2 -2
  146. data/lib/rio/util.rb +2 -2
  147. data/lib/rio/version.rb +3 -3
  148. data/lib/rio.rb +16 -25
  149. data/test/bin/count_lines.rb +11 -0
  150. data/test/bin/find_lines.rb +13 -0
  151. data/test/bin/list_dir.rb +14 -0
  152. data/test/ftp/all.rb +9 -0
  153. data/test/ftp/anon_misc.rb +112 -0
  154. data/test/ftp/anon_read.rb +105 -0
  155. data/test/ftp/anon_special.rb +68 -0
  156. data/test/ftp/anon_write.rb +63 -0
  157. data/test/ftp/ftp2ftp.rb +51 -0
  158. data/test/ftp/initftpfiles.rb +14 -0
  159. data/test/ftp/testdef.rb +51 -0
  160. data/test/gem_runtests.rb +15 -15
  161. data/test/runalltests.rb +15 -0
  162. data/test/runftptests.rb +14 -0
  163. data/test/{1.rb → runhttptests.rb} +14 -14
  164. data/test/runtests.rb +14 -14
  165. data/test/tc/all.rb +36 -21
  166. data/test/tc/cmdpipe.rb +18 -15
  167. data/test/tc/copy-from-http.rb +89 -0
  168. data/test/tc/copy-from.rb +1 -52
  169. data/test/tc/copy.rb +19 -17
  170. data/test/tc/csv2.rb +6 -3
  171. data/test/tc/empty.rb +47 -0
  172. data/test/tc/emptyriodir.rb +129 -0
  173. data/test/tc/entsel.rb +110 -0
  174. data/test/tc/files_select.rb +92 -0
  175. data/test/tc/get.rb +7 -6
  176. data/test/tc/getrec.rb +2 -5
  177. data/test/tc/gzip.rb +82 -0
  178. data/test/tc/io_each_byte.rb +60 -0
  179. data/test/tc/io_read.rb +80 -0
  180. data/test/tc/iometh.rb +149 -0
  181. data/test/tc/likeio.rb +112 -0
  182. data/test/tc/methods.rb +10 -9
  183. data/test/tc/misc.rb +1 -37
  184. data/test/tc/null.rb +45 -0
  185. data/test/tc/pid.rb +31 -0
  186. data/test/tc/piper.rb +34 -37
  187. data/test/tc/programs_util.rb +24 -0
  188. data/test/tc/readline.rb +30 -0
  189. data/test/tc/rename.rb +12 -0
  190. data/test/tc/tempfile.rb +14 -0
  191. data/test/tc/testcase.rb +6 -0
  192. data/test/tc/tonl.rb +37 -0
  193. metadata +181 -144
  194. data/ex/colx.rb +0 -8
  195. data/ex/findinruby +0 -16
  196. data/ex/findruby +0 -15
  197. data/ex/passwd_report.rb +0 -8
  198. data/ex/prompt.rb +0 -25
  199. data/ex/rgb.txt.gz +0 -0
  200. data/ex/riocat +0 -35
  201. data/ex/riogunzip +0 -31
  202. data/ex/riogzip +0 -24
  203. data/ex/rioprompt.rb +0 -6
  204. data/ex/targz2zip +0 -17
  205. data/ex/tolf +0 -11
  206. data/lib/rio/ftp/conn.rb +0 -167
  207. data/lib/rio/ftp.rb +0 -275
  208. data/test/once.rb +0 -7
data/README CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2005, Christopher Kleckner
1
+ Copyright (c) 2005, 2006 Christopher Kleckner
2
2
  All rights reserved
3
3
 
4
4
  This file is part of the Rio library for ruby.
@@ -27,7 +27,7 @@ Rio is a convenience class wrapping much of the functionality of
27
27
  IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO, OpenURI, Zlib, and CSV.
28
28
 
29
29
  To create the documentation for Rio run the command
30
- ruby RUNME.1st.rb
30
+ ruby build_doc.rb
31
31
  from the distribution directory.
32
32
 
33
33
  Then point your browser at the 'doc/rdoc' directory.
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -21,7 +21,7 @@
21
21
  # ===============================================================================
22
22
  #
23
23
  # To create the documentation for Rio run the command
24
- # rake rdoc
24
+ # ruby build_doc.rb
25
25
  # from the distribution directory.
26
26
  #++
27
27
 
@@ -42,7 +42,7 @@ $:.push 'lib'
42
42
  require 'rio/version'
43
43
  require 'rio/doc'
44
44
 
45
- SVN_REPOSITORY_URL = 'file:///loc/svn/'
45
+ SVN_REPOSITORY_URL = ''
46
46
 
47
47
  SRC_FILES = FileList['lib/**/*.rb']
48
48
  DOC_FILES = FileList['README','lib/rio.rb','lib/rio/doc/*.rb',
@@ -52,11 +52,11 @@ XMP_FILES = FileList['ex/*']
52
52
  module PKG
53
53
  NAME = "rio"
54
54
  TITLE = RIO::TITLE
55
- VERSION = '0.3.7'
55
+ VERSION = RIO::VERSION
56
56
  FULLNAME = PKG::NAME + "-" + PKG::VERSION
57
57
  SUMMARY = RIO::SUMMARY
58
58
  DESCRIPTION = RIO::DESCRIPTION
59
- FILES = FileList.new(['setup.rb', 'RUNME.1st.rb', 'COPYING', 'Rakefile', 'ChangeLog', 'VERSION',
59
+ FILES = FileList.new(['setup.rb', 'build_doc.rb', 'COPYING', 'Rakefile', 'ChangeLog', 'VERSION',
60
60
  'test/**/*.rb','doc/**/*'] + SRC_FILES.to_a + DOC_FILES.to_a + XMP_FILES.to_a
61
61
  ) do |fl|
62
62
  fl.exclude( /\bsvn\b/ )
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.7
1
+ 0.3.8
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  #--
3
3
  # ===============================================================================
4
- # Copyright (c) 2005, Christopher Kleckner
4
+ # Copyright (c) 2005, 2006 Christopher Kleckner
5
5
  # All rights reserved
6
6
  #
7
7
  # This file is part of the Rio library for ruby.
@@ -22,18 +22,10 @@
22
22
  # ===============================================================================
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory.
27
27
  #++
28
28
 
29
- # It is not really necessary to run this first.
30
- # It simply builds the Rio RDoc documentation, and is provided
31
- # to support those who have not installed +rake+ and to demonstrate Rio.
32
- # The preferred method of building the documentation is
33
- # rake rdoc
34
- #
35
-
36
-
37
29
  $:.unshift 'lib'
38
30
  require 'rio'
39
31
 
@@ -61,6 +53,8 @@ rdoc_files = [
61
53
 
62
54
  cmd = sprintf("rdoc %s %s",RDOC_OPTIONS.join(' '),rdoc_files.join(' '))
63
55
 
56
+ rio(?-,cmd) > ?-
57
+
64
58
  docindex = (rdoc_dir/'index.html').abs.to_url
65
59
  msg = "Please point your browser at '#{docindex}'"
66
60
  lin = ">" + ">" * (msg.length+2) + ">"
data/doc/ANNOUNCE CHANGED
@@ -1,33 +1,43 @@
1
- Piping Hot -- Rio 0.3.7
1
+ Rio 0.3.8
2
2
 
3
3
  == Overview
4
4
 
5
5
  Rio is a Ruby I/O convenience class wrapping much of the functionality
6
6
  of IO, File and Dir. Rio also uses FileUtils, Tempfile, StringIO,
7
- OpenURI, Zlib, and CSV to provide similar functionality using a simple
8
- consistent interface. In addition to forwarding the interfaces
9
- provided by IO, File, and Dir to an appropriate object, Rio provides a
10
- "grande" interface that allows many common application-level I/O and
11
- file-system tasks to be expressed succinctly.
7
+ OpenURI, Net::FTP, Zlib, and CSV to provide similar functionality
8
+ using a simple consistent interface. In addition to forwarding the
9
+ interfaces provided by IO, File, and Dir to an appropriate object, Rio
10
+ provides a "grande" interface that allows many common application
11
+ level I/O and file-system tasks to be expressed succinctly.
12
12
 
13
13
  == New
14
14
 
15
- Support for Pipe operator
16
- # Pipe multiple commands
17
- rio('afile') | rio(?-,'acmd') | 'another_cmd' | ?-
15
+ Enhanced support for FTP file-systems. All of Rio's most powerful
16
+ idioms are now supported seamlessly on FTP servers.
17
+
18
+ # copy a file from or to an FTP server
19
+ rio('ftp://ahost/adir/afile') > rio('localfile') # server -> local file
20
+ rio('ftp://ahost/adir/afile') < rio('localfile') # local file -> server
21
+
22
+ # copy an entire directory structure from or to an FTP server
23
+ rio('ftp://ahost/adir') > rio('localdir') # server -> local directory
24
+ rio('ftp://ahost/adir') < rio('localdir') # local directory -> server
25
+
26
+ All of Rio's grande selection and filtering options are available for
27
+ files and directories on FTP servers.
28
+
29
+ # create a gzipped copy of a web page on an ftp server
30
+ rio('ftp://ftphost/f.html.gz').gzip < rio('http://httphost/f.html')
31
+
32
+ # dump the first 10 lines of a gzipped log file on an FTP server to stdout
33
+ rio('ftp://ftphost/logfile.txt').lines(0...10) > ?-
18
34
 
19
- # run the same series of commands, with different input and/or output
20
- cmdpipe = rio(?-,'acmd') | rio(?-,'another_cmd')
21
- rio('infile1') | cmdpipe | rio('outfile1')
22
- rio('infile2') | cmdpipe | rio('outfile2')
35
+ # iterate through the entries of a directory on an FTP server
36
+ rio('ftp://ftphost/adir').entries { |entrio| ... }
23
37
 
24
- cmdpipe2 = rio(?|,'cmd1','cmd2','outfile') # create a cmdpipe Rio
25
- rio('infile1') | cmdpipe2 # run with input coming from a file
26
- rio(?-) | cmdpipe2 # same commands with input from stdin
38
+ # get an array of all .rb files on an ftp server
39
+ rb_files = rio('ftp://ftphost/').all.files['*.rb']
27
40
 
28
- Improved support for MS Windows path specifications
29
- rio('D:/adir/afile')
30
- rio('//ahost/adir/afile')
31
41
 
32
42
  == SYNOPSIS
33
43
 
@@ -135,75 +145,18 @@ Create a tab separated file of accounts in a UNIX passwd file,
135
145
  listing only the username, uid, and realname fields
136
146
  rio('/etc/passwd').csv(':').columns(0,2,4) > rio('rpt').csv("\t")
137
147
 
138
- == New for version 0.3.4
139
-
140
- * New Grande Selection parameter.
141
-
142
- A major weakness of Rio's selection methods (lines, files, etc.)
143
- has always been that it only implemented a logical OR.
144
-
145
- rio('afile').lines(0..10,/Rio/) {...}
146
- iterates through lines that are in the range 0..10 OR
147
- contain 'Rio'.
148
-
149
- rio('adir').files(:executable?,'*.rb') {...}
150
- iterates through files that are executable OR match '*.rb'
151
-
152
- Selecting files that matched both required using a proc.
153
- rio('adir').files(proc{ |f| f.executable? and f.fnmatch?('*.rb')}) {...}
154
-
155
- Rio's grande selection methods will now accept an array of conditions
156
- which must all be matched, in order to be selected. A logical AND.
157
-
158
- rio('adir').files([:executable?,'*.rb']) {...}
159
-
160
- The array, of course, need not be the only paramter.
161
-
162
- rio('adir').files('*.exe',[:executable?,'*.rb']) {...}
163
-
164
- selects .exe files and .rb files that are executable.
165
-
166
- * Renamed some of grande rejection methods.
167
- (based on a suggestion by Gavin Sinclair)
168
- nolines => skiplines
169
- nofiles => skipfiles
170
- etc.
171
-
172
- * New skip() grande method
173
- rio('afile').skip.lines(/Rio/) # same as skiplines(/Rio/)
174
- rio('afile').lines(/Rio/).skip(0..9) # lines with 'Rio', exclude
175
- # the first ten lines
176
-
177
- * Alternative syntaxes for creating Rios that have no path.
178
- rio(?-) # create a Rio refering to stdio
179
- rio(:stdio) # same thing.
180
- rio.stdio # same thing
181
- RIO.stdio # ditto
182
- RIO::Rio.stdio # once again
183
-
184
- * From Pathname added
185
- * root?
186
- * mountpoint?
187
- * realpath
188
- * cleanpath
189
-
190
- * Removed Rio#slurp in favor of Rio#contents.
148
+ Pipe multiple commands
149
+ rio('afile') | rio(?-,'acmd') | 'another_cmd' | ?-
191
150
 
192
- * Added aliases for the copy operators. (suggested by Dave Burt)
193
- * copy_to >
194
- * append_to >>
195
- * copy_from <
196
- * append_from <<
151
+ == Contact
197
152
 
198
- * Bug fixes and corrections
199
-
200
153
  Project:: http://rubyforge.org/projects/rio/
201
154
  Documentation:: http://rio.rubyforge.org/
202
155
  Bugs:: http://rubyforge.org/tracker/?group_id=821
203
156
  Email:: rio4ruby@rubyforge.org
204
157
 
205
158
  == Copyright
206
- Copyright (c) 2005, Christopher Kleckner. All rights reserved
159
+ Copyright (c) 2005, 2006 Christopher Kleckner. All rights reserved
207
160
 
208
161
  == License
209
162
  Rio is released under the GNU General Public License
data/doc/RELEASE_NOTES CHANGED
@@ -9,7 +9,7 @@ Rio is a convenience class wrapping much of the functionality of
9
9
  IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO, OpenURI, Zlib, and CSV.
10
10
 
11
11
  To create the documentation for Rio run the command
12
- ruby RUNME.1st.rb
12
+ ruby build_doc.rb
13
13
  from the distribution directory.
14
14
 
15
15
  Then point your browser at the 'doc/rdoc' directory.
@@ -20,6 +20,36 @@ Suggested Reading
20
20
  * RIO::Doc::HOWTO
21
21
  * RIO::Rio
22
22
 
23
+ == New for version 0.3.8
24
+ * Enhanced support for FTP file-systems. All of Rio's most powerful
25
+ idioms are now supported seamlessly on FTP servers.
26
+
27
+ # copy a file from or to an FTP server
28
+ rio('ftp://ahost/adir/afile') > rio('localfile') # server -> local file
29
+ rio('ftp://ahost/adir/afile') < rio('localfile') # local file -> server
30
+
31
+ # copy an entire directory structure from or to an FTP server
32
+ rio('ftp://ahost/adir') > rio('localdir') # server -> local directory
33
+ rio('ftp://ahost/adir') < rio('localdir') # local directory -> server
34
+
35
+ All of Rio's grande selection and filtering options are available for
36
+ files and directories on FTP servers.
37
+
38
+ # create a gzipped copy of a web page on an ftp server
39
+ rio('ftp://ftphost/f.html.gz').gzip < rio('http://httphost/f.html')
40
+
41
+ # dump the first 10 lines of a gzipped log file on an FTP server to stdout
42
+ rio('ftp://ftphost/logfile.txt').lines(0...10) > ?-
43
+
44
+ # iterate through the entries of a directory on an FTP server
45
+ rio('ftp://ftphost/adir').entries { |entrio| ... }
46
+
47
+ # get an array of all .rb files on an ftp server
48
+ rb_files = rio('ftp://ftphost/').all.files['*.rb']
49
+
50
+ * More tests
51
+ * Bug fixes
52
+
23
53
  == Version 0.3.7
24
54
  * Maintenance release
25
55
 
@@ -20,8 +20,8 @@
20
20
  #
21
21
 
22
22
  # Modified by Christopher Kleckner
23
- # Copyright (c) 2005. Some rights reserved.
24
- # Licensed under the same terms as the original
23
+ # Copyright (c) 2005,2006. Some rights reserved.
24
+ # Licensed under the same terms as the original.
25
25
 
26
26
 
27
27
  module RDoc
@@ -483,7 +483,7 @@ CONTEXT_CONTENT = %{
483
483
  #####################################################################
484
484
  FOOTER = %{
485
485
  <div id="validator-badges">
486
- <p><small>Copyright &copy; 2005 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
486
+ <p><small>Copyright &copy; 2005, 2006 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
487
487
  </div>
488
488
 
489
489
  </body>
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -22,7 +22,7 @@
22
22
  #++
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
27
  #
28
28
  # Suggested Reading
data/lib/rio/argv.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -22,7 +22,7 @@
22
22
  #++
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
27
  #
28
28
  # Suggested Reading
data/lib/rio/arycopy.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -22,7 +22,7 @@
22
22
  #++
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
27
  #
28
28
  # Suggested Reading
data/lib/rio/assert.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -22,7 +22,7 @@
22
22
  #++
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
27
  #
28
28
  # Suggested Reading
data/lib/rio/base.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -22,7 +22,7 @@
22
22
  #++
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
27
  #
28
28
  # Suggested Reading
@@ -0,0 +1,47 @@
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 CallStr #:nodoc: all
40
+ def callstr(func,*args)
41
+ self.class.to_s+'['+self.to_url+']'+'.'+func.to_s+'('+args.join(',')+')'
42
+ end
43
+ def scallstr(func,*args)
44
+ self.class.to_s+'['+self.to_s+']'+'.'+func.to_s+'('+args.join(',')+')'
45
+ end
46
+ end
47
+ end
data/lib/rio/const.rb ADDED
@@ -0,0 +1,52 @@
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
+ module RIO
38
+ SEEK_SET = IO::SEEK_SET
39
+ SEEK_END = IO::SEEK_END
40
+ SEEK_CUR = IO::SEEK_CUR
41
+ end
42
+
43
+ if $0 == __FILE__
44
+ eval DATA.read, nil, $0, __LINE__+4
45
+ end
46
+
47
+ __END__
48
+
49
+ puts
50
+ puts("Run the tests that came with the distribution")
51
+ puts("From the distribution directory use 'test/runtests.rb'")
52
+ puts
data/lib/rio/construct.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -22,7 +22,7 @@
22
22
  #++
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
27
  #
28
28
  # Suggested Reading
@@ -39,31 +39,13 @@ module RIO
39
39
  require 'rio/ops/construct'
40
40
  include Ops::Construct
41
41
 
42
- module_function :strio
43
- module_function :stdio
44
- module_function :stderr
45
- module_function :temp
46
- module_function :tempfile
47
- module_function :tempdir
48
- module_function :tcp
49
- module_function :cmdio
50
- module_function :cmdpipe
51
- module_function :sysio
52
- module_function :fd
42
+ module_function(*RIO::CONSTRUCTOR_SYMS)
53
43
  end
54
44
 
55
45
  module RIO
56
46
  class Rio
57
- def self.strio(*args,&block) rio(:strio,*args,&block) end
58
- def self.stdio(*args,&block) rio(:stdio,*args,&block) end
59
- def self.stderr(*args,&block) rio(:stderr,*args,&block) end
60
- def self.temp(*args,&block) rio(:temp,*args,&block) end
61
- def self.tempfile(*args,&block) rio(:tempfile,*args,&block) end
62
- def self.tempdir(*args,&block) rio(:tempdir,*args,&block) end
63
- def self.tcp(*args,&block) rio(:tcp,*args,&block) end
64
- def self.cmdio(*args,&block) rio(:cmdio,*args,&block) end
65
- def self.cmdpipe(*args,&block) rio(:cmdpipe,*args,&block) end
66
- def self.sysio(*args,&block) rio(:sysio,*args,&block) end
67
- def self.fd(*args,&block) rio(:fd,*args,&block) end
47
+ RIO::CONSTRUCTOR_SYMS.each { |sym|
48
+ class_eval "def self.#{sym}(*args,&block) self.rio(:#{sym},*args,&block) end"
49
+ }
68
50
  end
69
51
  end
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -22,7 +22,7 @@
22
22
  #++
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
27
  #
28
28
  # Suggested Reading
@@ -198,6 +198,16 @@ module RIO
198
198
  #
199
199
  # This is Rio's interface to IO#popen
200
200
  #
201
+ # ===== Creating a Rio that acts like /dev/null
202
+ #
203
+ # <tt>rio(nil)</tt>
204
+ #
205
+ # <tt>rio(:null)</tt>
206
+ #
207
+ # This rio behaves like the Unix file /dev/null, but does depend on it -
208
+ # and thus will work on non-Unix systems. Reading behaves as if reading from
209
+ # an empty file, and writing to it discards anything written.
210
+ #
201
211
  # ===== Creating a Rio Pipe
202
212
  #
203
213
  # A Rio Pipe is a sequence of Rios that are run with the output of each being
@@ -0,0 +1,73 @@
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
+ require 'rio/context/cxx.rb'
39
+
40
+ module RIO
41
+ module Cx
42
+ module Methods
43
+ def closeoneof(arg=true,&block) cxx('closeoneof',arg,&block) end
44
+ def nocloseoneof(arg=false,&block) nocxx('closeoneof',arg,&block) end
45
+ def closeoneof?() cxx?('closeoneof') end
46
+ def closeoneof_(arg=true) cxx_('closeoneof',arg) end
47
+ protected :closeoneof_
48
+ end
49
+ end
50
+
51
+ module Cx
52
+ module Methods
53
+ def closeoncopy(arg=true,&block) cxx('closeoncopy',arg,&block) end
54
+ def nocloseoncopy(arg=false,&block) nocxx('closeoncopy',arg,&block) end
55
+ def closeoncopy?() cxx?('closeoncopy') end
56
+ def closeoncopy_(arg=true) cxx_('closeoncopy',arg) end
57
+ protected :closeoncopy_
58
+ end
59
+ end
60
+
61
+ module Cx
62
+ module Methods
63
+ def noautoclose(arg=false,&block)
64
+ closeoncopy(arg).closeoneof(arg,&block)
65
+ end
66
+ def noautoclose_(arg=false)
67
+ closeoncopy_(arg).closeoneof_(arg)
68
+ end
69
+ protected :noautoclose_
70
+ end
71
+ end
72
+
73
+ end
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, Christopher Kleckner
3
+ # Copyright (c) 2005, 2006 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -22,7 +22,7 @@
22
22
  #++
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
- # rake rdoc
25
+ # ruby build_doc.rb
26
26
  # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
27
  #
28
28
  # Suggested Reading