wishdev-rio 0.4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +341 -0
- data/README +81 -0
- data/Rakefile +281 -0
- data/build_doc.rb +94 -0
- data/doc/ANNOUNCE +159 -0
- data/doc/RELEASE_NOTES +308 -0
- data/doc/RIOIS +215 -0
- data/doc/generators/template/html/rio.css +428 -0
- data/doc/generators/template/html/rio.rb +523 -0
- data/doc/generators/template/html/ugly.rb +132 -0
- data/doc/pkg_def.rb +60 -0
- data/doc/rfc1738.txt +1403 -0
- data/doc/rfc959.txt +3933 -0
- data/ex/catcsv.rb +64 -0
- data/ex/colx.rb +8 -0
- data/ex/findinruby +15 -0
- data/ex/findruby +14 -0
- data/ex/passwd_report.rb +8 -0
- data/ex/prompt.rb +25 -0
- data/ex/rgb.txt.gz +0 -0
- data/ex/riocat +42 -0
- data/ex/riogunzip +31 -0
- data/ex/riogzip +24 -0
- data/ex/rioprompt.rb +10 -0
- data/ex/targz2zip +17 -0
- data/ex/tonl +10 -0
- data/lib/rio/abstract_method.rb +56 -0
- data/lib/rio/argv.rb +56 -0
- data/lib/rio/arycopy.rb +43 -0
- data/lib/rio/assert.rb +114 -0
- data/lib/rio/base.rb +56 -0
- data/lib/rio/callstr.rb +46 -0
- data/lib/rio/const.rb +51 -0
- data/lib/rio/construct.rb +50 -0
- data/lib/rio/constructor.rb +258 -0
- data/lib/rio/context/autoclose.rb +72 -0
- data/lib/rio/context/copying.rb +55 -0
- data/lib/rio/context/cxx.rb +66 -0
- data/lib/rio/context/dir.rb +120 -0
- data/lib/rio/context/gzip.rb +50 -0
- data/lib/rio/context/methods.rb +182 -0
- data/lib/rio/context/skip.rb +66 -0
- data/lib/rio/context/stream.rb +229 -0
- data/lib/rio/context.rb +117 -0
- data/lib/rio/cp.rb +370 -0
- data/lib/rio/def.rb +53 -0
- data/lib/rio/dir.rb +144 -0
- data/lib/rio/doc/EXAMPLES.rb +299 -0
- data/lib/rio/doc/HOWTO.rb +737 -0
- data/lib/rio/doc/INDEX.rb +311 -0
- data/lib/rio/doc/INTRO.rb +1068 -0
- data/lib/rio/doc/OPTIONAL.rb +130 -0
- data/lib/rio/doc/SYNOPSIS.rb +183 -0
- data/lib/rio/doc.rb +45 -0
- data/lib/rio/entrysel.rb +246 -0
- data/lib/rio/exception/copy.rb +97 -0
- data/lib/rio/exception/notimplemented.rb +57 -0
- data/lib/rio/exception/notsupported.rb +46 -0
- data/lib/rio/exception/open.rb +61 -0
- data/lib/rio/exception/state.rb +73 -0
- data/lib/rio/exception.rb +41 -0
- data/lib/rio/ext/csv.rb +351 -0
- data/lib/rio/ext/if.rb +45 -0
- data/lib/rio/ext/mp3info.rb +80 -0
- data/lib/rio/ext/splitlines.rb +253 -0
- data/lib/rio/ext/yaml/doc.rb +133 -0
- data/lib/rio/ext/yaml/tie.rb +149 -0
- data/lib/rio/ext/yaml.rb +164 -0
- data/lib/rio/ext/zipfile/fs.rb +116 -0
- data/lib/rio/ext/zipfile/rl.rb +251 -0
- data/lib/rio/ext/zipfile/rootdir.rb +117 -0
- data/lib/rio/ext/zipfile/state.rb +161 -0
- data/lib/rio/ext/zipfile/wrap.rb +204 -0
- data/lib/rio/ext/zipfile.rb +110 -0
- data/lib/rio/ext.rb +138 -0
- data/lib/rio/factory.rb +436 -0
- data/lib/rio/file.rb +118 -0
- data/lib/rio/filter/closeoneof.rb +103 -0
- data/lib/rio/filter/gzip.rb +70 -0
- data/lib/rio/filter.rb +94 -0
- data/lib/rio/fs/base.rb +41 -0
- data/lib/rio/fs/impl.rb +122 -0
- data/lib/rio/fs/native.rb +75 -0
- data/lib/rio/fs/stream.rb +61 -0
- data/lib/rio/fs/url.rb +63 -0
- data/lib/rio/ftp/conncache.rb +101 -0
- data/lib/rio/ftp/dir.rb +94 -0
- data/lib/rio/ftp/fs.rb +180 -0
- data/lib/rio/ftp/ftpfile.rb +20 -0
- data/lib/rio/grande.rb +97 -0
- data/lib/rio/handle.rb +100 -0
- data/lib/rio/if/basic.rb +64 -0
- data/lib/rio/if/csv.rb +76 -0
- data/lib/rio/if/dir.rb +157 -0
- data/lib/rio/if/file.rb +89 -0
- data/lib/rio/if/fileordir.rb +268 -0
- data/lib/rio/if/grande.rb +729 -0
- data/lib/rio/if/grande_entry.rb +379 -0
- data/lib/rio/if/grande_stream.rb +693 -0
- data/lib/rio/if/internal.rb +125 -0
- data/lib/rio/if/path.rb +462 -0
- data/lib/rio/if/rubyio.rb +681 -0
- data/lib/rio/if/string.rb +83 -0
- data/lib/rio/if/temp.rb +45 -0
- data/lib/rio/if/test.rb +282 -0
- data/lib/rio/if/yaml.rb +206 -0
- data/lib/rio/if.rb +64 -0
- data/lib/rio/ioh.rb +162 -0
- data/lib/rio/iomode.rb +109 -0
- data/lib/rio/ios/fail.rb +106 -0
- data/lib/rio/ios/generic.rb +119 -0
- data/lib/rio/ios/mode.rb +60 -0
- data/lib/rio/ios/null.rb +119 -0
- data/lib/rio/iowrap.rb +128 -0
- data/lib/rio/kernel.rb +54 -0
- data/lib/rio/local.rb +62 -0
- data/lib/rio/match.rb +53 -0
- data/lib/rio/matchrecord.rb +283 -0
- data/lib/rio/no_warn.rb +49 -0
- data/lib/rio/nullio.rb +159 -0
- data/lib/rio/open3.rb +68 -0
- data/lib/rio/ops/construct.rb +61 -0
- data/lib/rio/ops/create.rb +77 -0
- data/lib/rio/ops/dir.rb +346 -0
- data/lib/rio/ops/either.rb +134 -0
- data/lib/rio/ops/file.rb +102 -0
- data/lib/rio/ops/path.rb +296 -0
- data/lib/rio/ops/stream/input.rb +267 -0
- data/lib/rio/ops/stream/output.rb +100 -0
- data/lib/rio/ops/stream/read.rb +86 -0
- data/lib/rio/ops/stream/write.rb +57 -0
- data/lib/rio/ops/stream.rb +87 -0
- data/lib/rio/ops/symlink.rb +80 -0
- data/lib/rio/path/reset.rb +69 -0
- data/lib/rio/path.rb +129 -0
- data/lib/rio/piper/cp.rb +80 -0
- data/lib/rio/piper.rb +122 -0
- data/lib/rio/prompt.rb +66 -0
- data/lib/rio/rectype.rb +88 -0
- data/lib/rio/rl/base.rb +118 -0
- data/lib/rio/rl/builder.rb +117 -0
- data/lib/rio/rl/chmap.rb +66 -0
- data/lib/rio/rl/fs2url.rb +82 -0
- data/lib/rio/rl/ioi.rb +78 -0
- data/lib/rio/rl/path.rb +110 -0
- data/lib/rio/rl/pathmethods.rb +116 -0
- data/lib/rio/rl/uri.rb +200 -0
- data/lib/rio/rl/withpath.rb +296 -0
- data/lib/rio/scheme/aryio.rb +88 -0
- data/lib/rio/scheme/cmdio.rb +80 -0
- data/lib/rio/scheme/cmdpipe.rb +118 -0
- data/lib/rio/scheme/fd.rb +65 -0
- data/lib/rio/scheme/ftp.rb +141 -0
- data/lib/rio/scheme/http.rb +78 -0
- data/lib/rio/scheme/null.rb +55 -0
- data/lib/rio/scheme/path.rb +98 -0
- data/lib/rio/scheme/stderr.rb +55 -0
- data/lib/rio/scheme/stdio.rb +71 -0
- data/lib/rio/scheme/strio.rb +87 -0
- data/lib/rio/scheme/sysio.rb +63 -0
- data/lib/rio/scheme/tcp.rb +75 -0
- data/lib/rio/scheme/temp.rb +200 -0
- data/lib/rio/state/error.rb +72 -0
- data/lib/rio/state.rb +242 -0
- data/lib/rio/stream/base.rb +54 -0
- data/lib/rio/stream/duplex.rb +79 -0
- data/lib/rio/stream/open.rb +202 -0
- data/lib/rio/stream.rb +181 -0
- data/lib/rio/symantics.rb +45 -0
- data/lib/rio/tempdir.rb +132 -0
- data/lib/rio/to_rio/all.rb +39 -0
- data/lib/rio/to_rio/array.rb +39 -0
- data/lib/rio/to_rio/io.rb +40 -0
- data/lib/rio/to_rio/object.rb +42 -0
- data/lib/rio/to_rio/string.rb +40 -0
- data/lib/rio/to_rio.rb +67 -0
- data/lib/rio/uri/file.rb +198 -0
- data/lib/rio/util.rb +48 -0
- data/lib/rio/version.rb +51 -0
- data/lib/rio.rb +162 -0
- data/setup.rb +1360 -0
- data/test/bin/count_lines.rb +11 -0
- data/test/bin/find_lines.rb +13 -0
- data/test/bin/list_dir.rb +14 -0
- data/test/ftp/all.rb +9 -0
- data/test/ftp/anon_copy_data.rb +36 -0
- data/test/ftp/anon_misc.rb +124 -0
- data/test/ftp/anon_read.rb +105 -0
- data/test/ftp/anon_special.rb +68 -0
- data/test/ftp/anon_write.rb +70 -0
- data/test/ftp/ftp2ftp.rb +51 -0
- data/test/ftp/initftpfiles.rb +14 -0
- data/test/ftp/testdef.rb +55 -0
- data/test/gem_runtests.rb +15 -0
- data/test/http/all.rb +4 -0
- data/test/http/copy-from-http.rb +141 -0
- data/test/http/uri-meta.rb +72 -0
- data/test/lib/temp_server.rb +46 -0
- data/test/runalltests.rb +17 -0
- data/test/runftptests.rb +14 -0
- data/test/runhttp.rb +11 -0
- data/test/runhttptests.rb +14 -0
- data/test/runtests.rb +52 -0
- data/test/tc/abs.rb +355 -0
- data/test/tc/all.rb +80 -0
- data/test/tc/base.rb +31 -0
- data/test/tc/base2.rb +87 -0
- data/test/tc/cd1.rb +113 -0
- data/test/tc/clearsel.rb +68 -0
- data/test/tc/clone.rb +208 -0
- data/test/tc/closeoncopy.rb +102 -0
- data/test/tc/closeoneof.rb +194 -0
- data/test/tc/cmdpipe.rb +149 -0
- data/test/tc/copy-dir-samevar.rb +91 -0
- data/test/tc/copy-from.rb +129 -0
- data/test/tc/copy-to.rb +91 -0
- data/test/tc/copy.rb +74 -0
- data/test/tc/copyarray.rb +188 -0
- data/test/tc/copydest.rb +50 -0
- data/test/tc/copydir.rb +166 -0
- data/test/tc/copydirlines.rb +121 -0
- data/test/tc/copylines.rb +46 -0
- data/test/tc/copynonex.rb +118 -0
- data/test/tc/copysymlink.rb +39 -0
- data/test/tc/create.rb +114 -0
- data/test/tc/csv.rb +226 -0
- data/test/tc/csv2.rb +138 -0
- data/test/tc/csv_columns.rb +37 -0
- data/test/tc/csvutil.rb +56 -0
- data/test/tc/dir.rb +76 -0
- data/test/tc/dir_iter.rb +383 -0
- data/test/tc/dirautoclose.rb +67 -0
- data/test/tc/dirent.rb +178 -0
- data/test/tc/dirss.rb +81 -0
- data/test/tc/each.rb +111 -0
- data/test/tc/each_break.rb +243 -0
- data/test/tc/edf.rb +81 -0
- data/test/tc/empty.rb +51 -0
- data/test/tc/emptyriodir.rb +129 -0
- data/test/tc/entary.rb +227 -0
- data/test/tc/entsel.rb +110 -0
- data/test/tc/eq.rb +101 -0
- data/test/tc/expand_path.rb +69 -0
- data/test/tc/ext.rb +136 -0
- data/test/tc/fileno.rb +94 -0
- data/test/tc/files_select.rb +92 -0
- data/test/tc/get.rb +152 -0
- data/test/tc/getrec.rb +137 -0
- data/test/tc/gzip.rb +109 -0
- data/test/tc/io_each_byte.rb +60 -0
- data/test/tc/io_read.rb +80 -0
- data/test/tc/iometh.rb +149 -0
- data/test/tc/likeio.rb +116 -0
- data/test/tc/line_record_row.rb +51 -0
- data/test/tc/lineno.rb +196 -0
- data/test/tc/lines.rb +66 -0
- data/test/tc/misc.rb +432 -0
- data/test/tc/nolines.rb +204 -0
- data/test/tc/noqae.rb +879 -0
- data/test/tc/null.rb +45 -0
- data/test/tc/once.rb +6 -0
- data/test/tc/overload.rb +140 -0
- data/test/tc/pa.rb +158 -0
- data/test/tc/path_parts.rb +175 -0
- data/test/tc/pathop.rb +60 -0
- data/test/tc/paths.rb +145 -0
- data/test/tc/pid.rb +31 -0
- data/test/tc/piper.rb +143 -0
- data/test/tc/programs_util.rb +24 -0
- data/test/tc/qae.rb +493 -0
- data/test/tc/qae_riovar.rb +499 -0
- data/test/tc/readline.rb +30 -0
- data/test/tc/records.rb +68 -0
- data/test/tc/rename.rb +233 -0
- data/test/tc/rename_assign.rb +45 -0
- data/test/tc/riorl.rb +181 -0
- data/test/tc/route.rb +51 -0
- data/test/tc/selnosel.rb +33 -0
- data/test/tc/skip.rb +89 -0
- data/test/tc/skiplines.rb +71 -0
- data/test/tc/split.rb +28 -0
- data/test/tc/splitlines.rb +65 -0
- data/test/tc/splitpath.rb +83 -0
- data/test/tc/sub.rb +46 -0
- data/test/tc/symlink.rb +176 -0
- data/test/tc/symlink0.rb +348 -0
- data/test/tc/symlink1.rb +114 -0
- data/test/tc/synopsis.rb +75 -0
- data/test/tc/temp.rb +152 -0
- data/test/tc/tempdir.rb +60 -0
- data/test/tc/tempfile.rb +66 -0
- data/test/tc/testcase.rb +170 -0
- data/test/tc/tonl.rb +37 -0
- data/test/tc/truncate.rb +39 -0
- data/test/tc/yaml.rb +275 -0
- metadata +387 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# ===============================================================================
|
|
3
|
+
# Copyright (c) 2005,2006,2007 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.
|
|
27
|
+
#
|
|
28
|
+
# Suggested Reading
|
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
|
30
|
+
# * RIO::Doc::INTRO
|
|
31
|
+
# * RIO::Doc::HOWTO
|
|
32
|
+
# * RIO::Doc::EXAMPLES
|
|
33
|
+
# * RIO::Rio
|
|
34
|
+
#
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
module RIO
|
|
38
|
+
class Rio
|
|
39
|
+
# Returns the String associated with a Rio which references a StringIO object.
|
|
40
|
+
# For any other type of Rio, is undefined.
|
|
41
|
+
def string() target.string end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
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
|
data/lib/rio/if/temp.rb
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# ===============================================================================
|
|
3
|
+
# Copyright (c) 2005,2006,2007 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.
|
|
27
|
+
#
|
|
28
|
+
# Suggested Reading
|
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
|
30
|
+
# * RIO::Doc::INTRO
|
|
31
|
+
# * RIO::Doc::HOWTO
|
|
32
|
+
# * RIO::Doc::EXAMPLES
|
|
33
|
+
# * RIO::Rio
|
|
34
|
+
#
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
module RIO
|
|
38
|
+
class Rio
|
|
39
|
+
#def file() target.file; self end
|
|
40
|
+
#def dir() target.dir; self end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
data/lib/rio/if/test.rb
ADDED
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# ===============================================================================
|
|
3
|
+
# Copyright (c) 2005,2006,2007 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.
|
|
27
|
+
#
|
|
28
|
+
# Suggested Reading
|
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
|
30
|
+
# * RIO::Doc::INTRO
|
|
31
|
+
# * RIO::Doc::HOWTO
|
|
32
|
+
# * RIO::Doc::EXAMPLES
|
|
33
|
+
# * RIO::Rio
|
|
34
|
+
#
|
|
35
|
+
|
|
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 an 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
|
+
|
|
278
|
+
module RIO
|
|
279
|
+
class Rio
|
|
280
|
+
include RIO::IF::Test
|
|
281
|
+
end
|
|
282
|
+
end
|
data/lib/rio/if/yaml.rb
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# ===============================================================================
|
|
3
|
+
# Copyright (c) 2005,2006,2007 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.
|
|
27
|
+
#
|
|
28
|
+
# Suggested Reading
|
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
|
30
|
+
# * RIO::Doc::INTRO
|
|
31
|
+
# * RIO::Doc::HOWTO
|
|
32
|
+
# * RIO::Doc::EXAMPLES
|
|
33
|
+
# * RIO::Rio
|
|
34
|
+
#
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
module RIO
|
|
38
|
+
module IF
|
|
39
|
+
module YAML
|
|
40
|
+
#def file() target.file end
|
|
41
|
+
#def dir() target.dir end
|
|
42
|
+
|
|
43
|
+
# Puts a Rio in YAML mode.
|
|
44
|
+
#
|
|
45
|
+
#
|
|
46
|
+
# Rio uses the YAML class from the Ruby standard library to provide
|
|
47
|
+
# support for reading and writing YAML files. Normally using
|
|
48
|
+
# <tt>(skip)records</tt> is identical to <tt>(skip)lines</tt> because
|
|
49
|
+
# while +records+ only selects and does not specify the record-type,
|
|
50
|
+
# +lines+ is the default.
|
|
51
|
+
#
|
|
52
|
+
# The YAML extension distingishes between items selected using
|
|
53
|
+
# IF::GrandeStream#records, IF::GrandeStream#rows and IF::GrandeStream#lines.
|
|
54
|
+
# Rio returns objects loaded via
|
|
55
|
+
# YAML#load when +records+ or #objects is used; returns the YAML text as a String
|
|
56
|
+
# when +rows+ or #documents is used; and returns lines as Strings as normal when
|
|
57
|
+
# +lines+ is used. +records+ is the default.
|
|
58
|
+
#
|
|
59
|
+
# To read a single YAML document, Rio provides #getobj and #load. For
|
|
60
|
+
# example, consider the following partial 'database.yml' from the rails
|
|
61
|
+
# distribution:
|
|
62
|
+
#
|
|
63
|
+
# development:
|
|
64
|
+
# adapter: mysql
|
|
65
|
+
# database: rails_development
|
|
66
|
+
#
|
|
67
|
+
# test:
|
|
68
|
+
# adapter: mysql
|
|
69
|
+
# database: rails_test
|
|
70
|
+
#
|
|
71
|
+
#
|
|
72
|
+
# To get the object represented in the yaml file:
|
|
73
|
+
#
|
|
74
|
+
# rio('database.yml').yaml.load
|
|
75
|
+
# ==>{"development"=>{"adapter"=>"mysql", "database"=>"rails_development"},
|
|
76
|
+
# "test"=>{"adapter"=>"mysql", "database"=>"rails_test"}}
|
|
77
|
+
#
|
|
78
|
+
# Or one could read parts of the file like so:
|
|
79
|
+
#
|
|
80
|
+
# rio('database.yml').yaml.getobj['development']['database']
|
|
81
|
+
# ==>"rails_development"
|
|
82
|
+
#
|
|
83
|
+
# Single objects can be written using #putobj and #putobj!
|
|
84
|
+
# which is aliased to #dump
|
|
85
|
+
#
|
|
86
|
+
# anobject = {
|
|
87
|
+
# 'production' => {
|
|
88
|
+
# 'adapter' => 'mysql',
|
|
89
|
+
# 'database' => 'rails_production',
|
|
90
|
+
# }
|
|
91
|
+
# }
|
|
92
|
+
# rio('afile.yaml').yaml.dump(anobject)
|
|
93
|
+
#
|
|
94
|
+
#
|
|
95
|
+
# Single objects can be written using IF::GrandeStream#putrec (aliased to IF::YAML#putobj
|
|
96
|
+
# and IF::YAML#dump)
|
|
97
|
+
#
|
|
98
|
+
# rio('afile.yaml').yaml.putobj(anobject)
|
|
99
|
+
#
|
|
100
|
+
# Single objects can be loaded using IF::GrandeStream#getrec (aliased to IF::YAML#getobj
|
|
101
|
+
# and IF::YAML#load)
|
|
102
|
+
#
|
|
103
|
+
# anobject = rio('afile.yaml').yaml.getobj
|
|
104
|
+
#
|
|
105
|
+
# A Rio in yaml-mode is just
|
|
106
|
+
# like any other Rio. And all the things you can do with any Rio come
|
|
107
|
+
# for free. They can be iterated over using IF::Grande#each and read into an
|
|
108
|
+
# array using IF::Grande#[] just like any other Rio. All the selection criteria
|
|
109
|
+
# are identical also.
|
|
110
|
+
#
|
|
111
|
+
# Get the first three objects into an array:
|
|
112
|
+
#
|
|
113
|
+
# array_of_objects = rio('afile.yaml').yaml[0..2]
|
|
114
|
+
#
|
|
115
|
+
# Iterate over only YAML documents that are a kind_of ::Hash:
|
|
116
|
+
#
|
|
117
|
+
# rio('afile.yaml').yaml(::Hash) {|ahash| ...}
|
|
118
|
+
#
|
|
119
|
+
# This takes advantage of the fact that the default for matching records
|
|
120
|
+
# is <tt>===</tt>
|
|
121
|
+
#
|
|
122
|
+
# Selecting records using a Proc can be used as normal:
|
|
123
|
+
#
|
|
124
|
+
# anarray = rio('afile.yaml').yaml(proc{|anobject| ...}).to_a
|
|
125
|
+
#
|
|
126
|
+
# One could even use the copy operator to convert a CSV file to a YAML
|
|
127
|
+
# representation of the same data:
|
|
128
|
+
#
|
|
129
|
+
# rio('afile.yaml').yaml < rio('afile.csv').csv
|
|
130
|
+
#
|
|
131
|
+
def yaml(&block)
|
|
132
|
+
target.yaml(&block);
|
|
133
|
+
self
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
# Queries if the Rio is in yaml-mode. See #yaml
|
|
138
|
+
def yaml?() target.yaml? end
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
# Select objects from a YAML file. See #yaml and RIO::Doc::INTRO
|
|
142
|
+
def objects(*selectors,&block) target.objects(*selectors,&block); self end
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
# Reject objects from a YAML file. Calls IF::GrandeStream#skiprecords. See #yaml and RIO::Doc::INTRO
|
|
146
|
+
def skipobjects(*selectors,&block) target.skipobjects(*selectors,&block); self end
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
# Select documents from a YAML file. See #yaml and RIO::Doc::INTRO
|
|
150
|
+
def documents(*selectors,&block) target.documents(*selectors,&block); self end
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
# Reject documents from a YAML file. Calls IF::GrandeStream#skiprows. See #yaml and RIO::Doc::INTRO
|
|
154
|
+
def skipdocuments(*selectors,&block) target.skipdocuments(*selectors,&block); self end
|
|
155
|
+
|
|
156
|
+
# Select a single object. See #objects, IF::GrandeStream#line and #yaml.
|
|
157
|
+
def object(*args,&block) target.object(*args,&block); self end
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
# Select a single yaml document. See #documents, IF::GrandeStream#line and #yaml.
|
|
161
|
+
def document(*args,&block) target.document(*args,&block); self end
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
# Calls YAML.load.
|
|
165
|
+
#
|
|
166
|
+
# Loads a single YAML object from the stream referenced by the Rio
|
|
167
|
+
#
|
|
168
|
+
# rio('database.yml').yaml.getobj
|
|
169
|
+
#
|
|
170
|
+
# See #yaml and RIO::Doc::INTRO
|
|
171
|
+
#
|
|
172
|
+
def getobj() target.getobj() end
|
|
173
|
+
|
|
174
|
+
# Calls YAML.load.
|
|
175
|
+
#
|
|
176
|
+
# Loads a single YAML object from the stream referenced by the Rio
|
|
177
|
+
#
|
|
178
|
+
# rio('database.yml').yaml.load
|
|
179
|
+
#
|
|
180
|
+
# See #yaml and RIO::Doc::INTRO
|
|
181
|
+
#
|
|
182
|
+
def load() target.load() end
|
|
183
|
+
|
|
184
|
+
# Alias for #getrec
|
|
185
|
+
#def getdoc() target.getdoc() end
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
# Calls YAML.dump, leaving the Rio open.
|
|
189
|
+
def putobj(obj) target.putobj(obj); self end
|
|
190
|
+
|
|
191
|
+
# Dumps an object to a Rio as with IF::YAML#putobj, and closes the Rio.
|
|
192
|
+
#
|
|
193
|
+
# rio('afile.yaml').yaml.putobj!(anobject)
|
|
194
|
+
#
|
|
195
|
+
# is identical to
|
|
196
|
+
#
|
|
197
|
+
# rio('afile.yaml').yaml.putobj(anobject).close
|
|
198
|
+
#
|
|
199
|
+
def putobj!(obj) target.putobj!(obj); self end
|
|
200
|
+
|
|
201
|
+
# Alias for IF::YAML#putobj!
|
|
202
|
+
def dump(obj) target.dump(obj); self end
|
|
203
|
+
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|