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/ex/catcsv.rb
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
|
|
3
|
+
require 'rio'
|
|
4
|
+
require 'rio/argv'
|
|
5
|
+
# Concatonate all the CSV files in a directory, but only include the header
|
|
6
|
+
# line from one of them.
|
|
7
|
+
require 'optparse'
|
|
8
|
+
require 'optparse/time'
|
|
9
|
+
require 'ostruct'
|
|
10
|
+
require 'pp'
|
|
11
|
+
|
|
12
|
+
class CatCSVOptions
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
# Return a structure describing the options.
|
|
16
|
+
#
|
|
17
|
+
def self.parse(args)
|
|
18
|
+
# The options specified on the command line will be collected in *options*.
|
|
19
|
+
# We set default values here.
|
|
20
|
+
options = OpenStruct.new
|
|
21
|
+
options.outfile = nil
|
|
22
|
+
|
|
23
|
+
opts = OptionParser.new do |opts|
|
|
24
|
+
opts.banner = "Usage: #{$0} [options] csv_directory"
|
|
25
|
+
|
|
26
|
+
opts.separator ""
|
|
27
|
+
opts.separator "Specific options:"
|
|
28
|
+
|
|
29
|
+
opts.on("-o", "--output [OUTPUT_FILE]", "Specify the output CSV file") do |ofile|
|
|
30
|
+
options.outfile = ofile
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# No argument, shows at tail. This will print an options summary.
|
|
34
|
+
# Try it and see!
|
|
35
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
|
36
|
+
puts opts
|
|
37
|
+
exit
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Print the version.
|
|
41
|
+
opts.on_tail("--version", "Show version") do
|
|
42
|
+
puts OptionParser::Version.join('.')
|
|
43
|
+
exit
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
opts.parse!(args)
|
|
48
|
+
options
|
|
49
|
+
end # parse()
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
options = CatCSVOptions.parse(ARGV)
|
|
54
|
+
|
|
55
|
+
csvdir = RIO.ARGV.shift
|
|
56
|
+
unless csvdir
|
|
57
|
+
puts options
|
|
58
|
+
exit
|
|
59
|
+
end
|
|
60
|
+
output_file = options.outfile ? rio(options.outfile) : rio(csvdir.filename + '.all.csv')
|
|
61
|
+
|
|
62
|
+
output_file << rio(csvdir).files['*.csv'][0][0] << rio(csvdir).skip.lines(0)
|
|
63
|
+
|
|
64
|
+
__END__
|
data/ex/colx.rb
ADDED
data/ex/findinruby
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rio'
|
|
4
|
+
require 'rio/argv'
|
|
5
|
+
|
|
6
|
+
re = ARGV.shift
|
|
7
|
+
|
|
8
|
+
is_ruby_exe = proc{ |f| f.executable? and f.line[0] =~ /^#!.+ruby/ }
|
|
9
|
+
|
|
10
|
+
RIO.ARGV.each do |rpath|
|
|
11
|
+
rpath.norecurse('.svn','pkg').files('*.rb',is_ruby_exe) do |f|
|
|
12
|
+
print f.lines(/#{re}/).map{ |l| "#{f}: #{l}" }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
__END__
|
data/ex/findruby
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rio'
|
|
4
|
+
require 'rio/argv'
|
|
5
|
+
|
|
6
|
+
is_ruby_exe = proc{ |f| f.executable? and f.line[0] =~ /^#!.+ruby/ }
|
|
7
|
+
|
|
8
|
+
RIO.ARGV.each do |rpath|
|
|
9
|
+
rpath.norecurse('.svn','pkg').files('*.rb',is_ruby_exe) do |f|
|
|
10
|
+
puts f
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
__END__
|
data/ex/passwd_report.rb
ADDED
data/ex/prompt.rb
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
|
|
3
|
+
require 'rio'
|
|
4
|
+
|
|
5
|
+
ans = rio(?-).chomp.print("Type Something: ").gets
|
|
6
|
+
rio(?-).puts("You typed '#{ans}'")
|
|
7
|
+
|
|
8
|
+
# Could also be written like this
|
|
9
|
+
#
|
|
10
|
+
#stdio = rio(?-).chomp
|
|
11
|
+
#ans = stdio.print("Type Something: ").gets
|
|
12
|
+
#stdio.puts("You typed '#{ans}'")
|
|
13
|
+
#
|
|
14
|
+
# Or even this
|
|
15
|
+
#
|
|
16
|
+
#stdio = rio(?-).chomp
|
|
17
|
+
#stdio.puts("You typed '#{stdio.print("Type Something: ").gets}'")
|
|
18
|
+
#
|
|
19
|
+
# Or this
|
|
20
|
+
#
|
|
21
|
+
#rio(?-).puts("You typed '#{rio(?-).chomp.print("Type Something: ").gets}'")
|
|
22
|
+
#
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
__END__
|
data/ex/rgb.txt.gz
ADDED
|
Binary file
|
data/ex/riocat
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rio'
|
|
4
|
+
|
|
5
|
+
# riocat: reads from stdin and writes it to stdout
|
|
6
|
+
# example use:
|
|
7
|
+
# riocat < afile.txt >bfile.txt
|
|
8
|
+
#
|
|
9
|
+
# explanation:
|
|
10
|
+
#
|
|
11
|
+
# rio(?-)
|
|
12
|
+
# rio(?-): a rio that will be connected to stdin or stdout depending how it is used
|
|
13
|
+
#
|
|
14
|
+
# rio(?-)
|
|
15
|
+
# rio(?-): a rio that will be connected to stdin or stdout depending how it is used
|
|
16
|
+
#
|
|
17
|
+
# <
|
|
18
|
+
# <: copy operator indicating rio on left is written to and the rio on the right is read from
|
|
19
|
+
#
|
|
20
|
+
rio(?-) < ?-
|
|
21
|
+
|
|
22
|
+
#
|
|
23
|
+
# this could also be written
|
|
24
|
+
# rio(?-) < rio(?-)
|
|
25
|
+
# or
|
|
26
|
+
# rio(?-) > ?-
|
|
27
|
+
# or
|
|
28
|
+
# rio(?-) > rio(?-)
|
|
29
|
+
#
|
|
30
|
+
#
|
|
31
|
+
# this is similar but reads the entire file before writing
|
|
32
|
+
# rio(?-).print!( rio(?-).slurp )
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
#rio(?-).print!( rio(?-).slurp)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# DONT DO THIS:
|
|
40
|
+
#io = rio(?-)
|
|
41
|
+
#io.print!( io.slurp )
|
|
42
|
+
|
data/ex/riogunzip
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'rio'
|
|
3
|
+
# riogunzip: reads from stdin, gzips and writes it to stdout
|
|
4
|
+
# example use:
|
|
5
|
+
# riogunzip < afile.txt.gz
|
|
6
|
+
#
|
|
7
|
+
# explanation:
|
|
8
|
+
#
|
|
9
|
+
# rio(?-).gzip
|
|
10
|
+
# rio(?-): a rio that will be connected to stdin or stdout depending how it is used
|
|
11
|
+
# .gzip: filter the input or output through Zlib:Gzip[Reader or Writer]
|
|
12
|
+
#
|
|
13
|
+
# rio(?-)
|
|
14
|
+
# rio(?-): a rio that will be connected to stdin or stdout depending how it is used
|
|
15
|
+
#
|
|
16
|
+
# <
|
|
17
|
+
# rio copy operator indicating the direction of data
|
|
18
|
+
# pointed in this direction the rio on the right is read from and the one on the left is
|
|
19
|
+
# written. (or stdin and stdout respectively)
|
|
20
|
+
#
|
|
21
|
+
rio(?-).gzip > rio(?-)
|
|
22
|
+
|
|
23
|
+
# could be written this way
|
|
24
|
+
# rio(?-) < rio(?-).gzip
|
|
25
|
+
#
|
|
26
|
+
# this is similar, but reads the entire file in before writing it out
|
|
27
|
+
# rio(?-).print!( rio(?-).gzip.contents )
|
|
28
|
+
#
|
|
29
|
+
#rio(?-).gzip.each_record do |rec|
|
|
30
|
+
# rio(?-).print(rec)
|
|
31
|
+
#end
|
data/ex/riogzip
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'rio'
|
|
3
|
+
# riogzip: reads from stdin, gzips and writes it to stdout
|
|
4
|
+
# example use:
|
|
5
|
+
# riogzip < afile.txt > afile.txt.gz
|
|
6
|
+
#
|
|
7
|
+
# explanation:
|
|
8
|
+
#
|
|
9
|
+
# rio(?-).gzip
|
|
10
|
+
# rio(?-): a rio that will be connected to stdin or stdout depending how it is used
|
|
11
|
+
# .gzip: filter the input or output through Zlib:Gzip[Reader or Writer]
|
|
12
|
+
#
|
|
13
|
+
# rio(?-)
|
|
14
|
+
# rio(?-): a rio that will be connected to stdin or stdout depending how it is used
|
|
15
|
+
#
|
|
16
|
+
# <
|
|
17
|
+
# rio copy operator indicating the direction of data
|
|
18
|
+
|
|
19
|
+
rio(?-).gzip < rio(?-)
|
|
20
|
+
|
|
21
|
+
#
|
|
22
|
+
# could also be written:
|
|
23
|
+
# rio(?-) > rio(?-).gzip
|
|
24
|
+
#
|
data/ex/rioprompt.rb
ADDED
data/ex/targz2zip
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
|
|
3
|
+
require 'rio'
|
|
4
|
+
require 'rio/argv'
|
|
5
|
+
|
|
6
|
+
# Create a zip archive from a gzipped tar archive.
|
|
7
|
+
# This depends on the GNU programs 'tar' and 'zip' being available in your PATH
|
|
8
|
+
|
|
9
|
+
TAR='tar'
|
|
10
|
+
ZIP='zip'
|
|
11
|
+
|
|
12
|
+
RIO.ARGV.each { |f|
|
|
13
|
+
f.ext('.tar.gz') if f =~ /\.tar\.gz$/
|
|
14
|
+
rio(??).chdir {
|
|
15
|
+
rio(?-,"#{TAR} xvzkf #{f.abs}") | "#{ZIP} -@ #{f.abs.dirname/f.basename+'.zip'}" | ?-
|
|
16
|
+
}
|
|
17
|
+
}
|
data/ex/tonl
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
class AbstractMethodCalled < ::TypeError #:nodoc: all
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class Module #:nodoc: all
|
|
41
|
+
# abstract_method(symbol, ...)
|
|
42
|
+
# extends Module
|
|
43
|
+
# defines a method which raises AbstractMethodCalled
|
|
44
|
+
# used in a base class to ensure that subclasses define an implementation
|
|
45
|
+
# thus making the base class abstract
|
|
46
|
+
def abstract_method(*syms)
|
|
47
|
+
for symbol in syms
|
|
48
|
+
module_eval <<-"end_eval"
|
|
49
|
+
def #{symbol.id2name}(*args)
|
|
50
|
+
raise AbstractMethodCalled
|
|
51
|
+
end
|
|
52
|
+
end_eval
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
data/lib/rio/argv.rb
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
|
|
38
|
+
require 'rio'
|
|
39
|
+
|
|
40
|
+
module RIO
|
|
41
|
+
def ARGV()
|
|
42
|
+
::ARGV.map { |path| rio(path) }
|
|
43
|
+
end
|
|
44
|
+
module_function :ARGV
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
if $0 == __FILE__
|
|
48
|
+
eval DATA.read, nil, $0, __LINE__+4
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
__END__
|
|
52
|
+
|
|
53
|
+
puts
|
|
54
|
+
puts("Run the tests that came with the distribution")
|
|
55
|
+
puts("From the distribution directory use 'test/runtests.rb'")
|
|
56
|
+
puts
|
data/lib/rio/arycopy.rb
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
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 AryCopy #:nodoc: all
|
|
39
|
+
def >>(dest)
|
|
40
|
+
rio(?") << self >> dest
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|