Module | RIO::Doc::SYNOPSIS | lib/rio/doc/SYNOPSIS.rb |
Rio is a convenience class wrapping much of the functionality of IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO, OpenURI, Zlib, and CSV.
For the following assume:
astring = "" anarray = []
Copy or append a file to a string
rio('afile') > astring # copy rio('afile') >> astring # append
Copy or append a string to a file
rio('afile') < astring # copy rio('afile') << astring # append
Copy or append the lines of a file to an array
rio('afile') > anarray rio('afile') >> anarray
Copy or append a file to another file
rio('afile') > rio('another_file') rio('afile') >> rio('another_file')
Copy a file to a directory
rio('adir') << rio('afile')
Copy a directory structure to another directory
rio('adir') >> rio('another_directory')
Copy a web-page to a file
rio('http://rubydoc.org/') > rio('afile')
Ways to get the chomped lines of a file into an array
anarray = rio('afile').chomp[] # subscript operator rio('afile').chomp > anarray # copy-to operator anarray = rio('afile').chomp.to_a # to_a anarray = rio('afile').chomp.readlines # IO#readlines
Copy a gzipped file un-gzipping it
rio('afile.gz').gzip > rio('afile')
Copy a plain file, gzipping it
rio('afile.gz').gzip < rio('afile')
Copy a file from a ftp server into a local file un-gzipping it
rio('ftp://host/afile.gz').gzip > rio('afile')
Iterate over the entries in a directory
rio('adir').entries { |entrio| ... }
Iterate over only the files in a directory
rio('adir').files { |entrio| ... }
Iterate over only the .rb files in a directory
rio('adir').files('*.rb') { |entrio| ... }
Iterate over only the dot files in a directory
rio('adir').files(/^\./) { |entrio| ... }
Iterate over the files in a directory and its subdirectories, skipping ’.svn’ and ‘CVS’ directories
rio('adir').norecurse(/^\.svn$/,'CVS').files { |entrio| ... }
Create an array of the .rb entries in a directory
anarray = rio('adir')['*.rb']
Create an array of the .rb entries in a directory and its subdirectories
anarray = rio('adir').all['*.rb']
Iterate over the .rb files in a directory and its subdirectories
rio('adir').all.files('*.rb') { |entrio| ... }
Copy an entire directory structure and the .rb files within it
rio('adir').dirs.files('*.rb') > rio('another_directory')
Iterate over the first 10 chomped lines of a file
rio('afile').chomp.lines(0..9) { |line| ... }
Put the first 10 chomped lines of a file into an array
anarray = rio('afile').chomp.lines[0..9]
Copy the first 10 lines of a file into another file
rio('afile').lines(0..9) > rio('another_file')
Copy the first 10 lines of a file to stdout
rio('afile').lines(0..9) > rio(?-)
Copy the first 10 lines of a gzipped file on an ftp server to stdout
rio('ftp://host/afile.gz').gzip.lines(0..9) > rio(?-)
Put the first 100 chomped lines of a gzipped file into an array
anarray = rio('afile.gz').chomp.gzip[0...100]
Put chomped lines that start with ‘Rio’ into an array
anarray = rio('afile').chomp[/^Rio/]
Iterate over the non-empty, non-comment chomped lines of a file
rio('afile').chomp.skiplines(:empty?,/^\s*#/) { |line| ... }
Copy the output of th ps command into an array, skipping the header line and the ps command entry
rio(?-,'ps -a').skiplines(0,/ps$/) > anarray
Prompt for input and return what was typed
ans = rio(?-).print("Type Something: ").chomp.gets
Change the extension of all .htm files in a directory and its subdirectories to .html
rio('adir').rename.all.files('*.htm') do |htmfile| htmfile.extname = '.html' end
Create a symbolic link ‘asymlink’ in ‘adir’ which refers to ‘adir/afile‘
rio('adir/afile').symlink('adir/asymlink')
Copyright © 2005 Christopher Kleckner. All rights reserved.