Module: Trollop
- Defined in:
- lib/timesheet/trollop.rb
Defined Under Namespace
Classes: CommandlineError, HelpNeeded, Parser, VersionNeeded
Constant Summary collapse
- VERSION =
"1.15"- 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?
749 750 751 752 753 754 755 756 757 |
# File 'lib/timesheet/trollop.rb', line 749 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.
711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 |
# File 'lib/timesheet/trollop.rb', line 711 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.message}." $stderr.puts "Try --help for help." exit(-1) rescue HelpNeeded @p.educate exit rescue VersionNeeded puts @p.version exit end end |