Library for command line option analysis.
features:
+--------------+ | OptionParser |<>-----+ +--------------+ | +--------+ | ,-| Switch | on_head -------->+---------------+ / +--------+ accept/reject -->| List |<|>- | |<|>- +----------+ on ------------->+---------------+ `-| argument | : : | class | +---------------+ |==========| on_tail -------->| | |pattern | +---------------+ |----------| OptionParser.accept ->| DefaultList | |converter | reject |(shared between| +----------+ | all instances)| +---------------+
Keyword completion module.
OptionParser::Completion#complete(key[, pat])
Searches key, or pat with completion if not found.
keyword to search.
completion pattern.
OptionParser::Completion#convert(opt, *val)
Extracts the first element from result of OptionParser::Completion#complete.
Map from option/keyword string to object with completion.
Hash
Individual switch class.
OptionParser::Switch.guess(arg)
Guesses argument style from arg. Returns corresponding OptionParser::Switch subclass.
OptionParser::Switch.new
OptionParser::Switch#parse_arg(arg) {non-serious error handler}
Parses argument and returns rest of arg, and matched portion to the argument pattern.
option argument to be parsed.
block
yields when the pattern doesn't match sub-string.
OptionParser::Switch#parse(arg, val) {semi-error handler}
Parses argument, convert and returns arg, block and result of conversion.
substrings matched to @pattern, $&, $1, $2 and so on.
argument string follows the switch.
following argument.
block
yields
at semi-error condition, instead of raises exception.
OptionParser::Switch#summarize(sdone, ldone, width, max, indent)
Makes summary strings.
already summarized short style options keyed hash.
already summarized long style options keyed hash.
width of left side, option part. in other word, right side, description part strings start at width column.
maximum width of left side, options are filled within max columns.
prefix string indents each summarized lines.
block
to be passed each lines(without newline).
Switch that takes no arguments.
OptionParser::Switch::NoArgument#parse
Raises an exception if any arguments given.
Switch that takes an argument.
OptionParser::Switch::RequiredArgument#parse
Raises an exception if argument is not present.
Switch that can omit argument.
OptionParser::Switch::OptionalArgument#parse
Parses argument if given, or uses default value.
Simple option list providing mapping from short and/or long option string to OptionParser::Switch, and mapping from acceptable argument to matching pattern and converter pair. Also provides summary feature.
OptionParser::List.new
Just initializes all instance variables.
OptionParser::List#atype
Map from acceptable argument types to pattern and converter pairs.
OptionParser::List#short
Map from short style option switches to actual switch objects.
OptionParser::List#long
Map from long style option switches to actual switch objects.
OptionParser::List#list
List of all switches and summary string.
OptionParser::List#accept(type[, pattern]) {...}
see OptionParser.accept.
OptionParser::List#reject(type)
see OptionParser.reject.
OptionParser::List#update(sw, sopts, lopts, nlopts = nil)
Adds sw according to sopts, lopts and nlopts.
OptionParser::Switch instance to be added.
short style options list.
long style options list.
negated long style options list.
OptionParser::List#prepend(switch, short_opts, long_opts, nolong_opts)
Inserts switch at head of the list, and associates short, long and negated long options.
OptionParser::List#append(switch, short_opts, long_opts, nolong_opts)
Appends switch at tail of the list, and associates short, long and negated long options.
OptionParser::Switch instance to be inserted.
list of short style options.
list of long style options.
list of long style options with "no-"
prefix.
OptionParser::List#search(id, key) [{block}]
Searches key in id list.
searching list.
searching key.
Block
yielded with the found value when succeeded.
OptionParser::List#complete(id, opt, *pat, &block)
Searches list id for opt and *pat.
searching list.
searching key.
optional pattern for completion.
Block
yielded with the found value when succeeded.
OptionParser::List#summarize(*args) {...}
Making summary table, yields the block
with each lines.
Each elements of @list
should be able to summarize
.
passed to elements#summarize through.
block
to be passed each lines(without newline).
Hash
with completion search feature.
Hash
OptionParser::CompletingHash#match(key)
Completion for hash key.
The front-end of OptionParser
.
OptionParser::ArgumentStyle
Enumeration of acceptable argument styles; possible values are:
the switch takes no arguments. (:NONE
)
the switch requires an argument. (:REQUIRED
)
the switch requires an optional argument, that is, may take or
not. (:OPTIONAL
)
Use like --switch=argument
(long style) or
-Xargument
(short style). For short style, only portion
matched to argument pattern is dealed as argument.
OptionParser::DefaultList
Switches common used such as '--', and also provides default argument classes
Default options, which never appear in option summary.
--help
Shows option summary.
--version
Shows version string if ::Version
is defined.
OptionParser.with([banner[, width[, indent]]]) [{...}]
Initializes new instance, and evaluates the block in context of
the instance if called as iterator. This behavior is equivalent
to older new
. This is deprecated method.
cf. OptionParser.new
banner message.
summary width.
summary indent.
Block
to be evaluated in the new instance context.
OptionParser.inc(arg[, default])
OptionParser#inc(arg[, default])
Returns incremented value of default according to arg.
OptionParser.new([banner[, width[, indent]]]) [{...}]
Initializes the instance, and yields itself if called as iterator.
banner message.
summary width.
summary indent.
Block
to be evaluated in the new instance context.
OptionParser.terminate([arg])
Terminates option parsing. Optional parameter arg would be pushed back if given.
string pushed back to be first non-option argument
OptionParser.accept(t, [pat]) {...}
OptionParser#accept(t, [pat]) {...}
Directs to accept specified class argument.
argument class specifier, any object including Class.
pattern for argument, defaulted to t if it respond to match
.
Block
receives argument string and should be convert to desired class.
OptionParser.reject(t)
OptionParser#reject(t)
Directs to reject specified class argument.
argument class specifier, any object including Class.
OptionParser#banner
OptionParser#banner=(heading)
Heading banner preceding summary.
OptionParser#summary_width
OptionParser#summary_width=(width)
Width for option list portion of summary. Must be Numeric
.
OptionParser#summary_indent
OptionParser#summary_indent=(indent)
Indentation for summary. Must be String
(or have + String
).
OptionParser#program_name
OptionParser#program_name=(name)
Program name to be emitted in error message and default banner,
defaulted to $0
.
OptionParser#version
OptionParser#version=(ver)
Version.
OptionParser#release
OptionParser#release=(rel)
Release code.
OptionParser#ver
Returns version string from program_name, version
and
release
.
OptionParser#top
OptionParser#base
Subject of on_tail.
OptionParser#new
Pushes a new List
.
OptionParser#remove
Removes the last List
.
OptionParser#summarize(to = [], width = @summary_width, max = width - 1, indent = @summary_indent)
Puts option summary into to, and returns to.
output destination, which must have method <<. Defaulted to []
.
width of left side. Defaulted to @summary_width
maximum length allowed for left side. Defaulted to width - 1
indentation. Defaulted to @summary_indent
Block
yields with each line if called as iterator.
OptionParser#to_str
OptionParser#to_s
Returns option summary string.
OptionParser#to_a
Returns option summary list.
OptionParser#switch
Creates OptionParser::Switch.
option definition:
acceptable option argument format, must pre-defined with
OptionParser.accept or OptionParser#accept, or
Regexp
. This can appear once or assigned as String
if not present, otherwise causes exception ArgumentError
.
possible argument values.
alternative way to give the handler.
specifies long style switch that takes mandatory, optional and no argument, respectively.
specifies short style switch that takes mandatory, optional and no argument, respectively.
special form short style switch that matches character range(not fullset of regular expression).
argument style and description.
description for this option.
Block
handler to convert option argument to arbitrary Class
.
OptionParser#notwice(obj, prv, msg)
Checks never given twice an argument. Called from OptionParser#switch only
new argument.
previously specified argument.
exception message
OptionParser#on(*opts) [{...}]
OptionParser#def_option(*opts) [{...}]
OptionParser#on_head(*opts) [{...}]
OptionParser#def_head_option(*opts) [{...}]
OptionParser#on_tail(*opts) [{...}]
OptionParser#def_tail_option(*opts) [{...}]
Defines option switch and handler. on_head
, def_head_option
and on_tail
, def_tail_option
put the switch at head
and tail of summary, respectively.
cf. OptionParser#switch.
OptionParser#order(*argv) [{...}]
OptionParser#order!([argv = ARGV]) [{...}]
Parses argv in order. When non-option argument encountered, yields it if called as iterator, otherwise terminates the parse process. Returns rest of argv left unparsed.
order!
takes argument array itself, and removes switches
destructively.
Defaults to parse ARGV.
command line arguments to be parsed.
Block
called with each non-option argument.
OptionParser#permute(*argv)
OptionParser#permute!([argv = ARGV])
Parses argv in permutation mode, and returns list of non-option arguments.
permute!
takes argument array itself, and removes switches
destructively.
Defaults to parse ARGV.
command line arguments to be parsed.
OptionParser#parse(*argv)
OptionParser#parse!([argv = ARGV])
Parses argv in order when environment variable POSIXLY_CORRECT
is set, otherwise permutation mode
parse!
takes argument array itself, and removes switches
destructively.
Defaults to parse ARGV.
command line arguments to be parsed.
OptionParser#visit(id, *args) {block}
Traverses stack
s calling method id with *args.
called method in each elements of stack
s.
passed to id.
Block
passed to id.
OptionParser#search(id, k)
Searches k in stack for id hash, and returns it or yielded value if called as iterator.
searching table.
searching key.
Block
yielded with the found value when succeeded.
OptionParser#complete(typ, opt, *etc)
Completes shortened long style option switch, and returns pair of canonical switch and switch descriptorOptionParser::Switch.
searching table.
searching key.
optional pattern for completion.
Block
yielded with the found value when succeeded.
OptionParser#load([filename])
Loads options from file named as filename. Does nothing when the file is not present. Returns whether successfuly loaded.
option file name. defaulted to basename of the program without suffix in a directory ~/.options.
OptionParser#environment([env])
Parses environment variable env or its uppercase with spliting like as shell.
defaulted to basename of the program.
any string, and no conversion. this is fall-back.
any none-empty string, and no conversion.
Ruby/C-like integer, octal for 0-7
sequence, binary for
0b
, hexadecimal for 0x
, and decimal for others; with
optional sign prefix. Converts to Integer
.
Float number format, and converts to Float
.
Generic numeric format, and converts to Integer
for integer
format, Float
for float format.
Decimal integer format, to be converted to Integer
.
Ruby/C like octal/hexadecimal/binary integer format, to be converted
to Integer
.
Decimal integer/float number format, to be converted to
Integer
for integer format, Float
for float format.
Boolean switch, which means whether it is present or not, whether it
is absent or not with prefix no-
, or it takes an argument
yes/no/true/false/+/-
.
Similar to TrueClass, but defaulted to false
.
List of strings separated by ","
Base class of exceptions from OptionParser
RuntimeError
Reason caused error.
OptionParser::ParseError#recover(argv)
Push backs erred argument(s) to argv.
OptionParser::ParseError#reason
Returns error reason. Override this to I18N.
OptionParser::ParseError#inspect
Returns inspection string.
OptionParser::ParseError#message
OptionParser::ParseError#to_s
OptionParser::ParseError#to_str
Default stringizing method to emit standard error message.
Raises when encountered ambiguously completable string.
Raises when encountered argument for switch defined as which takes no argument.
Raises when no argument found for switch defined as which needs argument.
Raises when undefined switch.
Raises when the given argument does not match required format.
Raises when the given argument word can't completed uniquely.
Extends command line arguments array to parse itself.
OptionParser::Arguable#options=(opt)
Sets OptionParser object, when opt is false
or
nil
, methods OptionParser::Arguable#options and
OptionParser::Arguable#options= are undefined. Thus, there
is no ways to access the OptionParser object via the
receiver object.
OptionParser::Arguable#options
Actual OptionParser object, automatically created if not yet.
If called as iterator, yields with the OptionParser object
and returns the result of the block. In this case, rescues any
OptionParser::ParseError exceptions in the block, just emits
error message to STDERR and returns nil
.
block
Yielded with the OptionParser instance.
OptionParser::Arguable#order!
OptionParser::Arguable#permute!
OptionParser::Arguable#parse!
Parses self destructively, and returns self just contains rest arguments left without parsed.
Initializes instance variable.
Acceptable argument classes. Now contains DecimalInteger
,
OctalInteger
and DecimalNumeric
.
see Acceptable argument classes.
see the opttest.rb