upoj-rb
This gem is a collection of ruby dependencies which I have found useful for scripting, as well as a few additions to existing classes such as OptionParser.
Using
You can install upoj-rb on the command line:
gem install upoj-rb
Or add it to your project's Gemfile:
gem 'upoj-rb'
Then require and use it:
require 'upoj-rb'
puts Upoj::VERSION
Improved Option Parser
Customized version of ruby's OptionParser.
Funnel
By default, all options that are defined without a block can
be retrieved with #funnel
.
# define your options
opts = Upoj::Opts.new
opts.on('--option'){ # do whatever }
opts.on('-f', '--fubar')
opts.on('-v', '--value VALUE')
# parse
ARGV #=> [ '--option', '-f', '--value', '43' ]
opts.parse!
# retrieve options in funnel by default
opts.funnel #=> { 'fubar' => true, 'value' => 43 }
The funnel can be given at construction with initial values.
# starting funnel
funnel = { 'foo' => false }
# define your options
opts = Upoj::Opts.new
opts.on('-f', '--fubar')
# parse
ARGV #=> [ '--fubar' ]
opts.parse!
# retrieve the funnel with initial and new options
opts.funnel #=> { 'foo' => false, '--fubar' => true }
Structured Banner
A hash can be given for the banner.
banner = {
:usage => '[OPTION]... ARG1 ARG2',
:description => 'does stuff with ARG1 and ARG2.'
}
opts = Upoj::Opts.new :banner => banner
opts.on('-f', '--fubar', 'do something awful')
# the generated banner will look like this,
# with USAGE, OPTIONS and my_script in bold
my_script does stuff with ARG1 and ARG2.
USAGE
my_script [OPTION]... ARG1 ARG2
OPTIONS
-f, --fubar do something awful
Help and Usage
Automatically register -h
, --help
, -u
and --usage
switches
with #help!
and #usage!
.
opts = Upoj::Opts.new
# you can replace this:
opts.on('-u', '--usage', 'show this help and exit'){ puts opts; exit 0 }
# by this:
opts.usage!
Included Dependencies
- active_support/core_ext/array/extract_options
Extraction of hash options from the end of an array.
# extract options
args = [ 'a', 'b', { 'c' => 'd', 'e' => 'f' } ]
= args. #=> { 'c' => 'd', 'e' => 'f' }
# returns an empty hash if there are no options
args = [ 'a', 'b', 'c' ]
= args. #=> {}
# can be used to easily pass an optional hash to methods
def method *args
= args.
end
- active_support/core_ext/hash/indifferent_access
Hash that makes no difference between strings and symbols as keys.
h = HashWithIndifferentAccess.new 'a' => 'value a', :b => 'value b'
h['a'] #=> 'value a'
h[:a] #=> 'value a'
h['b'] #=> 'value b'
h[:b] #=> 'value b'
- active_support/core_ext/object/blank
#blank?
and #present?
methods to easily check
for empty strings, arrays, hashes, etc.
''.present? #=> false
''.blank? #=> true
[].blank? #=> true
{}.blank? #=> true
nil.blank? #=> true
- active_support/core_ext/object/try
Allows to attempt to call a method on an object and not throw an error if it's nil.
s = 'FUBAR'
s.try :downcase #=> 'fubar'
s = nil
s.try :downcase #=> nil
- active_support/core_ext/string/inflections
Useful string transformations.
'Module1::Module2::MyClass'.demodulize #=> 'MyClass'
- paint
Command-line color output.
Paint['fubar', :green]
Paint['fubar', :bold, :underline]
Copyright
Copyright (c) 2011 AlphaHydrae. See LICENSE.txt for further details.