Module: Trollop
- Defined in:
- lib/trollop.rb
Overview
lib/trollop.rb – trollop command-line processing library
- Author
-
William Morgan (mailto: [email protected])
- Copyright
-
Copyright 2007 William Morgan
- License
-
GNU GPL version 2
Defined Under Namespace
Classes: CommandlineError, HelpNeeded, Parser, VersionNeeded
Constant Summary collapse
- VERSION =
"1.8.2"
- 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(*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?
478 479 480 481 482 483 484 485 486 |
# File 'lib/trollop.rb', line 478 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(*a, &b) ⇒ Object
The top-level entry method into Trollop. Creates a Parser object, passes the block to it, then parses ARGV with it, handling any errors or requests for help or version information appropriately (and then exiting). Modifies ARGV in place. Returns a hash of option values.
The block passed in should contain one or more calls to #opt (Parser#opt), one or more calls to text (Parser#text), and probably a call to version (Parser#version).
See the synopsis in README.txt for examples.
440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 |
# File 'lib/trollop.rb', line 440 def *a, &b @p = Parser.new(*a, &b) begin vals = @p.parse ARGV ARGV.clear @p.leftovers.each { |l| ARGV << 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 |