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,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, 2006 Christopher Kleckner
3
+ # Copyright (c) 2005,2006,2007 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -23,16 +23,15 @@
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
25
  # ruby build_doc.rb
26
- # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
26
+ # from the distribution directory.
27
27
  #
28
28
  # Suggested Reading
29
29
  # * RIO::Doc::SYNOPSIS
30
30
  # * RIO::Doc::INTRO
31
31
  # * RIO::Doc::HOWTO
32
+ # * RIO::Doc::EXAMPLES
32
33
  # * RIO::Rio
33
34
  #
34
- # <b>Rio is pre-alpha software.
35
- # The documented interface and behavior is subject to change without notice.</b>
36
35
 
37
36
 
38
37
  module RIO
@@ -40,7 +39,45 @@ module RIO
40
39
  # Returns the String associated with a Rio which references a StringIO object.
41
40
  # For any other type of Rio, is undefined.
42
41
  def string() target.string end
43
-
44
42
  end
45
43
  end
46
44
 
45
+ module RIO
46
+ module IF
47
+ module String
48
+
49
+ # Create a Rio referencing Rio#to_str + arg.to_str
50
+ #
51
+ # rio('afile') + '-0.1' #=> rio('afile-0.1')
52
+ #
53
+ def +(arg) target + arg end
54
+
55
+ # Create a new Rio referencing the result of applying ::String#sub to the
56
+ # value returned by Rio#to_s. So:
57
+ #
58
+ # ario.sub(re,string)
59
+ # is equivelent to
60
+ # rio(ario.to_s.sub(re,string))
61
+ #
62
+ # See also #gsub, #+
63
+ def sub(re,string) target.sub(re,string) end
64
+
65
+ # Create a new Rio referencing the result of applying ::String#gsub to the
66
+ # value returned by Rio#to_s. So:
67
+ #
68
+ # ario.gsub(re,string)
69
+ # is equivelent to
70
+ # rio(ario.to_s.gsub(re,string))
71
+ #
72
+ # See also #sub #+
73
+ def gsub(re,string) target.gsub(re,string) end
74
+
75
+
76
+ end
77
+ end
78
+ end
79
+ module RIO
80
+ class Rio
81
+ include RIO::IF::String
82
+ end
83
+ end
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, 2006 Christopher Kleckner
3
+ # Copyright (c) 2005,2006,2007 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -23,16 +23,15 @@
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
25
  # ruby build_doc.rb
26
- # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
26
+ # from the distribution directory.
27
27
  #
28
28
  # Suggested Reading
29
29
  # * RIO::Doc::SYNOPSIS
30
30
  # * RIO::Doc::INTRO
31
31
  # * RIO::Doc::HOWTO
32
+ # * RIO::Doc::EXAMPLES
32
33
  # * RIO::Rio
33
34
  #
34
- # <b>Rio is pre-alpha software.
35
- # The documented interface and behavior is subject to change without notice.</b>
36
35
 
37
36
 
38
37
  module RIO
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # ===============================================================================
3
- # Copyright (c) 2005, 2006 Christopher Kleckner
3
+ # Copyright (c) 2005,2006,2007 Christopher Kleckner
4
4
  # All rights reserved
5
5
  #
6
6
  # This file is part of the Rio library for ruby.
@@ -23,253 +23,260 @@
23
23
  #
24
24
  # To create the documentation for Rio run the command
25
25
  # ruby build_doc.rb
26
- # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
26
+ # from the distribution directory.
27
27
  #
28
28
  # Suggested Reading
29
29
  # * RIO::Doc::SYNOPSIS
30
30
  # * RIO::Doc::INTRO
31
31
  # * RIO::Doc::HOWTO
32
+ # * RIO::Doc::EXAMPLES
32
33
  # * RIO::Rio
33
34
  #
34
- # <b>Rio is pre-alpha software.
35
- # The documented interface and behavior is subject to change without notice.</b>
36
35
 
37
36
 
37
+ module RIO
38
+ module IF
39
+ module Test
40
+ # Calls FileTest#blockdev?
41
+ # rio('afile').blockdev? => true or false
42
+ # Returns +true+ if the named file is a block device.
43
+ def blockdev?() target.blockdev?() end
44
+
45
+ # Calls FileTest#chardev?
46
+ # rio('afile').chardev? => true or false
47
+ # Returns +true+ if the named file is a character device.
48
+ def chardev?() target.chardev? end
49
+
50
+ # Calls FileTest#directory?
51
+ # rio('afile').directory? => true or false
52
+ # Returns +true+ if the named file is a directory, +false+ otherwise.
53
+ def directory?() target.directory? end
54
+
55
+ # Alias for #directory?
56
+ def dir?() target.dir? end
57
+
58
+ # Calls FileTest#exist?
59
+ # rio('afile').exist?() => true or false
60
+ # Returns +true+ if the named file exists.
61
+ def exist?() target.exist? end
62
+
63
+ # Calls FileTest#file?
64
+ # rio('afile').file? => true or false
65
+ # Returns +true+ if the named file exists and is a regular file.
66
+ def file?() target.file? end
67
+
68
+ # Calls FileTest#socket?
69
+ # rio('afile').socket? => true or false
70
+ # Returns +true+ if the named file is a socket.
71
+ def socket?() target.socket? end
72
+
73
+ # Calls FileTest#symlink?
74
+ # rio('afile').symlink? => true or false
75
+ # Returns +true+ if the named file is a symbolic link.
76
+ def symlink?() target.symlink? end
77
+
78
+ # Returns +true+ if a Rio is not #closed?
79
+ def open?() target.open?() end
80
+
81
+ # Calls IO#closed?
82
+ # ario.closed? => true or false
83
+ # Returns +true+ if _ario_ is completely closed (for duplex streams,
84
+ # both reader and writer), +false+ otherwise.
85
+ def closed?() target.closed?() end
86
+
87
+ # call-seq:
88
+ # fnmatch?( pattern, [flags] ) => (true or false)
89
+ #
90
+ # Calls File#fnmatch?
91
+ #
92
+ # Returns true if IF::Path#path matches <i>pattern</i>. The
93
+ # pattern is not a regular expression; instead it follows rules
94
+ # similar to shell filename globbing. It may contain the following
95
+ # metacharacters:
96
+ #
97
+ # <i>flags</i> is a bitwise OR of the <code>FNM_xxx</code> parameters.
98
+ # The same glob pattern and flags are used by <code>Dir::glob</code>.
99
+ #
100
+ # rio('cat').fnmatch?('cat') #=> true
101
+ # rio('category').fnmatch?('cat') #=> false
102
+ # rio('cats').fnmatch?('c{at,ub}s') #=> false
103
+ # rio('cubs').fnmatch?('c{at,ub}s') #=> false
104
+ # rio('cat').fnmatch?('c{at,ub}s') #=> false
105
+ #
106
+ # rio('cat').fnmatch?('c?t') #=> true
107
+ # rio('cat').fnmatch?('c\?t') #=> false
108
+ # rio('cat').fnmatch?('c??t') #=> false
109
+ # rio('cats').fnmatch?('c*') #=> true
110
+ #
111
+ # rio('cat').fnmatch?('c*t') #=> true
112
+ # rio('cat').fnmatch?('c\at') #=> true
113
+ # rio('cat').fnmatch?('c\at',File::FNM_NOESCAPE) #=> false
114
+ # rio('a/b').fnmatch?('a?b') #=> true
115
+ # rio('a/b').fnmatch?('a?b',File::FNM_PATHNAME) #=> false
116
+ #
117
+ # rio('.profile').fnmatch?('*') #=> false
118
+ # rio('.profile').fnmatch?('*',File::FNM_DOTMATCH) #=> true
119
+ # rio('dave/.profile').fnmatch?('*') #=> true
120
+ # rio('dave/.profile').fnmatch?('*',File::FNM_DOTMATCH) #=> true
121
+ # rio('dave/.profile').fnmatch?('*',File::FNM_PATHNAME) #=> false
122
+ #
123
+ def fnmatch?(*args) target.fnmatch?(*args) end
124
+
125
+ # Calls File#ftype
126
+ #
127
+ # Identifies the type of the named file; the return string is one of 'file�, 'directory�,
128
+ # 'characterSpecial�, 'blockSpecial�, 'fifo�, 'link�, 'socket�, or 'unknown�.
129
+ def ftype(*args) target.ftype(*args) end
130
+
131
+ # Calls File#stat
132
+ def stat(*args) target.stat(*args) end
133
+
134
+ # Calls File#lstat
135
+ def lstat(*args) target.lstat(*args) end
136
+
137
+ # Calls FileTest#pipe?
138
+ # rio('afile').pipe? => true or false
139
+ # Returns +true+ if the named file is a pipe.
140
+ def pipe?() target.pipe?() end
141
+
142
+
143
+ # Calls File#atime
144
+ #
145
+ # Returns the last access time (a Time object) for the file system object referenced
146
+ def atime(*args) target.atime(*args) end
147
+
148
+ # Calls File#ctime
149
+ #
150
+ # Returns the change time for Rios that reference file system object (that is,
151
+ # the time directory information about the file was changed, not the file itself).
152
+ def ctime(*args) target.ctime(*args) end
153
+
154
+ # Calls File#mtime
155
+ #
156
+ # Returns the modification time for Rio that reference file system objects
157
+ def mtime(*args) target.mtime(*args) end
158
+
159
+ # Calls File#executable?
160
+ #
161
+ # Returns true if the file is executable by the effective user id of this process.
162
+ def executable?(*args) target.executable?(*args) end
163
+
164
+ # Calls File#executable_real?
165
+ #
166
+ # Returns true if the file is executable by the real user id of this process.
167
+ def executable_real?(*args) target.executable_real?(*args) end
168
+
169
+ # Calls FileTest#readable?
170
+ # rio('afile').readable? => true or false
171
+ # Returns +true+ if the named file is readable by the effective user
172
+ # id of this process.
173
+ def readable?(*args) target.readable?(*args) end
174
+
175
+ # Calls FileTest#readable_real?
176
+ # rio('afile').readable_real? => true or false
177
+ # Returns +true+ if the named file is readable by the real user id of
178
+ # this process.
179
+ def readable_real?(*args) target.readable_real?(*args) end
180
+
181
+ # Calls FileTest#writable?
182
+ # rio('afile').writable? => true or false
183
+ # Returns +true+ if the named file is writable by the effective user
184
+ # id of this process.
185
+ def writable?(*args) target.writable?(*args) end
186
+
187
+ # Calls FileTest#writable_real?
188
+ # rio('afile').writable_real? => true or false
189
+ # Returns +true+ if the named file is writable by the real user id of
190
+ # this process.
191
+ def writable_real?(*args) target.writable_real?(*args) end
192
+
193
+ # Calls FileTest#sticky?
194
+ # rio('afile').sticky? => true or false
195
+ # Returns +true+ if the named file is a has the sticky bit set.
196
+ def sticky?(*args) target.sticky?(*args) end
197
+
198
+ # Calls FileTest#owned?
199
+ # rio('afile').owned? => true or false
200
+ # Returns +true+ if the named file exists and the effective used id
201
+ # of the calling process is the owner of the file.
202
+ def owned?(*args) target.owned?(*args) end
203
+
204
+ # Calls FileTest#grpowned?
205
+ # rio('afile').grpowned? => true or false
206
+ # Returns +true+ if the named file exists and the effective group id
207
+ # of the calling process is the owner of the file. Returns +false+ on
208
+ # Windows.
209
+ def grpowned?(*args) target.grpowned?(*args) end
210
+
211
+ # Calls FileTest#setgid?
212
+ # rio('afile').setgid? => true or false
213
+ # Returns +true+ if the named file is a has the setgid bit set.
214
+ def setgid?(*args) target.setgid?(*args) end
215
+
216
+ # Calls FileTest#setuid?
217
+ # rio('afile').setuid? => true or false
218
+ # Returns +true+ if the named file is a has the setuid bit set.
219
+ def setuid?(*args) target.setuid?(*args) end
220
+
221
+ # Calls FileTest#size
222
+ # rio('afile').size => integer
223
+ # Returns the size of _afile_.
224
+ # To get the length of the Rio's string representation use Rio#length
225
+ def size(*args) target.size(*args) end
226
+
227
+ # Calls FileTest#size?
228
+ # rio('afile').size? => integer or nil
229
+ # Returns +nil+ if _afile_ doesn't exist or has zero size, the
230
+ # size of the file otherwise.
231
+ def size?(*args) target.size?(*args) end
232
+
233
+ # Calls FileTest#zero?
234
+ # rio('afile').zero? => true or false
235
+ # Returns +true+ if the named file exists and has a zero size.
236
+ def zero?(*args) target.zero?(*args) end
237
+
238
+
239
+ # Returns true if the rio represents and absolute path or URI. Alias for IF::Test#absolute?
240
+ #
241
+ # rio('/tmp').abs? # >> true
242
+ # rio('.ssh').abs? # >> false
243
+ # rio('file:///tmp').abs? # >> true
244
+ # rio('http://www.ruby-doc.org/').abs? # >> true
245
+ #
246
+ def abs?() target.abs?() end
247
+
248
+
249
+ # Returns true if the Rio represents and absolute path or URI. Calls URI#absolute?
250
+ #
251
+ # rio('/tmp').absolute? # >> true
252
+ # rio('.ssh').absolute? # >> false
253
+ # rio('file:///tmp').absolute? # >> true
254
+ # rio('http://www.ruby-doc.org/').absolute? # >> true
255
+ #
256
+ def absolute?() target.absolute?() end
257
+
258
+ # Calls Pathname#mountpoint?
259
+ #
260
+ # Returns +true+ if <tt>self</tt> points to a mountpoint.
261
+ def mountpoint?() target.mountpoint?() end
262
+
263
+ # Calls Pathname#root?
264
+ #
265
+ # #root? is a predicate for root directories. I.e. it returns +true+ if the
266
+ # pathname consists of consecutive slashes.
267
+ #
268
+ # It doesn't access the actual filesystem. So it may return +false+ for some
269
+ # pathnames which points to roots such as <tt>/usr/..</tt>.
270
+ #
271
+ def root?() target.root?() end
272
+
273
+
274
+ end
275
+ end
276
+ end
277
+
38
278
  module RIO
39
279
  class Rio
40
- # Calls FileTest#blockdev?
41
- # rio('afile').blockdev? => true or false
42
- # Returns +true+ if the named file is a block device.
43
- def blockdev?() target.blockdev?() end
44
-
45
- # Calls FileTest#chardev?
46
- # rio('afile').chardev? => true or false
47
- # Returns +true+ if the named file is a character device.
48
- def chardev?() target.chardev? end
49
-
50
- # Calls FileTest#directory?
51
- # rio('afile').directory? => true or false
52
- # Returns +true+ if the named file is a directory, +false+ otherwise.
53
- def directory?() target.directory? end
54
-
55
- # Alias for #directory?
56
- def dir?() target.dir? end
57
-
58
- # Calls FileTest#exist?
59
- # rio('afile').exist?() => true or false
60
- # Returns +true+ if the named file exists.
61
- def exist?() target.exist? end
62
-
63
- # Calls FileTest#file?
64
- # rio('afile').file? => true or false
65
- # Returns +true+ if the named file exists and is a regular file.
66
- def file?() target.file? end
67
-
68
- # Calls FileTest#socket?
69
- # rio('afile').socket? => true or false
70
- # Returns +true+ if the named file is a socket.
71
- def socket?() target.socket? end
72
-
73
- # Calls FileTest#symlink?
74
- # rio('afile').symlink? => true or false
75
- # Returns +true+ if the named file is a symbolic link.
76
- def symlink?() target.symlink? end
77
-
78
- # Returns +true+ if a Rio is not #closed?
79
- def open?() target.open?() end
80
-
81
- # Calls IO#closed?
82
- # ario.closed? => true or false
83
- # Returns +true+ if _ario_ is completely closed (for duplex streams,
84
- # both reader and writer), +false+ otherwise.
85
- def closed?() target.closed?() end
86
-
87
- # call-seq:
88
- # fnmatch?( pattern, [flags] ) => (true or false)
89
- #
90
- # Calls File#fnmatch?
91
- #
92
- # Returns true if Rio#path matches <i>pattern</i>. The
93
- # pattern is not a regular expression; instead it follows rules
94
- # similar to shell filename globbing. It may contain the following
95
- # metacharacters:
96
- #
97
- # <i>flags</i> is a bitwise OR of the <code>FNM_xxx</code> parameters.
98
- # The same glob pattern and flags are used by <code>Dir::glob</code>.
99
- #
100
- # rio('cat').fnmatch?('cat') #=> true
101
- # rio('category').fnmatch?('cat') #=> false
102
- # rio('cats').fnmatch?('c{at,ub}s') #=> false
103
- # rio('cubs').fnmatch?('c{at,ub}s') #=> false
104
- # rio('cat').fnmatch?('c{at,ub}s') #=> false
105
- #
106
- # rio('cat').fnmatch?('c?t') #=> true
107
- # rio('cat').fnmatch?('c\?t') #=> false
108
- # rio('cat').fnmatch?('c??t') #=> false
109
- # rio('cats').fnmatch?('c*') #=> true
110
- #
111
- # rio('cat').fnmatch?('c*t') #=> true
112
- # rio('cat').fnmatch?('c\at') #=> true
113
- # rio('cat').fnmatch?('c\at',File::FNM_NOESCAPE) #=> false
114
- # rio('a/b').fnmatch?('a?b') #=> true
115
- # rio('a/b').fnmatch?('a?b',File::FNM_PATHNAME) #=> false
116
- #
117
- # rio('.profile').fnmatch?('*') #=> false
118
- # rio('.profile').fnmatch?('*',File::FNM_DOTMATCH) #=> true
119
- # rio('dave/.profile').fnmatch?('*') #=> true
120
- # rio('dave/.profile').fnmatch?('*',File::FNM_DOTMATCH) #=> true
121
- # rio('dave/.profile').fnmatch?('*',File::FNM_PATHNAME) #=> false
122
- #
123
- def fnmatch?(*args) target.fnmatch?(*args) end
124
-
125
- # Calls File#ftype
126
- #
127
- # Identifies the type of the named file; the return string is one of 'file�, 'directory�,
128
- # 'characterSpecial�, 'blockSpecial�, 'fifo�, 'link�, 'socket�, or 'unknown�.
129
- def ftype(*args) target.ftype(*args) end
130
-
131
- # Calls File#stat
132
- def stat(*args) target.stat(*args) end
133
-
134
- # Calls File#lstat
135
- def lstat(*args) target.lstat(*args) end
136
-
137
- # Calls FileTest#pipe?
138
- # rio('afile').pipe? => true or false
139
- # Returns +true+ if the named file is a pipe.
140
- def pipe?() target.pipe?() end
141
-
142
-
143
- # Calls File#atime
144
- #
145
- # Returns the last access time (a Time object) for the file system object referenced
146
- def atime(*args) target.atime(*args) end
147
-
148
- # Calls File#ctime
149
- #
150
- # Returns the change time for Rios that reference file system object (that is,
151
- # the time directory information about the file was changed, not the file itself).
152
- def ctime(*args) target.ctime(*args) end
153
-
154
- # Calls File#mtime
155
- #
156
- # Returns the modification time for Rio that reference file system objects
157
- def mtime(*args) target.mtime(*args) end
158
-
159
- # Calls File#executable?
160
- #
161
- # Returns true if the file is executable by the effective user id of this process.
162
- def executable?(*args) target.executable?(*args) end
163
-
164
- # Calls File#executable_real?
165
- #
166
- # Returns true if the file is executable by the real user id of this process.
167
- def executable_real?(*args) target.executable_real?(*args) end
168
-
169
- # Calls FileTest#readable?
170
- # rio('afile').readable? => true or false
171
- # Returns +true+ if the named file is readable by the effective user
172
- # id of this process.
173
- def readable?(*args) target.readable?(*args) end
174
-
175
- # Calls FileTest#readable_real?
176
- # rio('afile').readable_real? => true or false
177
- # Returns +true+ if the named file is readable by the real user id of
178
- # this process.
179
- def readable_real?(*args) target.readable_real?(*args) end
180
-
181
- # Calls FileTest#writable?
182
- # rio('afile').writable? => true or false
183
- # Returns +true+ if the named file is writable by the effective user
184
- # id of this process.
185
- def writable?(*args) target.writable?(*args) end
186
-
187
- # Calls FileTest#writable_real?
188
- # rio('afile').writable_real? => true or false
189
- # Returns +true+ if the named file is writable by the real user id of
190
- # this process.
191
- def writable_real?(*args) target.writable_real?(*args) end
192
-
193
- # Calls FileTest#sticky?
194
- # rio('afile').sticky? => true or false
195
- # Returns +true+ if the named file is a has the sticky bit set.
196
- def sticky?(*args) target.sticky?(*args) end
197
-
198
- # Calls FileTest#owned?
199
- # rio('afile').owned? => true or false
200
- # Returns +true+ if the named file exists and the effective used id
201
- # of the calling process is the owner of the file.
202
- def owned?(*args) target.owned?(*args) end
203
-
204
- # Calls FileTest#grpowned?
205
- # rio('afile').grpowned? => true or false
206
- # Returns +true+ if the named file exists and the effective group id
207
- # of the calling process is the owner of the file. Returns +false+ on
208
- # Windows.
209
- def grpowned?(*args) target.grpowned?(*args) end
210
-
211
- # Calls FileTest#setgid?
212
- # rio('afile').setgid? => true or false
213
- # Returns +true+ if the named file is a has the setgid bit set.
214
- def setgid?(*args) target.setgid?(*args) end
215
-
216
- # Calls FileTest#setuid?
217
- # rio('afile').setuid? => true or false
218
- # Returns +true+ if the named file is a has the setuid bit set.
219
- def setuid?(*args) target.setuid?(*args) end
220
-
221
- # Calls FileTest#size
222
- # rio('afile').size => integer
223
- # Returns the size of _afile_.
224
- # To get the length of the Rio's string representation use Rio#length
225
- def size(*args) target.size(*args) end
226
-
227
- # Calls FileTest#size?
228
- # rio('afile').size? => integer or nil
229
- # Returns +nil+ if _afile_ doesn't exist or has zero size, the
230
- # size of the file otherwise.
231
- def size?(*args) target.size?(*args) end
232
-
233
- # Calls FileTest#zero?
234
- # rio('afile').zero? => true or false
235
- # Returns +true+ if the named file exists and has a zero size.
236
- def zero?(*args) target.zero?(*args) end
237
-
238
-
239
- # Returns true if the rio represents and absolute path or URI. Alias for Rio#absolute?
240
- #
241
- # rio('/tmp').abs? # >> true
242
- # rio('.ssh').abs? # >> false
243
- # rio('file:///tmp').abs? # >> true
244
- # rio('http://www.ruby-doc.org/').abs? # >> true
245
- #
246
- def abs?() target.abs?() end
247
-
248
-
249
- # Returns true if the Rio represents and absolute path or URI. Calls URI#absolute?
250
- #
251
- # rio('/tmp').absolute? # >> true
252
- # rio('.ssh').absolute? # >> false
253
- # rio('file:///tmp').absolute? # >> true
254
- # rio('http://www.ruby-doc.org/').absolute? # >> true
255
- #
256
- def absolute?() target.absolute?() end
257
-
258
- # Calls Pathname#mountpoint?
259
- #
260
- # Returns +true+ if <tt>self</tt> points to a mountpoint.
261
- def mountpoint?() target.mountpoint?() end
262
-
263
- # Calls Pathname#root?
264
- #
265
- # #root? is a predicate for root directories. I.e. it returns +true+ if the
266
- # pathname consists of consecutive slashes.
267
- #
268
- # It doesn't access the actual filesystem. So it may return +false+ for some
269
- # pathnames which points to roots such as <tt>/usr/..</tt>.
270
- #
271
- def root?() target.root?() end
272
-
273
-
280
+ include RIO::IF::Test
274
281
  end
275
282
  end