Ruby scripting utilities
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.document
.gitignore
.rspec
.rvmrc
.travis.yml
Gemfile
Gemfile.lock
LICENSE.txt
README.md
Rakefile
VERSION
upoj-rb.gemspec

README.md

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.

Tested with RSpec, shoulda and Travis CI.

  • master Build Status
  • develop Build Status

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 :funnel => funnel
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' } ] options = args.extract_options! #=> { 'c' => 'd', 'e' => 'f' }

    # returns an empty hash if there are no options args = [ 'a', 'b', 'c' ] options = args.extract_options! #=> {}

    # can be used to easily pass an optional hash to methods def method *args options = args.extract_options! 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.