Module: Trollop
- Defined in:
- lib/trollop.rb
Defined Under Namespace
Classes: CommandlineError, HelpNeeded, Parser, VersionNeeded
Constant Summary collapse
- VERSION =
"1.13"- FLOAT_RE =
Regex for floating point numbers
/^-?((\d+(\.\d+)?)|(\.\d+))$/- PARAM_RE =
Regex for parameters
/^-(-|\.$|[^\d\.])/
Class Method Summary collapse
-
.die(arg, msg = nil) ⇒ Object
Informs the user that their usage of 'arg' was wrong, as detailed by 'msg', and dies.
-
.options(args = ARGV, *a, &b) ⇒ Object
The top-level entry method into Trollop.
Class Method Details
.die(arg, msg = nil) ⇒ Object
Informs the user that their usage of 'arg' was wrong, as detailed by 'msg', and dies. Example:
do
opt :volume, :default => 0.0
end
die :volume, "too loud" if opts[:volume] > 10.0
die :volume, "too soft" if opts[:volume] < 0.1
In the one-argument case, simply print that message, a notice about -h, and die. Example:
do
opt :whatever # ...
end
Trollop::die "need at least one filename" if ARGV.empty?
723 724 725 726 727 728 729 730 731 |
# File 'lib/trollop.rb', line 723 def die arg, msg=nil if msg $stderr.puts "Error: argument --#{@p.specs[arg][:long]} #{msg}." else $stderr.puts "Error: #{arg}." end $stderr.puts "Try --help for help." exit(-1) end |
.options(args = ARGV, *a, &b) ⇒ Object
The top-level entry method into Trollop. Creates a Parser object,
passes the block to it, then parses args with it, handling any
errors or requests for help or version information appropriately (and
then exiting). Modifies args in place. Returns a hash of option
values.
The block passed in should contain zero or more calls to opt
(Parser#opt), zero or more calls to text (Parser#text), and
probably a call to version (Parser#version).
The returned block contains a value for every option specified with
opt. The value will be the value given on the commandline, or the
default value if the option was not specified on the commandline. For
every option specified on the commandline, a key "
Example:
require 'trollop'
opts = Trollop:: do
opt :monkey, "Use monkey mode" # a flag --monkey, defaulting to false
opt :goat, "Use goat mode", :default => true # a flag --goat, defaulting to true
opt :num_limbs, "Number of limbs", :default => 4 # an integer --num-limbs <i>, defaulting to 4
opt :num_thumbs, "Number of thumbs", :type => :int # an integer --num-thumbs <i>, defaulting to nil
end
## if called with no arguments
p opts # => { :monkey => false, :goat => true, :num_limbs => 4, :num_thumbs => nil }
## if called with --monkey
p opts # => {:monkey_given=>true, :monkey=>true, :goat=>true, :num_limbs=>4, :help=>false, :num_thumbs=>nil}
See more examples at http://trollop.rubyforge.org.
685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 |
# File 'lib/trollop.rb', line 685 def args = ARGV, *a, &b @p = Parser.new(*a, &b) begin vals = @p.parse args args.clear @p.leftovers.each { |l| args << l } vals rescue CommandlineError => e $stderr.puts "Error: #{e.}." $stderr.puts "Try --help for help." exit(-1) rescue HelpNeeded @p.educate exit rescue VersionNeeded puts @p.version exit end end |