Ruby Gems by Ivan Shikhalev
Overview
License
This code is distributed under the {file:LICENSE.md GNU Lesser General Public License}
Links
- Project @ GitHub
- Tracker & Wiki @ GitHub
- Documentation @ RubyDoc.info
“Command” Gem
This is helper for creating multi-command apps (like Git, for example).
Provides the {Is::Command} class.
Usage example
Application
require 'is/command'
app = Is::Command::Application.new do
key '-h', '--help' do
puts "#{$0} -h|--help|<command> <files>"
puts "\t-h, --help -- Show this help."
puts "\taccess <files> -- Show access time for files."
puts "\tcreate <files> -- Show creation time."
puts "\tmodify <files> -- Show modification time."
halt 0
end
action :access do |*args|
args.each do |filename|
puts "#{filename} => #{File.atime(filename)}"
end
end
action :create do |*args|
args.each do |filename|
puts "#{filename} => #{File.ctime(filename)}"
end
end
action :modify do |*args|
args.each do |filename|
puts "#{filename} => #{File.mtime(filename)}"
end
end
default do
$stderr.puts 'Command not found.'
halt 1
end
end
app.run # <=> app.process *ARGV
One-block application
require 'is/command'
Is::Command.runapp do
# ... key definitions like above
# ... action definitions...
end
Other object wrap
require 'is/command'
obj = Object.new
obj.instance_eval do
include Is::Command::Mixin # sic!
# ... key definitions like above
# ... action definitions...
end
obj.process *ARGV
Global object mixed
require 'is/command'
include Is::Command::Mixin
# ... key definitions like above
# ... action definitions...
process *ARGS
Links
ToDo
Console help automaker like the OptionParser.
“Lazy” Gem
Provides an object-placeholder for lazy and threaded calculations.
See the {Is::Lazy} module.
Links
“Monkey” Gems
Set of the monkey-patches.
See the {Module}, {Object} etc.