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.
- data/README +18 -12
- data/Rakefile +57 -87
- data/build_doc.rb +19 -17
- data/doc/ANNOUNCE +3 -32
- data/doc/RELEASE_NOTES +4 -5
- data/doc/RIOIS +215 -0
- data/doc/generators/template/html/rio.css +428 -0
- data/doc/generators/template/html/rio.rb +18 -389
- data/doc/generators/template/html/ugly.rb +130 -0
- data/doc/pkg_def.rb +66 -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.rb +16 -10
- data/lib/rio/abstract_method.rb +3 -4
- data/lib/rio/argv.rb +3 -4
- data/lib/rio/arycopy.rb +3 -4
- data/lib/rio/assert.rb +3 -4
- data/lib/rio/base.rb +3 -4
- data/lib/rio/callstr.rb +3 -4
- data/lib/rio/const.rb +3 -4
- data/lib/rio/construct.rb +3 -4
- data/lib/rio/constructor.rb +12 -8
- data/lib/rio/context.rb +15 -30
- data/lib/rio/context/autoclose.rb +3 -4
- data/lib/rio/context/copying.rb +3 -4
- data/lib/rio/context/cxx.rb +3 -4
- data/lib/rio/context/dir.rb +3 -4
- data/lib/rio/context/gzip.rb +3 -4
- data/lib/rio/context/methods.rb +16 -5
- data/lib/rio/context/skip.rb +3 -4
- data/lib/rio/context/stream.rb +42 -5
- data/lib/rio/cp.rb +7 -7
- data/lib/rio/def.rb +3 -4
- data/lib/rio/dir.rb +3 -4
- data/lib/rio/doc.rb +4 -5
- data/lib/rio/doc/EXAMPLES.rb +299 -0
- data/lib/rio/doc/HOWTO.rb +3 -4
- data/lib/rio/doc/INTRO.rb +86 -105
- data/lib/rio/doc/OPTIONAL.rb +4 -5
- data/lib/rio/doc/SYNOPSIS.rb +7 -6
- data/lib/rio/entrysel.rb +21 -23
- data/lib/rio/exception.rb +3 -4
- data/lib/rio/exception/copy.rb +3 -4
- data/lib/rio/exception/notimplemented.rb +57 -0
- data/lib/rio/exception/notsupported.rb +3 -4
- data/lib/rio/exception/open.rb +3 -4
- data/lib/rio/exception/state.rb +3 -4
- data/lib/rio/ext.rb +47 -13
- data/lib/rio/ext/csv.rb +4 -5
- 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.rb +9 -5
- data/lib/rio/ext/yaml/doc.rb +133 -0
- data/lib/rio/ext/yaml/tie.rb +149 -0
- data/lib/rio/ext/zipfile.rb +23 -4
- 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/factory.rb +235 -27
- data/lib/rio/file.rb +4 -4
- data/lib/rio/filter.rb +3 -4
- data/lib/rio/filter/closeoneof.rb +3 -4
- data/lib/rio/filter/gzip.rb +9 -4
- data/lib/rio/fs/base.rb +3 -4
- data/lib/rio/fs/impl.rb +4 -5
- data/lib/rio/fs/native.rb +3 -4
- data/lib/rio/fs/stream.rb +3 -4
- data/lib/rio/fs/url.rb +3 -4
- data/lib/rio/ftp/conncache.rb +19 -5
- data/lib/rio/ftp/dir.rb +3 -4
- data/lib/rio/ftp/fs.rb +30 -24
- data/lib/rio/grande.rb +27 -7
- data/lib/rio/handle.rb +3 -4
- data/lib/rio/if.rb +19 -15
- data/lib/rio/if/basic.rb +7 -7
- data/lib/rio/if/csv.rb +5 -6
- data/lib/rio/if/dir.rb +120 -114
- data/lib/rio/if/file.rb +52 -44
- data/lib/rio/if/fileordir.rb +217 -211
- data/lib/rio/if/grande.rb +674 -644
- data/lib/rio/if/grande_entry.rb +321 -313
- data/lib/rio/if/grande_stream.rb +653 -553
- data/lib/rio/if/internal.rb +3 -4
- data/lib/rio/if/path.rb +425 -426
- data/lib/rio/if/rubyio.rb +681 -0
- data/lib/rio/if/string.rb +42 -5
- data/lib/rio/if/temp.rb +3 -4
- data/lib/rio/if/test.rb +245 -238
- data/lib/rio/if/yaml.rb +15 -41
- data/lib/rio/ioh.rb +7 -5
- data/lib/rio/iomode.rb +19 -7
- data/lib/rio/ios/fail.rb +4 -5
- data/lib/rio/ios/generic.rb +4 -5
- data/lib/rio/ios/mode.rb +4 -5
- data/lib/rio/ios/null.rb +6 -7
- data/lib/rio/iowrap.rb +3 -4
- data/lib/rio/kernel.rb +3 -5
- data/lib/rio/local.rb +3 -4
- data/lib/rio/match.rb +3 -4
- data/lib/rio/matchrecord.rb +3 -4
- data/lib/rio/no_warn.rb +3 -4
- data/lib/rio/nullio.rb +3 -4
- data/lib/rio/open3.rb +4 -5
- data/lib/rio/ops/construct.rb +3 -4
- data/lib/rio/ops/create.rb +11 -6
- data/lib/rio/ops/dir.rb +19 -8
- data/lib/rio/ops/either.rb +6 -5
- data/lib/rio/ops/file.rb +3 -4
- data/lib/rio/ops/path.rb +14 -35
- data/lib/rio/ops/stream.rb +3 -4
- data/lib/rio/ops/stream/input.rb +4 -7
- data/lib/rio/ops/stream/output.rb +3 -4
- data/lib/rio/ops/stream/read.rb +6 -5
- data/lib/rio/ops/stream/write.rb +3 -4
- data/lib/rio/ops/symlink.rb +3 -4
- data/lib/rio/path.rb +22 -18
- data/lib/rio/path/reset.rb +4 -5
- data/lib/rio/piper.rb +3 -4
- data/lib/rio/piper/cp.rb +3 -4
- data/lib/rio/prompt.rb +10 -5
- data/lib/rio/rectype.rb +5 -5
- data/lib/rio/rl/base.rb +17 -71
- data/lib/rio/rl/builder.rb +14 -38
- data/lib/rio/rl/chmap.rb +66 -0
- data/lib/rio/rl/fs2url.rb +82 -0
- data/lib/rio/rl/ioi.rb +4 -4
- data/lib/rio/rl/path.rb +44 -122
- data/lib/rio/rl/pathmethods.rb +19 -8
- data/lib/rio/rl/uri.rb +137 -60
- data/lib/rio/rl/withpath.rb +295 -0
- data/lib/rio/scheme/aryio.rb +3 -4
- data/lib/rio/scheme/cmdio.rb +3 -4
- data/lib/rio/scheme/cmdpipe.rb +4 -4
- data/lib/rio/scheme/fd.rb +3 -4
- data/lib/rio/scheme/ftp.rb +7 -7
- data/lib/rio/scheme/http.rb +4 -5
- data/lib/rio/scheme/null.rb +3 -4
- data/lib/rio/scheme/path.rb +3 -4
- data/lib/rio/scheme/stderr.rb +3 -4
- data/lib/rio/scheme/stdio.rb +3 -4
- data/lib/rio/scheme/strio.rb +3 -4
- data/lib/rio/scheme/sysio.rb +3 -4
- data/lib/rio/scheme/tcp.rb +3 -4
- data/lib/rio/scheme/temp.rb +6 -6
- data/lib/rio/state.rb +18 -46
- data/lib/rio/state/error.rb +3 -4
- data/lib/rio/stream.rb +4 -4
- data/lib/rio/stream/base.rb +3 -4
- data/lib/rio/stream/duplex.rb +3 -4
- data/lib/rio/stream/open.rb +3 -8
- data/lib/rio/symantics.rb +3 -4
- data/lib/rio/tempdir.rb +2 -2
- data/lib/rio/to_rio.rb +3 -4
- data/lib/rio/to_rio/all.rb +3 -4
- data/lib/rio/to_rio/array.rb +4 -5
- data/lib/rio/to_rio/io.rb +4 -5
- data/lib/rio/to_rio/object.rb +4 -5
- data/lib/rio/to_rio/string.rb +4 -5
- data/lib/rio/uri/file.rb +41 -5
- data/lib/rio/util.rb +3 -4
- data/lib/rio/version.rb +4 -5
- data/setup.rb +368 -339
- data/test/bin/list_dir.rb +1 -1
- data/test/ftp/anon_misc.rb +13 -1
- data/test/ftp/anon_special.rb +6 -6
- data/test/ftp/anon_write.rb +10 -3
- data/test/ftp/ftp2ftp.rb +2 -2
- data/test/ftp/testdef.rb +9 -6
- data/test/http/all.rb +3 -0
- data/test/http/copy-from-http.rb +140 -0
- data/test/lib/temp_server.rb +44 -0
- data/test/runalltests.rb +3 -1
- data/test/runhttp.rb +12 -0
- data/test/runhttptests.rb +1 -1
- data/test/runtests.rb +41 -3
- data/test/tc/abs.rb +9 -5
- data/test/tc/all.rb +9 -4
- data/test/tc/base.rb +1 -1
- data/test/tc/base2.rb +87 -0
- data/test/tc/{methods.rb → clone.rb} +72 -50
- data/test/tc/closeoncopy.rb +13 -2
- data/test/tc/copy-dir-samevar.rb +91 -0
- data/test/tc/dir_iter.rb +0 -1
- data/test/tc/empty.rb +6 -2
- data/test/tc/expand_path.rb +36 -54
- data/test/tc/ext.rb +42 -18
- data/test/tc/gzip.rb +30 -3
- data/test/tc/likeio.rb +5 -1
- data/test/tc/line_record_row.rb +51 -0
- data/test/tc/noqae.rb +71 -70
- data/test/tc/path_parts.rb +175 -0
- data/test/tc/programs_util.rb +3 -3
- data/test/tc/rename.rb +4 -5
- data/test/tc/riorl.rb +9 -7
- data/test/tc/skip.rb +35 -6
- data/test/tc/skiplines.rb +34 -5
- data/test/tc/split.rb +8 -50
- data/test/tc/splitlines.rb +65 -0
- data/test/tc/splitpath.rb +83 -0
- data/test/tc/testcase.rb +1 -1
- data/test/tc/truncate.rb +39 -0
- data/test/tc/yaml.rb +9 -8
- metadata +261 -207
- data/ChangeLog +0 -1418
- data/VERSION +0 -1
- data/lib/rio/doc/MISC.rb +0 -259
- data/lib/rio/if/stream.rb +0 -680
- data/lib/rio/impl/path.rb +0 -87
- data/test/tc/copy-from-http.rb +0 -89
data/lib/rio/handle.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# ===============================================================================
|
|
3
|
-
# Copyright (c) 2005,
|
|
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.
|
|
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
|
require 'rio/base'
|
data/lib/rio/if.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# ===============================================================================
|
|
3
|
-
# Copyright (c) 2005,
|
|
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.
|
|
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
|
|
@@ -46,15 +45,20 @@ end
|
|
|
46
45
|
|
|
47
46
|
require 'rio/if/internal'
|
|
48
47
|
require 'rio/if/basic'
|
|
49
|
-
require 'rio/if/grande'
|
|
50
|
-
require 'rio/if/grande_entry'
|
|
51
|
-
require 'rio/if/grande_stream'
|
|
52
48
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
require 'rio/if/
|
|
56
|
-
require 'rio/if/
|
|
57
|
-
require 'rio/if/
|
|
58
|
-
|
|
59
|
-
require 'rio/if/
|
|
60
|
-
require 'rio/if/
|
|
49
|
+
module RIO
|
|
50
|
+
class Rio
|
|
51
|
+
require 'rio/if/grande'
|
|
52
|
+
require 'rio/if/grande_entry'
|
|
53
|
+
require 'rio/if/grande_stream'
|
|
54
|
+
|
|
55
|
+
require 'rio/if/test'
|
|
56
|
+
require 'rio/if/path'
|
|
57
|
+
require 'rio/if/fileordir'
|
|
58
|
+
require 'rio/if/file'
|
|
59
|
+
require 'rio/if/dir'
|
|
60
|
+
require 'rio/if/rubyio'
|
|
61
|
+
require 'rio/if/temp'
|
|
62
|
+
require 'rio/if/string'
|
|
63
|
+
end
|
|
64
|
+
end
|
data/lib/rio/if/basic.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# ===============================================================================
|
|
3
|
-
# Copyright (c) 2005,
|
|
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.
|
|
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
|
|
@@ -42,10 +41,11 @@ module RIO
|
|
|
42
41
|
|
|
43
42
|
# Returns the length of the Rio's String representation
|
|
44
43
|
#
|
|
45
|
-
# To get the size of the underlying file system object use
|
|
44
|
+
# To get the size of the underlying file system object use RIO::IF::Test#size
|
|
46
45
|
def length() target.length end
|
|
47
46
|
|
|
48
|
-
# Equality - calls to_s on
|
|
47
|
+
# Equality - calls to_s on _other_ and compares its return value
|
|
48
|
+
# with the value returned by Rio#to_s
|
|
49
49
|
def ==(other) target == other end
|
|
50
50
|
|
|
51
51
|
# Equality (for case statements) same as Rio#==
|
|
@@ -57,7 +57,7 @@ module RIO
|
|
|
57
57
|
# Returns true if their String representations are eql?
|
|
58
58
|
def eql?(other) target.eql?(other) end
|
|
59
59
|
|
|
60
|
-
# Match - invokes
|
|
60
|
+
# Match - invokes _other_.=~, passing the value returned by Rio#to_str
|
|
61
61
|
def =~(other) target =~ other end
|
|
62
62
|
|
|
63
63
|
end
|
data/lib/rio/if/csv.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# ===============================================================================
|
|
3
|
-
# Copyright (c) 2005,
|
|
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.
|
|
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
|
|
@@ -42,9 +41,9 @@ module RIO
|
|
|
42
41
|
#def dir() target.dir end
|
|
43
42
|
|
|
44
43
|
# Puts a Rio in CSV mode and sets the field and record separators.
|
|
45
|
-
# In csv mode selecting with
|
|
44
|
+
# In csv mode selecting with IF::GrandeStream#records will cause each line
|
|
46
45
|
# read to be parsed into a line with the CSV standard library.
|
|
47
|
-
# Specifying using
|
|
46
|
+
# Specifying using IF::GrandeStream#lines to select will return unparsed strings
|
|
48
47
|
# as normal.
|
|
49
48
|
#
|
|
50
49
|
# # copy a csv file, changing the field separator
|
data/lib/rio/if/dir.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# ===============================================================================
|
|
3
|
-
# Copyright (c) 2005,
|
|
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,129 +23,135 @@
|
|
|
23
23
|
#
|
|
24
24
|
# To create the documentation for Rio run the command
|
|
25
25
|
# ruby build_doc.rb
|
|
26
|
-
# from the distribution 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
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
#
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
#
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
38
|
+
module IF
|
|
39
|
+
module Dir
|
|
40
|
+
# Calls ::Dir#chdir.
|
|
41
|
+
#
|
|
42
|
+
# Changes the current working directory of the process to the directory specified by the Rio.
|
|
43
|
+
# Raises a SystemCallError (probably Errno::ENOENT) if the target directory does not exist or
|
|
44
|
+
# if the Rio does not reference a directory.
|
|
45
|
+
#
|
|
46
|
+
# If a block is given changes to the directory specified by the rio for the length of the block
|
|
47
|
+
# and changes back outside the block
|
|
48
|
+
#
|
|
49
|
+
# Returns the Rio
|
|
50
|
+
#
|
|
51
|
+
# rio('/home').chdir # change the current working directory to /home
|
|
52
|
+
# # the working directory here is /home
|
|
53
|
+
# rio('/tmp/data/mydata').delete!.mkpath.chdir {
|
|
54
|
+
# # the working directory here is /tmp/data/mydata
|
|
55
|
+
# }
|
|
56
|
+
# # the working directory here is /home
|
|
57
|
+
#
|
|
58
|
+
def chdir(&block) target.chdir(&block);self end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
# Calls Find#find
|
|
63
|
+
#
|
|
64
|
+
# Uses ::Find#find to find all entries recursively for a Rio that
|
|
65
|
+
# specifies a directory. Note that there are other ways to recurse through
|
|
66
|
+
# a directory structure using a Rio. See IF::Grande#each and IF::GrandeEntry#all.
|
|
67
|
+
#
|
|
68
|
+
# Calls the block passing a Rio for each entry found. The Rio inherits
|
|
69
|
+
# file attrubutes from the directory Rio.
|
|
70
|
+
#
|
|
71
|
+
# Returns itself
|
|
72
|
+
#
|
|
73
|
+
# rio('adir').find { |entrio| puts "#{entrio}: #{entrio.file?}" }
|
|
74
|
+
#
|
|
75
|
+
# rio('adir').chomp.find do |entrio|
|
|
76
|
+
# next unless entrio.file?
|
|
77
|
+
# lines = entrio[0..10] # lines are chomped because 'chomp' was inherited
|
|
78
|
+
# end
|
|
79
|
+
#
|
|
80
|
+
def find(*args,&block) target.find_entries(*args,&block); self end
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# Calls ::Dir#glob
|
|
84
|
+
#
|
|
85
|
+
# Returns the filenames found by expanding the pattern given in string,
|
|
86
|
+
# either as an array or as parameters to the block. In both cases the filenames
|
|
87
|
+
# are expressed as a Rio.
|
|
88
|
+
# Note that this pattern is not a regexp (it�s closer to a shell glob).
|
|
89
|
+
# See File::fnmatch for details of file name matching and the meaning of the flags parameter.
|
|
90
|
+
#
|
|
91
|
+
#
|
|
92
|
+
def glob(string,*args,&block) target.glob(string,*args,&block) end
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# Calls ::Dir#rmdir
|
|
96
|
+
#
|
|
97
|
+
# Deletes the directory referenced by the Rio.
|
|
98
|
+
# Raises a subclass of SystemCallError if the directory isn�t empty.
|
|
99
|
+
# Returns the Rio. If the directory does not exist, just returns the Rio.
|
|
100
|
+
#
|
|
101
|
+
# See also #rmtree, IF::Grande#delete, IF::Grande#delete!
|
|
102
|
+
#
|
|
103
|
+
# rio('adir').rmdir # remove the empty directory 'adir'
|
|
104
|
+
#
|
|
105
|
+
def rmdir() target.rmdir(); self end
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
# Calls FileUtils#rmtree
|
|
109
|
+
#
|
|
110
|
+
# Removes a directory Rio recursively. Returns the Rio.
|
|
111
|
+
# If the directory does not exist, simply returns the Rio
|
|
112
|
+
#
|
|
113
|
+
# If called with a block, behaves as if <tt>rmtree.each(&block)</tt> had been called
|
|
114
|
+
#
|
|
115
|
+
# See also IF::Grande#delete!
|
|
116
|
+
#
|
|
117
|
+
# rio('adir').rmtree # removes the directory 'adir' recursively
|
|
118
|
+
#
|
|
119
|
+
# # delete the directory 'adir', recreate it and then change to the new directory
|
|
120
|
+
# rio('adir/asubdir').rmtree.mkpath.chdir {
|
|
121
|
+
# ...
|
|
122
|
+
# }
|
|
123
|
+
#
|
|
124
|
+
#
|
|
125
|
+
def rmtree() target.rmtree(); self end
|
|
126
|
+
|
|
127
|
+
# Calls FileUtils#mkpath
|
|
128
|
+
#
|
|
129
|
+
# Makes a new directory named by the Rio and any directories in its path that do not exist.
|
|
130
|
+
#
|
|
131
|
+
# Returns the Rio. If the directory already exists, just returns the Rio.
|
|
132
|
+
#
|
|
133
|
+
# rio('adir/a/b').mkpath
|
|
134
|
+
def mkpath(&block) target.mkpath(&block); self end
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
# Calls FileUtils#mkdir
|
|
138
|
+
#
|
|
139
|
+
# Makes a new directory named by the Rio with permissions specified by the optional parameter.
|
|
140
|
+
# The permissions may be modified by the value of File::umask
|
|
141
|
+
#
|
|
142
|
+
# Returns the Rio. If the directory already exists, just returns the Rio.
|
|
143
|
+
#
|
|
144
|
+
# rio('adir').mkdir
|
|
145
|
+
def mkdir(*args,&block) target.mkdir(*args,&block); self end
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
end
|
|
149
150
|
end
|
|
150
151
|
end
|
|
151
152
|
|
|
153
|
+
module RIO
|
|
154
|
+
class Rio
|
|
155
|
+
include RIO::IF::Dir
|
|
156
|
+
end
|
|
157
|
+
end
|
data/lib/rio/if/file.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#--
|
|
2
2
|
# ===============================================================================
|
|
3
|
-
# Copyright (c) 2005,
|
|
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,59 +23,67 @@
|
|
|
23
23
|
#
|
|
24
24
|
# To create the documentation for Rio run the command
|
|
25
25
|
# ruby build_doc.rb
|
|
26
|
-
# from the distribution 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
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
38
|
+
module IF
|
|
39
|
+
module File
|
|
40
|
+
|
|
41
|
+
# Calls FileUtils#rm
|
|
42
|
+
#
|
|
43
|
+
# Deletes the referenced file, returning the Rio. Raises an exception on any error.
|
|
44
|
+
#
|
|
45
|
+
# See also IF::Grande#delete, IF::Grande#delete!, IF::Dir#rmdir.
|
|
46
|
+
def rm() target.rm(); self end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Calls FileUtils#touch
|
|
50
|
+
#
|
|
51
|
+
# Updates modification time (mtime) and access time (atime) of a Rio.
|
|
52
|
+
# A file is created if it doesn't exist.
|
|
53
|
+
#
|
|
54
|
+
def touch() target.touch(); self end
|
|
55
|
+
|
|
56
|
+
# Calls File#truncate
|
|
57
|
+
#
|
|
58
|
+
# Truncates a file referenced by a Rio to be at most +sz+ bytes long.
|
|
59
|
+
# Not available on all platforms.
|
|
60
|
+
#
|
|
61
|
+
# f = rio("out")
|
|
62
|
+
# f.print!("1234567890")
|
|
63
|
+
# f.size #=> 10
|
|
64
|
+
# f.truncate(5)
|
|
65
|
+
# f.size() #=> 5
|
|
66
|
+
#
|
|
67
|
+
# If called with no arguments, truncates the Rio at the
|
|
68
|
+
# value returned by IF::FileOrDir#pos().
|
|
69
|
+
# f.read(2)
|
|
70
|
+
# f.truncate.size #=> 2
|
|
71
|
+
# f.contents #=> "12"
|
|
72
|
+
#
|
|
73
|
+
# Returns the Rio
|
|
74
|
+
#
|
|
75
|
+
def truncate(sz=pos()) target.truncate(sz); self end
|
|
76
|
+
|
|
77
|
+
# Calls IF::File#truncate(0)
|
|
78
|
+
#
|
|
79
|
+
def clear() target.clear(); self end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
79
84
|
|
|
85
|
+
module RIO
|
|
86
|
+
class Rio
|
|
87
|
+
include RIO::IF::File
|
|
80
88
|
end
|
|
81
89
|
end
|