jparseargs.tcl
Introduction
The
jparseargs.tcl library is distributed as part of the
jstools package. It consists of procedures to procedure and application
arguments in the typical Tcl `-option
value' format.
This document describes
jparseargs.tcl version 4.1/4.2.
Usage
Accessing the Library
In order to use the
jparseargs.tcl library, it (and any other libraries it depends on) must be
in your Tcl
auto_path, described in
tclvars(n). Information about how to arrange that, and other conventions
common to
the
jstools libraries, is in
the
Usage section of
The jstools Libraries.
Credits and Copyright
Author
Jay Sekora
js@aq.org
http://shore.net/~js/
Copyright
The library is copyright © 1992-1995 by Jay Sekora, but may be
freely redistributed under the conditions at the top of the file.
Overview
Procedures
j:parse_args - parse option list in parent procedure
j:parse_argv - parse
argv variable (options to script)
j:parse_args
Usage
proc procname { args } {
j:parse_args
arglist
...}
Argument
arglist - list of
{option
default} pairs
Example
proc alert { args } {
j:parse_args {
{title "Alert"}
{text "Alert!"}
{ok "OK"}
}
toplevel .foo
wm title .foo $title
message .foo.msg -text $text
button .foo.btn -text $ok -command {destroy .foo}
pack .foo.msg .foo.btn
}
Description
This procedure is used by almost all the other procedures in
jlibrary.tcl. It extracts options from the variable
args in the parent procedure, and sets corresponding variables,
also in the parent procedure. (See the
proc(1) manual page for an explanation of the
args variable.) Its argument is a list of
{option
default} sublists. For each pair, the parent's
args variable is scanned for elements matching
option, preceded by a hyphen. (For instance, if an
option is `title',
j:parse_args searches for `-title'.) If a match is found, the following word is used as the
value of that parameter, and a variable with the name
option is set to that value in the parent procedure. (To continue
the example, the parent's variable
title would be set to the element following `-title' in
$args.) If no match is found, the parent's
option variable is set to the value of
default.
Although not as flexible as
getopt(3), this procedure makes it fairly easy to process lists of optional
arguments.
j:parse_argv
Usage
j:parse_args
arglist
Argument
arglist - list of
{option
default} pairs
Example
j:parse_argv {
{font Courier10}
{headerfont Times-Bold12}
{columns 1}
{orient portrait}
}
Description
This procedure is almost identical to
j:parse_args, but instead of parsing the
args variable in a procedure, it parses the global
argv variable. I.e., instead of parsing procedure arguments,
it parses script arguments.
It removes any items it processes from
argv, and sets
argc to the length of
argv when it's done.
For more information about the
argv and
argc variables, see the
wish(1) or
tclsh(1) manual page.
Future Directions
* There should be a way to make aliases for existing options,
in the same way that
-bd is an alias for
-borderwidth in Tk.
* There should be a way to specify boolean options which don't
take an argument, but set a variable to
1 if they appear, and
0 otherwise.