From: Lee Jarvis Date: 2011-03-28T20:26:40+09:00 Subject: [ANN] Slop 1.3.0 Slop ==== Website: http://github.com/injekt/slop Slop is a simple option collector with an easy to remember syntax and friendly API. Installation -------- ### Rubygems gem install slop ### GitHub git clone git://github.com/injekt/slop.git gem build slop.gemspec gem install slop-.gem Usage ----- # parse assumes ARGV, otherwise you can pass it your own Array opts = Slop.parse do on :v, :verbose, 'Enable verbose mode' # boolean value on :n, :name, 'Your name', true # compulsory argument on :s, :sex, 'Your sex', :optional => false # the same thing on :a, :age, 'Your age', :optional => true # optional argument end # if ARGV is `-v --name 'lee jarvis' -s male` opts.verbose? #=> true opts.name? #=> true opts[:name] #=> 'lee jarvis' opts.age? #=> false opts[:age] #=> nil You can also return your options as a Hash opts.to_hash #=> {'name' => 'Lee Jarvis', 'verbose' => true, 'age' => nil, 'sex' => 'male'} # Symbols opts.to_hash(true) #=> {:name => 'Lee Jarvis', :verbose => true, :age => nil, :sex => 'male'} If you don't like the method `on` (because it sounds like the option **expects** a block), you can use the `opt` or `option` alternatives. on :v, :verbose opt :v, :verbose option :v, :verbose If you don't like that Slop evaluates your block, or you want slop access inside of your block without referring to `self`, you can pass a block argument to `parse`. Slop.parse do |opts| opts.on :v, :verbose opts.on :n, :name, 'Your name', true end If you want some pretty output for the user to see your options, you can just send the Slop object to `puts` or use the `help` method. puts opts puts opts.help Will output something like -v, --verbose Enable verbose mode -n, --name Your name -a, --age Your age This version adds support for parsing multiple syntaxes from the command line, see https://gist.github.com/890309 for an example -- Posted via http://www.ruby-forum.com/.