rio 0.3.7 → 0.3.8

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 (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/lib/rio/stream.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
@@ -66,9 +66,6 @@ module RIO
66
66
  include Ops::Stream::Status
67
67
  include Ops::Stream::Manip
68
68
 
69
- # def open(*args)
70
- # softreset.open(*args)
71
- # end
72
69
  def check?() open? end
73
70
  def when_missing(sym,*args)
74
71
  #p callstr('when_missing',sym,*args)
@@ -87,6 +84,9 @@ module RIO
87
84
  ioh.extend(mod)
88
85
  end
89
86
  end
87
+ # def open_(*args)
88
+ # self
89
+ # end
90
90
  def rectype_mod
91
91
  case cx['stream_rectype']
92
92
  when 'lines' then RIO::RecType::Lines
@@ -110,11 +110,6 @@ module RIO
110
110
  include Ops::Stream::Input
111
111
  include Ini
112
112
  include Filters
113
- def initialize_copy(*args)
114
- #p callstr('enter Input:initialize_copy',*args)
115
- super
116
- self.ioh.oncloseproc = proc { self.on_closeoneof } if closeoneof?
117
- end
118
113
 
119
114
  def add_extensions()
120
115
  #p callstr('add_extensions')
@@ -124,10 +119,11 @@ module RIO
124
119
  add_filter(Filter::GZipRead) if gzip?
125
120
  #add_filter(Filter::YAML) if yaml?
126
121
  add_line_filters()
127
- if closeoneof?
128
- add_filter(Filter::CloseOnEOF)
129
- ioh.oncloseproc = proc { self.on_closeoneof }
130
- end
122
+ # add_filter(Filter::FasterCSV) if csv?
123
+ # if closeoneof?
124
+ # add_filter(Filter::CloseOnEOF)
125
+ # ioh.oncloseproc = proc { self.on_closeoneof }
126
+ # end
131
127
  self
132
128
  end
133
129
  def add_rec_methods()
@@ -146,6 +142,7 @@ module RIO
146
142
  end
147
143
  def add_filters
148
144
  add_filter(Filter::GZipWrite) if gzip?
145
+ #add_filter(Filter::FasterCSV) if csv?
149
146
  #add_filter(Filter::YAML) if yaml?
150
147
  self
151
148
  end
@@ -158,11 +155,6 @@ module RIO
158
155
  include Ini
159
156
  include Filters
160
157
 
161
- def initialize_copy(*args)
162
- super
163
- self.ioh.oncloseproc = proc { self.on_closeoneof } if closeoneof?
164
- end
165
-
166
158
  def add_rec_methods()
167
159
  self.extend(rectype_mod.module_eval('Input'))
168
160
  self.extend(rectype_mod.module_eval('Output'))
@@ -175,10 +167,10 @@ module RIO
175
167
  def add_filters
176
168
  add_line_filters()
177
169
 
178
- if closeoneof?
179
- add_filter(Filter::CloseOnEOF)
180
- ioh.oncloseproc = proc { self.on_closeoneof }
181
- end
170
+ # if closeoneof?
171
+ # add_filter(Filter::CloseOnEOF)
172
+ # ioh.oncloseproc = proc { self.on_closeoneof }
173
+ # end
182
174
  self
183
175
  end
184
176
 
data/lib/rio/symantics.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/tempdir.rb CHANGED
@@ -1,132 +1,132 @@
1
- =begin rdoc
2
-
3
- == tempdir.rb - provides class Tempdir
4
-
5
- === Synopsis
6
- In order to
7
-
8
- 1. create a temporary directory with a name starting with "hoge",
9
- 2. show the name of that directory, and
10
- 3. show its properties with the system "ls -dl" command:
11
-
12
- require 'tempdir'
13
-
14
- d = Tempdir.new("hoge")
15
- p d.to_s
16
- system("ls", "-dl", d.to_s)
17
-
18
- After the run, the directory will appear to be removed. That is: if you
19
- are not running inside it, which may provide you a means to create a
20
- directory with a unique name that will be available after the run.
21
-
22
- === Description
23
- <i>tempdir.rb</i> provides the Tempdir class, which is analogous to the
24
- Tempfile class, but manipulates temporary directories. Derived from a
25
- proposal of nobu.nokada@softhome.net. He added the class to
26
- tempfile.rb, but since it does not seem to appear in cvs, I'll keep
27
- it apart in tempdir.rb.
28
-
29
- =end
30
-
31
- require 'tmpdir'
32
-
33
- module AutoRemoval
34
- MAX_TRY = 10
35
- @@cleanlist = []
36
-
37
- private
38
-
39
- def make_tmpname(basename, n)
40
- sprintf('%s%d.%d', basename, $$, n)
41
- end
42
- private :make_tmpname
43
-
44
- def createtmp(basename, tmpdir=Dir::tmpdir) # :nodoc:
45
- if $SAFE > 0 and tmpdir.tainted?
46
- tmpdir = '/tmp'
47
- end
48
-
49
- lock = nil
50
- n = failure = 0
51
-
52
- begin
53
- Thread.critical = true
54
- begin
55
- tmpname = File.join(tmpdir, make_tmpname(basename, n))
56
- n += 1
57
- end until !@@cleanlist.include?(tmpname) and yield(tmpname)
58
- rescue
59
- p $!
60
- failure += 1
61
- retry if failure < MAX_TRY
62
- raise "cannot generate tempfile `%s'" % tmpname
63
- ensure
64
- Thread.critical = false
65
- end
66
-
67
- tmpname
68
- end
69
-
70
- def self.callback(path, clear) # :nodoc:
71
- @@cleanlist << path
72
- data = [path]
73
- pid = $$
74
- return Proc.new {
75
- if pid == $$
76
- path, tmpfile = *data
77
-
78
- print "removing ", path, "..." if $DEBUG
79
-
80
- tmpfile.close if tmpfile
81
-
82
- # keep this order for thread safeness
83
- if File.exist?(path)
84
- clear.call(path)
85
- end
86
- @@cleanlist.delete(path)
87
-
88
- print "done\n" if $DEBUG
89
- end
90
- }, data
91
- end
92
-
93
- def self.unregister(path)
94
- @@cleanlist.delete(path)
95
- end
96
- end
97
-
98
- require 'pathname'
99
- class Tempdir < Pathname
100
- include AutoRemoval
101
-
102
- def initialize(*args)
103
- require 'fileutils'
104
-
105
- tmpname = createtmp(*args) do |tmpname|
106
- unless File.exist?(tmpname)
107
- Dir.mkdir(tmpname, 0700)
108
- end
109
- end
110
-
111
- super(tmpname)
112
- @clean_proc, = AutoRemoval.callback(tmpname, FileUtils.method(:rm_rf))
113
- ObjectSpace.define_finalizer(self, @clean_proc) end
114
-
115
- def open(basename, *modes, &block)
116
- File.open(self+basename, *modes, &block)
117
- end
118
-
119
- def clear
120
- FileUtils.rm_rf(@tmpname)
121
- @clean_proc.call
122
- ObjectSpace.undefine_finalizer(self)
123
- end
124
- end
125
-
126
- if __FILE__ == $0
127
- # $DEBUG = true
128
- d = Tempdir.new("hoge")
129
- p d.to_s
130
- system("ls", "-dl", d.to_s)
131
- p d
132
- end
1
+ =begin rdoc
2
+
3
+ == tempdir.rb - provides class Tempdir
4
+
5
+ === Synopsis
6
+ In order to
7
+
8
+ 1. create a temporary directory with a name starting with "hoge",
9
+ 2. show the name of that directory, and
10
+ 3. show its properties with the system "ls -dl" command:
11
+
12
+ require 'tempdir'
13
+
14
+ d = Tempdir.new("hoge")
15
+ p d.to_s
16
+ system("ls", "-dl", d.to_s)
17
+
18
+ After the run, the directory will appear to be removed. That is: if you
19
+ are not running inside it, which may provide you a means to create a
20
+ directory with a unique name that will be available after the run.
21
+
22
+ === Description
23
+ <i>tempdir.rb</i> provides the Tempdir class, which is analogous to the
24
+ Tempfile class, but manipulates temporary directories. Derived from a
25
+ proposal of nobu.nokada@softhome.net. He added the class to
26
+ tempfile.rb, but since it does not seem to appear in cvs, I'll keep
27
+ it apart in tempdir.rb.
28
+
29
+ =end
30
+
31
+ require 'tmpdir'
32
+
33
+ module AutoRemoval
34
+ MAX_TRY = 10
35
+ @@cleanlist = []
36
+
37
+ private
38
+
39
+ def make_tmpname(basename, n)
40
+ sprintf('%s%d.%d', basename, $$, n)
41
+ end
42
+ private :make_tmpname
43
+
44
+ def createtmp(basename, tmpdir=Dir::tmpdir) # :nodoc:
45
+ if $SAFE > 0 and tmpdir.tainted?
46
+ tmpdir = '/tmp'
47
+ end
48
+
49
+ lock = nil
50
+ n = failure = 0
51
+
52
+ begin
53
+ Thread.critical = true
54
+ begin
55
+ tmpname = File.join(tmpdir, make_tmpname(basename, n))
56
+ n += 1
57
+ end until !@@cleanlist.include?(tmpname) and yield(tmpname)
58
+ rescue
59
+ p $!
60
+ failure += 1
61
+ retry if failure < MAX_TRY
62
+ raise "cannot generate tempfile `%s'" % tmpname
63
+ ensure
64
+ Thread.critical = false
65
+ end
66
+
67
+ tmpname
68
+ end
69
+
70
+ def self.callback(path, clear) # :nodoc:
71
+ @@cleanlist << path
72
+ data = [path]
73
+ pid = $$
74
+ return Proc.new {
75
+ if pid == $$
76
+ path, tmpfile = *data
77
+
78
+ print "removing ", path, "..." if $DEBUG
79
+
80
+ tmpfile.close if tmpfile
81
+
82
+ # keep this order for thread safeness
83
+ if File.exist?(path)
84
+ clear.call(path)
85
+ end
86
+ @@cleanlist.delete(path)
87
+
88
+ print "done\n" if $DEBUG
89
+ end
90
+ }, data
91
+ end
92
+
93
+ def self.unregister(path)
94
+ @@cleanlist.delete(path)
95
+ end
96
+ end
97
+
98
+ require 'pathname'
99
+ class Tempdir < Pathname
100
+ include AutoRemoval
101
+
102
+ def initialize(*args)
103
+ require 'fileutils'
104
+
105
+ tmpname = createtmp(*args) do |tmpname|
106
+ unless File.exist?(tmpname)
107
+ Dir.mkdir(tmpname, 0700)
108
+ end
109
+ end
110
+
111
+ super(tmpname)
112
+ @clean_proc, = AutoRemoval.callback(tmpname, FileUtils.method(:rm_rf))
113
+ ObjectSpace.define_finalizer(self, @clean_proc) end
114
+
115
+ def open(basename, *modes, &block)
116
+ File.open(self+basename, *modes, &block)
117
+ end
118
+
119
+ def clear
120
+ FileUtils.rm_rf(@tmpname)
121
+ @clean_proc.call
122
+ ObjectSpace.undefine_finalizer(self)
123
+ end
124
+ end
125
+
126
+ if __FILE__ == $0
127
+ # $DEBUG = true
128
+ d = Tempdir.new("hoge")
129
+ p d.to_s
130
+ system("ls", "-dl", d.to_s)
131
+ p d
132
+ end
@@ -0,0 +1,40 @@
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
+ require 'rio/to_rio/object'
38
+ require 'rio/to_rio/string'
39
+ require 'rio/to_rio/array'
40
+
@@ -0,0 +1,40 @@
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
+ require 'rio/to_rio'
38
+ class Array
39
+ include RIO::ToRio::Array
40
+ end
@@ -0,0 +1,41 @@
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
+ require 'rio/to_rio'
38
+
39
+ class IO
40
+ include RIO::ToRio::IO
41
+ end
@@ -0,0 +1,43 @@
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
+ require 'rio/to_rio'
38
+
39
+ class Object
40
+ include RIO::ToRio::Object
41
+ end
42
+ require 'rio/to_rio/io'
43
+ require 'rio/to_rio/array'
@@ -0,0 +1,41 @@
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
+ require 'rio/to_rio'
38
+
39
+ class String
40
+ include RIO::ToRio::String
41
+ end
data/lib/rio/to_rio.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
@@ -37,6 +37,11 @@
37
37
 
38
38
  module RIO
39
39
  module ToRio #:nodoc: all
40
+ module IO
41
+ def to_rio()
42
+ rio(self)
43
+ end
44
+ end
40
45
  module Object
41
46
  def to_rio()
42
47
  rio(self.to_s)
@@ -49,9 +54,15 @@ module RIO
49
54
  end
50
55
  end
51
56
  module Array
57
+ def /(arg)
58
+ rio(self) / arg
59
+ end
52
60
  def to_rio()
53
61
  rio(self)
54
62
  end
63
+ def to_rios()
64
+ self.map { |path| rio(path) }
65
+ end
55
66
  end
56
67
  end
57
68
  end
data/lib/rio/uri/file.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/util.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