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
data/doc/RIOIS
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
Rio IS
|
|
2
|
+
|
|
3
|
+
=== EASY
|
|
4
|
+
|
|
5
|
+
Anything that does I/O is a Rio:
|
|
6
|
+
|
|
7
|
+
File:
|
|
8
|
+
rio('aflile')
|
|
9
|
+
Directory:
|
|
10
|
+
rio('adir')
|
|
11
|
+
Web Page:
|
|
12
|
+
rio('http://ahost/adir/afile')
|
|
13
|
+
Any IO:
|
|
14
|
+
rio(any_io)
|
|
15
|
+
|
|
16
|
+
... much more
|
|
17
|
+
|
|
18
|
+
Makes common tasks easy
|
|
19
|
+
|
|
20
|
+
rio('afile') > rio('copy of afile')
|
|
21
|
+
rio('adir') > rio('copy of adir')
|
|
22
|
+
rio('gzipped_file.gz').gzip > rio('ungzipped_file')
|
|
23
|
+
chomped_lines = rio('afile').chomp[]
|
|
24
|
+
|
|
25
|
+
... much more
|
|
26
|
+
|
|
27
|
+
=== Powerful
|
|
28
|
+
|
|
29
|
+
rb_files= rio('adir').files['*.rb']
|
|
30
|
+
rb_files_including_those_in_subdirectories = rio('adir').all.files['*.rb']
|
|
31
|
+
first_ten_lines_chomped = rio('afile').chomp[0..9]
|
|
32
|
+
first_ten_lines_chomped_from_gzipped_file = rio('afile.gz').gzip.chomp[0..9]
|
|
33
|
+
first_ten_lines_chomped_from_gzipped_file_on_ftp_server = rio('ftp://ahost/afile.gz').gzip.chomp[0..9]
|
|
34
|
+
|
|
35
|
+
... much more
|
|
36
|
+
|
|
37
|
+
=== Consistent
|
|
38
|
+
|
|
39
|
+
To iterate, add a block:
|
|
40
|
+
rio('afile').lines(/regular_expression/) { |line| ... }
|
|
41
|
+
rio('adir').files('
|
|
42
|
+
To return an array, use a subscript:
|
|
43
|
+
rio('afile').lines[/regular_expression/]
|
|
44
|
+
To copy use the copy-operator:
|
|
45
|
+
rio('afile').lines(/regular_expression/) > rio('destination_file')
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
= Rio - Ruby I/O Facilitator
|
|
52
|
+
|
|
53
|
+
fa-cil-i-tate: To make easy or easier [http://www.thefreedictionary.com/facilitate]
|
|
54
|
+
|
|
55
|
+
== Overview
|
|
56
|
+
|
|
57
|
+
Rio is a facade for most of the standard ruby classes that deal with I/O;
|
|
58
|
+
providing a simple, intuitive, succinct interface to the functionality
|
|
59
|
+
provided by IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO, OpenURI
|
|
60
|
+
and others. Rio also provides an application level interface which allows many
|
|
61
|
+
common I/O idioms to be expressed succinctly.
|
|
62
|
+
|
|
63
|
+
== New
|
|
64
|
+
|
|
65
|
+
Enhanced support for FTP file-systems. All of Rio's most powerful
|
|
66
|
+
idioms are now supported seamlessly on FTP servers.
|
|
67
|
+
|
|
68
|
+
# copy a file from or to an FTP server
|
|
69
|
+
rio('ftp://ahost/adir/afile') > rio('localfile') # server -> local file
|
|
70
|
+
rio('ftp://ahost/adir/afile') < rio('localfile') # local file -> server
|
|
71
|
+
|
|
72
|
+
# copy an entire directory structure from or to an FTP server
|
|
73
|
+
rio('ftp://ahost/adir') > rio('localdir') # server -> local directory
|
|
74
|
+
rio('ftp://ahost/adir') < rio('localdir') # local directory -> server
|
|
75
|
+
|
|
76
|
+
All of Rio's grande selection and filtering options are available for
|
|
77
|
+
files and directories on FTP servers.
|
|
78
|
+
|
|
79
|
+
# create a gzipped copy of a web page on an ftp server
|
|
80
|
+
rio('ftp://ftphost/f.html.gz').gzip < rio('http://httphost/f.html')
|
|
81
|
+
|
|
82
|
+
# dump the first 10 lines of a gzipped log file on an FTP server to stdout
|
|
83
|
+
rio('ftp://ftphost/logfile.txt').lines(0...10) > ?-
|
|
84
|
+
|
|
85
|
+
# iterate through the entries of a directory on an FTP server
|
|
86
|
+
rio('ftp://ftphost/adir').entries { |entrio| ... }
|
|
87
|
+
|
|
88
|
+
# get an array of all .rb files on an ftp server
|
|
89
|
+
rb_files = rio('ftp://ftphost/').all.files['*.rb']
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
== SYNOPSIS
|
|
93
|
+
|
|
94
|
+
For the following assume:
|
|
95
|
+
astring = ""
|
|
96
|
+
anarray = []
|
|
97
|
+
|
|
98
|
+
Copy or append a file to a string
|
|
99
|
+
rio('afile') > astring # copy
|
|
100
|
+
rio('afile') >> astring # append
|
|
101
|
+
|
|
102
|
+
Copy or append a string to a file
|
|
103
|
+
rio('afile') < astring # copy
|
|
104
|
+
rio('afile') << astring # append
|
|
105
|
+
|
|
106
|
+
Copy or append the lines of a file to an array
|
|
107
|
+
rio('afile') > anarray
|
|
108
|
+
rio('afile') >> anarray
|
|
109
|
+
|
|
110
|
+
Copy or append a file to another file
|
|
111
|
+
rio('afile') > rio('another_file')
|
|
112
|
+
rio('afile') >> rio('another_file')
|
|
113
|
+
|
|
114
|
+
Copy a file to a directory
|
|
115
|
+
rio('adir') << rio('afile')
|
|
116
|
+
|
|
117
|
+
Copy a directory structure to another directory
|
|
118
|
+
rio('adir') >> rio('another_directory')
|
|
119
|
+
|
|
120
|
+
Copy a web-page to a file
|
|
121
|
+
rio('http://rubydoc.org/') > rio('afile')
|
|
122
|
+
|
|
123
|
+
Ways to get the chomped lines of a file into an array
|
|
124
|
+
anarray = rio('afile').chomp[] # subscript operator
|
|
125
|
+
rio('afile').chomp > anarray # copy-to operator
|
|
126
|
+
anarray = rio('afile').chomp.to_a # to_a
|
|
127
|
+
anarray = rio('afile').chomp.readlines # IO#readlines
|
|
128
|
+
|
|
129
|
+
Copy a gzipped file un-gzipping it
|
|
130
|
+
rio('afile.gz').gzip > rio('afile')
|
|
131
|
+
|
|
132
|
+
Copy a plain file, gzipping it
|
|
133
|
+
rio('afile.gz').gzip < rio('afile')
|
|
134
|
+
|
|
135
|
+
Copy a file from a ftp server into a local file un-gzipping it
|
|
136
|
+
rio('ftp://host/afile.gz').gzip > rio('afile')
|
|
137
|
+
|
|
138
|
+
Iterate over the entries in a directory
|
|
139
|
+
rio('adir').entries { |entrio| ... }
|
|
140
|
+
|
|
141
|
+
Iterate over only the files in a directory
|
|
142
|
+
rio('adir').files { |entrio| ... }
|
|
143
|
+
|
|
144
|
+
Iterate over only the .rb files in a directory
|
|
145
|
+
rio('adir').files('*.rb') { |entrio| ... }
|
|
146
|
+
|
|
147
|
+
Iterate over .rb files but not symlinks to .rb files
|
|
148
|
+
rio('adir').files('*.rb').skip(:symlink?) { |entrio| ... }
|
|
149
|
+
|
|
150
|
+
Iterate over only the _dot_ files in a directory
|
|
151
|
+
rio('adir').files(/^\./) { |entrio| ... }
|
|
152
|
+
|
|
153
|
+
Iterate over the files in a directory and its subdirectories, skipping
|
|
154
|
+
'.svn' and 'CVS' directories
|
|
155
|
+
|
|
156
|
+
rio('adir').norecurse(/^\.svn$/,'CVS').files { |entrio| ... }
|
|
157
|
+
|
|
158
|
+
Create an array of the .rb entries in a directory
|
|
159
|
+
anarray = rio('adir')['*.rb']
|
|
160
|
+
|
|
161
|
+
Create an array of the .rb entries in a directory and its
|
|
162
|
+
subdirectories.
|
|
163
|
+
anarray = rio('adir').all['*.rb']
|
|
164
|
+
|
|
165
|
+
Iterate over the .rb files in a directory and its subdirectories
|
|
166
|
+
rio('adir').all.files('*.rb') { |entrio| ... }
|
|
167
|
+
|
|
168
|
+
Iterate over the non-empty, non-comment chomped lines of a file
|
|
169
|
+
rio('afile').chomp.skip.lines(:empty?,/^\s*#/) { |line| ... }
|
|
170
|
+
|
|
171
|
+
Copy the output of th ps command into an array, skipping the header
|
|
172
|
+
line and the ps command entry
|
|
173
|
+
rio(?-,'ps -a').skip.lines(0,/ps$/) > anarray
|
|
174
|
+
|
|
175
|
+
Prompt for input and return what was typed
|
|
176
|
+
ans = rio(?-).print("Type Something: ").chomp.gets
|
|
177
|
+
|
|
178
|
+
Change the extension of all .htm files in a directory and its
|
|
179
|
+
subdirectories to .html
|
|
180
|
+
rio('adir').rename.all.files('*.htm') do |htmfile|
|
|
181
|
+
htmfile.extname = '.html'
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
Create a symbolic link 'asymlink' in 'adir' which refers to
|
|
185
|
+
'adir/afile'
|
|
186
|
+
rio('adir/afile').symlink('adir/asymlink')
|
|
187
|
+
|
|
188
|
+
Copy a CSV file, changing the separator to a semicolon
|
|
189
|
+
rio('comma.csv').csv > rio('semicolon.csv').csv(';')
|
|
190
|
+
|
|
191
|
+
Iterate through a CSVfile with each line parsed into an array
|
|
192
|
+
rio('afile.csv').csv { |array_of_fields| ...}
|
|
193
|
+
|
|
194
|
+
Create a tab separated file of accounts in a UNIX passwd file,
|
|
195
|
+
listing only the username, uid, and realname fields
|
|
196
|
+
rio('/etc/passwd').csv(':').columns(0,2,4) > rio('rpt').csv("\t")
|
|
197
|
+
|
|
198
|
+
Pipe multiple commands
|
|
199
|
+
rio('afile') | rio(?-,'acmd') | 'another_cmd' | ?-
|
|
200
|
+
|
|
201
|
+
== Contact
|
|
202
|
+
|
|
203
|
+
Project:: http://rubyforge.org/projects/rio/
|
|
204
|
+
Documentation:: http://rio.rubyforge.org/
|
|
205
|
+
Bugs:: http://rubyforge.org/tracker/?group_id=821
|
|
206
|
+
Email:: rio4ruby@rubyforge.org
|
|
207
|
+
|
|
208
|
+
== Copyright
|
|
209
|
+
Copyright (c) 2005,2006,2007 Christopher Kleckner. All rights reserved
|
|
210
|
+
|
|
211
|
+
== License
|
|
212
|
+
Rio is released under the GNU General Public License
|
|
213
|
+
(http://www.gnu.org/licenses/gpl.html)
|
|
214
|
+
|
|
215
|
+
-Christopher Kleckner
|
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* = CSS2 RDoc HTML template
|
|
4
|
+
*
|
|
5
|
+
* This is a template for RDoc that uses XHTML 1.0 Transitional and dictates a
|
|
6
|
+
* bit more of the appearance of the output to cascading stylesheets than the
|
|
7
|
+
* default. It was designed for clean inline code display, and uses DHTMl to
|
|
8
|
+
* toggle the visbility of each method's source with each click on the '[source]'
|
|
9
|
+
* link.
|
|
10
|
+
*
|
|
11
|
+
* == Authors
|
|
12
|
+
*
|
|
13
|
+
* * Michael Granger <ged@FaerieMUD.org>
|
|
14
|
+
*
|
|
15
|
+
* Copyright (c) 2002, 2003 The FaerieMUD Consortium. Some rights reserved.
|
|
16
|
+
*
|
|
17
|
+
* This work is licensed under the Creative Commons Attribution License. To view
|
|
18
|
+
* a copy of this license, visit http://creativecommons.org/licenses/by/1.0/ or
|
|
19
|
+
* send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California
|
|
20
|
+
* 94305, USA.
|
|
21
|
+
*
|
|
22
|
+
*
|
|
23
|
+
* Modified by Christopher Kleckner
|
|
24
|
+
* Copyright (c) 2005,2006,2007. Some rights reserved.
|
|
25
|
+
* Licensed under the same terms as the original.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
body {
|
|
29
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
|
30
|
+
font-size: 90%;
|
|
31
|
+
margin: 0;
|
|
32
|
+
margin-left: 0px;
|
|
33
|
+
padding: 0;
|
|
34
|
+
background: white;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
h1,h2,h3,h4 { margin: 0; color: #8b4726; background: transparent; }
|
|
38
|
+
h1 { font-size: 150%; }
|
|
39
|
+
h2 { font-size: 140%; }
|
|
40
|
+
h3 { font-size: 130%; }
|
|
41
|
+
h4 { font-size: 120%; }
|
|
42
|
+
h2,h3,h4 { margin-top: 1em; }
|
|
43
|
+
|
|
44
|
+
a {
|
|
45
|
+
background: transparent;
|
|
46
|
+
color: #8b4500;
|
|
47
|
+
text-decoration: none;
|
|
48
|
+
}
|
|
49
|
+
a:hover {
|
|
50
|
+
color: #ffa500;
|
|
51
|
+
background: #8b4500;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
|
55
|
+
td > a {
|
|
56
|
+
background: transparent;
|
|
57
|
+
color: #099;
|
|
58
|
+
text-decoration: none;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
small {
|
|
62
|
+
font-size: 0.7em;
|
|
63
|
+
}
|
|
64
|
+
/* and inside a section title */
|
|
65
|
+
.section-title > a {
|
|
66
|
+
background: transparent;
|
|
67
|
+
color: #8b4500;
|
|
68
|
+
text-decoration: none;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* === Structural elements =================================== */
|
|
72
|
+
|
|
73
|
+
div#index {
|
|
74
|
+
margin: 0;
|
|
75
|
+
margin-left: 0px;
|
|
76
|
+
padding: 0;
|
|
77
|
+
font-size: 90%;
|
|
78
|
+
background: #ffdead;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
div#index a {
|
|
83
|
+
margin-left: 0.7em;
|
|
84
|
+
}
|
|
85
|
+
div#index-entries a {
|
|
86
|
+
background: transparent;
|
|
87
|
+
margin-left: 0.7em;
|
|
88
|
+
color: #8b4500;
|
|
89
|
+
}
|
|
90
|
+
div#index-entries a:hover {
|
|
91
|
+
background: transparent;
|
|
92
|
+
margin-left: 0.7em;
|
|
93
|
+
/* color: #ffdead; */
|
|
94
|
+
color: #ffdead;
|
|
95
|
+
background: #8b4500;
|
|
96
|
+
/*background: #ffdead;*/
|
|
97
|
+
}
|
|
98
|
+
.name-list a {
|
|
99
|
+
margin-left: 0.7em;
|
|
100
|
+
background: #ffdead;
|
|
101
|
+
color: #8b4500;
|
|
102
|
+
}
|
|
103
|
+
.name-list a:hover {
|
|
104
|
+
margin-left: 0.7em;
|
|
105
|
+
color: #ffdead;
|
|
106
|
+
background: #8b4500;
|
|
107
|
+
}
|
|
108
|
+
.section-bar {
|
|
109
|
+
color: #555;
|
|
110
|
+
/* background: #8b4500; */
|
|
111
|
+
|
|
112
|
+
border-bottom: 1px solid #999;
|
|
113
|
+
margin-left: 0px;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
div#index .section-bar {
|
|
117
|
+
margin-left: 0px;
|
|
118
|
+
padding-left: 0.7em;
|
|
119
|
+
background: #8b4500;
|
|
120
|
+
color: #ffdead;
|
|
121
|
+
font-size: small;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
.section-title {
|
|
126
|
+
/*background: #8b4500; */
|
|
127
|
+
background: #ffdead;
|
|
128
|
+
color: #eee;
|
|
129
|
+
padding: 3px;
|
|
130
|
+
margin-top: 2em;
|
|
131
|
+
margin-left: 0px;
|
|
132
|
+
border: 1px solid #999;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
div#classHeader, div#fileHeader {
|
|
136
|
+
width: auto;
|
|
137
|
+
color: white;
|
|
138
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
|
139
|
+
margin: 0;
|
|
140
|
+
margin-left: 0px;
|
|
141
|
+
border-bottom: 3px solid #006;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
div#classHeader a, div#fileHeader a {
|
|
145
|
+
background: inherit;
|
|
146
|
+
color: white;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
div#classHeader td, div#fileHeader td {
|
|
150
|
+
background: inherit;
|
|
151
|
+
color: white;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
div#fileHeader {
|
|
156
|
+
background: #8b4500;
|
|
157
|
+
|
|
158
|
+
}
|
|
159
|
+
#fileHeader h1,#fileHeader h2,#fileHeader h3,#fileHeader h4 {
|
|
160
|
+
margin: 0;
|
|
161
|
+
color: #ffdead;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
div#classHeader {
|
|
165
|
+
background: #8b4500;
|
|
166
|
+
}
|
|
167
|
+
td.class-header-space-col {
|
|
168
|
+
width: 2em;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
.class-mod {
|
|
173
|
+
font-size: 110%;
|
|
174
|
+
font-weight: bold;
|
|
175
|
+
font-family: monospace;
|
|
176
|
+
text-transform: lowercase;
|
|
177
|
+
text-align: bottom;
|
|
178
|
+
|
|
179
|
+
}
|
|
180
|
+
.class-name-in-header {
|
|
181
|
+
font-size: 150%;
|
|
182
|
+
font-weight: bold;
|
|
183
|
+
font-family: monospace;
|
|
184
|
+
}
|
|
185
|
+
.in-url {
|
|
186
|
+
font-size: 80%
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
div#bodyContent {
|
|
190
|
+
padding: 0 1.5em 0 1.5em;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
div#description {
|
|
195
|
+
padding: 0.5em 1.5em;
|
|
196
|
+
/* background: #efefef; */
|
|
197
|
+
background: #ffdead;
|
|
198
|
+
border: 1px dotted #999;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
|
202
|
+
color: #8b4500;
|
|
203
|
+
background: transparent;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
div#validator-badges {
|
|
207
|
+
text-align: center;
|
|
208
|
+
}
|
|
209
|
+
div#validator-badges img { border: 0; }
|
|
210
|
+
|
|
211
|
+
div#copyright {
|
|
212
|
+
color: #333;
|
|
213
|
+
background: #efefef;
|
|
214
|
+
font: 0.75em sans-serif;
|
|
215
|
+
margin-top: 5em;
|
|
216
|
+
margin-bottom: 0;
|
|
217
|
+
padding: 0.5em 2em;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
/* === Classes =================================== */
|
|
222
|
+
|
|
223
|
+
table.header-table {
|
|
224
|
+
color: white;
|
|
225
|
+
font-size: small;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.type-note {
|
|
229
|
+
font-size: small;
|
|
230
|
+
color: #DEDEDE;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.xxsection-bar {
|
|
234
|
+
background: #eee;
|
|
235
|
+
color: #333;
|
|
236
|
+
padding: 3px;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
.section-title {
|
|
242
|
+
background: #79a;
|
|
243
|
+
color: #eee;
|
|
244
|
+
padding: 3px;
|
|
245
|
+
margin-top: 2em;
|
|
246
|
+
margin-left: 0px;
|
|
247
|
+
border: 1px solid #999;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.top-aligned-row { vertical-align: top }
|
|
251
|
+
.bottom-aligned-row { vertical-align: bottom }
|
|
252
|
+
|
|
253
|
+
span.include-name {
|
|
254
|
+
font-size: small;
|
|
255
|
+
}
|
|
256
|
+
.include-name a {
|
|
257
|
+
font-weight: bold;
|
|
258
|
+
}
|
|
259
|
+
ul.includes-ul {
|
|
260
|
+
list-style-type: none;
|
|
261
|
+
padding-left: 1em;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
/* --- Context section classes ----------------------- */
|
|
266
|
+
|
|
267
|
+
.context-row { }
|
|
268
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
|
269
|
+
.context-item-value { font-size: small; color: #448; }
|
|
270
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
|
271
|
+
|
|
272
|
+
/* --- Method classes -------------------------- */
|
|
273
|
+
.method-detail {
|
|
274
|
+
background: #ffdead;
|
|
275
|
+
padding: 0;
|
|
276
|
+
margin-top: 0.5em;
|
|
277
|
+
margin-bottom: 1em;
|
|
278
|
+
border: 1px dotted #ccc;
|
|
279
|
+
}
|
|
280
|
+
.method-heading {
|
|
281
|
+
font-family: monospace;
|
|
282
|
+
font-weight: bold;
|
|
283
|
+
font-size: 130%;
|
|
284
|
+
color: #191970;
|
|
285
|
+
/* background: #b0c4de; */
|
|
286
|
+
background: #ffa07a;
|
|
287
|
+
border-bottom: 1px solid #666;
|
|
288
|
+
padding: 0.2em 0.5em 0 0.5em;
|
|
289
|
+
}
|
|
290
|
+
.method-heading a {
|
|
291
|
+
text-decoration: none;
|
|
292
|
+
}
|
|
293
|
+
.method-heading a:hover {
|
|
294
|
+
text-decoration: underline;
|
|
295
|
+
background: inherit;
|
|
296
|
+
color: inherit;
|
|
297
|
+
}
|
|
298
|
+
.method-signature { color: black; background: inherit; }
|
|
299
|
+
.method-name { font-weight: bold; }
|
|
300
|
+
.method-args { font-style: italic; }
|
|
301
|
+
|
|
302
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
|
303
|
+
pre.method-description
|
|
304
|
+
{
|
|
305
|
+
padding: 0 0.5em 0 0.5em;
|
|
306
|
+
color: #ee2222;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
#description pre
|
|
310
|
+
{
|
|
311
|
+
padding: 0.2em 0 0.2em 0;
|
|
312
|
+
margin: 0.3em 0 0.3em 0;
|
|
313
|
+
background: #fff8dc;
|
|
314
|
+
/* background: #ffffff; */
|
|
315
|
+
border-left: 3px solid #8b6508;
|
|
316
|
+
border-bottom: 1px solid #8b6508;
|
|
317
|
+
border-top: 1px solid #8b6508;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.method-description pre
|
|
321
|
+
{
|
|
322
|
+
padding: 0.2em 0 0.2em 0;
|
|
323
|
+
margin: 0.3em 0 0.3em 0;
|
|
324
|
+
background: #fff8dc;
|
|
325
|
+
/* background: #ffffff; */
|
|
326
|
+
border-left: 3px solid #8b6508;
|
|
327
|
+
border-bottom: 1px solid #8b6508;
|
|
328
|
+
border-top: 1px solid #8b6508;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
#description h1 {
|
|
333
|
+
color: #8b4500;
|
|
334
|
+
margin: 0.5em 0 0.2em 0;
|
|
335
|
+
/*border: 1px solid red;*/
|
|
336
|
+
}
|
|
337
|
+
#description h2 {
|
|
338
|
+
color: #8b4500;
|
|
339
|
+
margin: 0.5em 0 0.2em 0;
|
|
340
|
+
/*border: 1px solid red;*/
|
|
341
|
+
}
|
|
342
|
+
#description h3 {
|
|
343
|
+
color: #8b4500;
|
|
344
|
+
margin: 0.5em 0 0.2em 0;
|
|
345
|
+
/*border: 1px solid red;*/
|
|
346
|
+
}
|
|
347
|
+
#description h4 {
|
|
348
|
+
color: #8b4500;
|
|
349
|
+
margin: 0.5em 0 0.2em 0;
|
|
350
|
+
/*border: 1px solid red;*/
|
|
351
|
+
}
|
|
352
|
+
#description p {
|
|
353
|
+
margin: 0.5em 0 0.2em 0;
|
|
354
|
+
/*border: 1px solid red;*/
|
|
355
|
+
}
|
|
356
|
+
#description ul {
|
|
357
|
+
margin: 0.2em 0 0.5em 0;
|
|
358
|
+
/* border: 1px solid red; */
|
|
359
|
+
}
|
|
360
|
+
#description a {
|
|
361
|
+
background: #ffdead;
|
|
362
|
+
/* background: #eef; */
|
|
363
|
+
color: #8b4500;
|
|
364
|
+
text-decoration: none;
|
|
365
|
+
}
|
|
366
|
+
#description a:hover { text-decoration: underline; }
|
|
367
|
+
.method-description a {
|
|
368
|
+
background: #ffdead;
|
|
369
|
+
/* background: #eef; */
|
|
370
|
+
color: #8b4500;
|
|
371
|
+
text-decoration: none;
|
|
372
|
+
}
|
|
373
|
+
.method-description a:hover { text-decoration: underline; }
|
|
374
|
+
|
|
375
|
+
.method-description table
|
|
376
|
+
{
|
|
377
|
+
border-top: 1px solid brown;
|
|
378
|
+
border-bottom: 1px solid brown;
|
|
379
|
+
margin: 0.4em 2em 0.4em 2em;
|
|
380
|
+
}
|
|
381
|
+
.method-description li
|
|
382
|
+
{
|
|
383
|
+
padding: 0 0 0 0;
|
|
384
|
+
margin: 0 0 0 0;
|
|
385
|
+
|
|
386
|
+
}
|
|
387
|
+
.method-description p {
|
|
388
|
+
margin: 0.5em 0 0.2em 0;
|
|
389
|
+
/* border: 1px solid red; */
|
|
390
|
+
}
|
|
391
|
+
.method-description tt {
|
|
392
|
+
margin: 0.5em 0 0.2em 0;
|
|
393
|
+
font-weight: bold;
|
|
394
|
+
color: #000044;
|
|
395
|
+
}
|
|
396
|
+
.method-description ul {
|
|
397
|
+
margin: 0.2em 0 0.5em 0;
|
|
398
|
+
/* border: 1px solid red; */
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
/* --- Source code sections -------------------- */
|
|
403
|
+
|
|
404
|
+
a.source-toggle { font-size: 90%; }
|
|
405
|
+
div.method-source-code {
|
|
406
|
+
background: #262626;
|
|
407
|
+
color: #ffdead;
|
|
408
|
+
margin: 1em;
|
|
409
|
+
padding: 0.5em;
|
|
410
|
+
border: 1px dashed #999;
|
|
411
|
+
overflow: hidden;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
415
|
+
|
|
416
|
+
/* --- Ruby keyword styles --------------------- */
|
|
417
|
+
|
|
418
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
|
419
|
+
|
|
420
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
|
421
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
|
422
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
|
423
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
|
424
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
|
425
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
|
426
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
|
427
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
|
428
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|