cmdr
Check-in [9223d03cfb]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Updated embedded documentation
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:9223d03cfbfca22630cdf2a26f91e7be1c3a9328
User & Date: aku 2013-11-15 00:31:46
Context
2013-11-15
00:51
Split the large DSL document into several smaller pieces: introduction, officer, private, parameter check-in: daa000e429 user: andreask tags: trunk
00:31
Updated embedded documentation check-in: 9223d03cfb user: aku tags: trunk
2013-11-14
23:37
DSL docs mostly complete. Still possible to split into multiple documents. Still to do related docs on execution flow. check-in: df9e5b0c47 user: andreask tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to embedded/man/files/cmdr.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr" n 0 doc "<<unknown>>"
          242  +.TH "cmdr" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr \- Cmdr - Main package and API
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::util \fR
   248    248   .sp
   249    249   \fB::cmdr\fR \fBnew\fR \fIname\fR \fIspecification\fR
................................................................................
   283    283   .TP
   284    284   string \fIname\fR
   285    285   The user-visible name of the command (hierarchy)\&.
   286    286   .TP
   287    287   script \fIactions\fR
   288    288   The specification of the subordinate commands\&. On the command line
   289    289   these are the toplevel commands of the application using the
   290         -hierarchy\&.
   291         -Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
          290  +hierarchy\&. Please read \fICmdr - Specification Language\fR, (section "Officers")
          291  +for the details\&.
   292    292   .RE
   293    293   .TP
   294    294   \fB::cmdr\fR \fBinteractive\fR ?\fIenable\fR?
   295    295   This command globally (de)activates the interactive parts of the
   296    296   framework, as per the value of \fIenable\fR\&.
   297    297   .sp
   298    298   By default (initial state) the framework allows interaction\&.

Changes to embedded/man/files/cmdr_actor.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_actor" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_actor" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_actor \- Cmdr - Base class for officers and privates - Internal
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::util \fR
   248    248   .sp
   249    249   \fB::cmdr::actor\fR \fBnew\fR

Changes to embedded/man/files/cmdr_changes.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_changes" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_changes" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_changes \- Cmdr - Log of Changes
   246    246   .SH DESCRIPTION
   247    247   .PP
   248    248   Welcome to the Cmdr project, written by Andreas Kupries\&.
   249    249   .PP

Changes to embedded/man/files/cmdr_config.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_config" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_config" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_config \- Cmdr - Collection of parameters for privates
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::util \fR
   248    248   .sp
   249    249   \fB::cmdr::config\fR \fBnew\fR \fIcontext\fR \fIspec\fR
................................................................................
   354    354   .TP
   355    355   cmdr::config \fIcontext\fR
   356    356   The instance command of the \fBcmdr::private\fR instance the configuration
   357    357   will belong to\&.
   358    358   .TP
   359    359   script \fIspec\fR
   360    360   Tcl-script specifying the parameters in detail\&. Please read
   361         -\fICmdr - Specification Language\fR, section --TODO-- for the details\&.
          361  +\fICmdr - Specification Language\fR (section "Parameters") for the details\&.
   362    362   .RE
   363    363   .TP
   364    364   \fB::cmdr::config\fR \fBinteractive\fR ?\fIenable\fR?
   365    365   Class method to change the global interaction default for the
   366    366   mini-shell of privates\&. The default is to disable this mini-shell
   367    367   for all privates, and enable it on a per-private basis, through
   368    368   the specification\&.

Added embedded/man/files/cmdr_dsl.n.

            1  +'\"
            2  +'\" Generated from file 'cmdr_dsl\&.man' by tcllib/doctools with format 'nroff'
            3  +'\" Copyright (c) 2013 Andreas Kupries
            4  +'\" Copyright (c) 2013 Documentation, Andreas Kupries
            5  +'\"
            6  +'\" The definitions below are for supplemental macros used in Tcl/Tk
            7  +'\" manual entries.
            8  +'\"
            9  +'\" .AP type name in/out ?indent?
           10  +'\"	Start paragraph describing an argument to a library procedure.
           11  +'\"	type is type of argument (int, etc.), in/out is either "in", "out",
           12  +'\"	or "in/out" to describe whether procedure reads or modifies arg,
           13  +'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
           14  +'\"	needed;  use .AS below instead)
           15  +'\"
           16  +'\" .AS ?type? ?name?
           17  +'\"	Give maximum sizes of arguments for setting tab stops.  Type and
           18  +'\"	name are examples of largest possible arguments that will be passed
           19  +'\"	to .AP later.  If args are omitted, default tab stops are used.
           20  +'\"
           21  +'\" .BS
           22  +'\"	Start box enclosure.  From here until next .BE, everything will be
           23  +'\"	enclosed in one large box.
           24  +'\"
           25  +'\" .BE
           26  +'\"	End of box enclosure.
           27  +'\"
           28  +'\" .CS
           29  +'\"	Begin code excerpt.
           30  +'\"
           31  +'\" .CE
           32  +'\"	End code excerpt.
           33  +'\"
           34  +'\" .VS ?version? ?br?
           35  +'\"	Begin vertical sidebar, for use in marking newly-changed parts
           36  +'\"	of man pages.  The first argument is ignored and used for recording
           37  +'\"	the version when the .VS was added, so that the sidebars can be
           38  +'\"	found and removed when they reach a certain age.  If another argument
           39  +'\"	is present, then a line break is forced before starting the sidebar.
           40  +'\"
           41  +'\" .VE
           42  +'\"	End of vertical sidebar.
           43  +'\"
           44  +'\" .DS
           45  +'\"	Begin an indented unfilled display.
           46  +'\"
           47  +'\" .DE
           48  +'\"	End of indented unfilled display.
           49  +'\"
           50  +'\" .SO
           51  +'\"	Start of list of standard options for a Tk widget.  The
           52  +'\"	options follow on successive lines, in four columns separated
           53  +'\"	by tabs.
           54  +'\"
           55  +'\" .SE
           56  +'\"	End of list of standard options for a Tk widget.
           57  +'\"
           58  +'\" .OP cmdName dbName dbClass
           59  +'\"	Start of description of a specific option.  cmdName gives the
           60  +'\"	option's name as specified in the class command, dbName gives
           61  +'\"	the option's name in the option database, and dbClass gives
           62  +'\"	the option's class in the option database.
           63  +'\"
           64  +'\" .UL arg1 arg2
           65  +'\"	Print arg1 underlined, then print arg2 normally.
           66  +'\"
           67  +'\" RCS: @(#) $Id: man.macros,v 1.1 2009/01/30 04:56:47 andreas_kupries Exp $
           68  +'\"
           69  +'\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
           70  +.if t .wh -1.3i ^B
           71  +.nr ^l \n(.l
           72  +.ad b
           73  +'\"	# Start an argument description
           74  +.de AP
           75  +.ie !"\\$4"" .TP \\$4
           76  +.el \{\
           77  +.   ie !"\\$2"" .TP \\n()Cu
           78  +.   el          .TP 15
           79  +.\}
           80  +.ta \\n()Au \\n()Bu
           81  +.ie !"\\$3"" \{\
           82  +\&\\$1	\\fI\\$2\\fP	(\\$3)
           83  +.\".b
           84  +.\}
           85  +.el \{\
           86  +.br
           87  +.ie !"\\$2"" \{\
           88  +\&\\$1	\\fI\\$2\\fP
           89  +.\}
           90  +.el \{\
           91  +\&\\fI\\$1\\fP
           92  +.\}
           93  +.\}
           94  +..
           95  +'\"	# define tabbing values for .AP
           96  +.de AS
           97  +.nr )A 10n
           98  +.if !"\\$1"" .nr )A \\w'\\$1'u+3n
           99  +.nr )B \\n()Au+15n
          100  +.\"
          101  +.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
          102  +.nr )C \\n()Bu+\\w'(in/out)'u+2n
          103  +..
          104  +.AS Tcl_Interp Tcl_CreateInterp in/out
          105  +'\"	# BS - start boxed text
          106  +'\"	# ^y = starting y location
          107  +'\"	# ^b = 1
          108  +.de BS
          109  +.br
          110  +.mk ^y
          111  +.nr ^b 1u
          112  +.if n .nf
          113  +.if n .ti 0
          114  +.if n \l'\\n(.lu\(ul'
          115  +.if n .fi
          116  +..
          117  +'\"	# BE - end boxed text (draw box now)
          118  +.de BE
          119  +.nf
          120  +.ti 0
          121  +.mk ^t
          122  +.ie n \l'\\n(^lu\(ul'
          123  +.el \{\
          124  +.\"	Draw four-sided box normally, but don't draw top of
          125  +.\"	box if the box started on an earlier page.
          126  +.ie !\\n(^b-1 \{\
          127  +\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
          128  +.\}
          129  +.el \}\
          130  +\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
          131  +.\}
          132  +.\}
          133  +.fi
          134  +.br
          135  +.nr ^b 0
          136  +..
          137  +'\"	# VS - start vertical sidebar
          138  +'\"	# ^Y = starting y location
          139  +'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
          140  +.de VS
          141  +.if !"\\$2"" .br
          142  +.mk ^Y
          143  +.ie n 'mc \s12\(br\s0
          144  +.el .nr ^v 1u
          145  +..
          146  +'\"	# VE - end of vertical sidebar
          147  +.de VE
          148  +.ie n 'mc
          149  +.el \{\
          150  +.ev 2
          151  +.nf
          152  +.ti 0
          153  +.mk ^t
          154  +\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
          155  +.sp -1
          156  +.fi
          157  +.ev
          158  +.\}
          159  +.nr ^v 0
          160  +..
          161  +'\"	# Special macro to handle page bottom:  finish off current
          162  +'\"	# box/sidebar if in box/sidebar mode, then invoked standard
          163  +'\"	# page bottom macro.
          164  +.de ^B
          165  +.ev 2
          166  +'ti 0
          167  +'nf
          168  +.mk ^t
          169  +.if \\n(^b \{\
          170  +.\"	Draw three-sided box if this is the box's first page,
          171  +.\"	draw two sides but no top otherwise.
          172  +.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
          173  +.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
          174  +.\}
          175  +.if \\n(^v \{\
          176  +.nr ^x \\n(^tu+1v-\\n(^Yu
          177  +\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
          178  +.\}
          179  +.bp
          180  +'fi
          181  +.ev
          182  +.if \\n(^b \{\
          183  +.mk ^y
          184  +.nr ^b 2
          185  +.\}
          186  +.if \\n(^v \{\
          187  +.mk ^Y
          188  +.\}
          189  +..
          190  +'\"	# DS - begin display
          191  +.de DS
          192  +.RS
          193  +.nf
          194  +.sp
          195  +..
          196  +'\"	# DE - end display
          197  +.de DE
          198  +.fi
          199  +.RE
          200  +.sp
          201  +..
          202  +'\"	# SO - start of list of standard options
          203  +.de SO
          204  +.SH "STANDARD OPTIONS"
          205  +.LP
          206  +.nf
          207  +.ta 4c 8c 12c
          208  +.ft B
          209  +..
          210  +'\"	# SE - end of list of standard options
          211  +.de SE
          212  +.fi
          213  +.ft R
          214  +.LP
          215  +See the \\fBoptions\\fR manual entry for details on the standard options.
          216  +..
          217  +'\"	# OP - start of full description for a single option
          218  +.de OP
          219  +.LP
          220  +.nf
          221  +.ta 4c
          222  +Command-Line Name:	\\fB\\$1\\fR
          223  +Database Name:	\\fB\\$2\\fR
          224  +Database Class:	\\fB\\$3\\fR
          225  +.fi
          226  +.IP
          227  +..
          228  +'\"	# CS - begin code excerpt
          229  +.de CS
          230  +.RS
          231  +.nf
          232  +.ta .25i .5i .75i 1i
          233  +..
          234  +'\"	# CE - end code excerpt
          235  +.de CE
          236  +.fi
          237  +.RE
          238  +..
          239  +.de UL
          240  +\\$1\l'|0\(ul'\\$2
          241  +..
          242  +.TH "cmdr_dsl" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
          243  +.BS
          244  +.SH NAME
          245  +cmdr_dsl \- Cmdr - Specification Language
          246  +.SH DESCRIPTION
          247  +.PP
          248  +Welcome to the Cmdr project, written by Andreas Kupries\&.
          249  +.PP
          250  +For availability please read \fICmdr - How To Get The Sources\fR\&.
          251  +.PP
          252  +This document is for users of the cmdr framework\&. It describes the
          253  +domain-specific language for the specification of command hierarchies
          254  +with commands and their parameters (options, and inputs)\&.
          255  +.SH "INTRODUCTORY EXAMPLES"
          256  +Instead of immediately diving into the full syntax of the
          257  +specification language first a few examples to demonstrate the general
          258  +look and feel, plus basic features\&.
          259  +.SS "BASIC SETUP, PRIVATE WITH INPUTS"
          260  +.PP
          261  +This example specifies a command line providing 3 commands for
          262  +the management of command aliases\&.
          263  +This is actually a slice of \fBstackato\fR's interface, reduced and
          264  +modified to fit here\&.
          265  +While it does not have the necessary backend procedures required to
          266  +actually run the commands, it is enough to demonstrate basic features,
          267  +namely the declaration of "privates" with "input" parameters\&.
          268  +.PP
          269  +"privates" are the actual commands, the leaves at the bottom of
          270  +the hierarchy\&. Their "inputs" are positional parameters, i\&.e\&. the
          271  +association of argument words on a command line to parameter is done
          272  +in order of occurence (on command line, and in the specification)\&.
          273  +.CS
          274  +
          275  +
          276  +# -*- tcl -*
          277  +package require Tcl 8\&.5
          278  +package require cmdr
          279  +package require foo-backend
          280  +
          281  +cmdr create ::foo foo {
          282  +    private alias+ {
          283  +	description {
          284  +	    Create a shortcut for a command (prefix)\&.
          285  +	}
          286  +	input name {
          287  +	    The name of the new shortcut\&.
          288  +	} {
          289  +	    validate ::foo::backend::vt::notacommand
          290  +	}
          291  +	input command {
          292  +	    The command (prefix) the name will map to\&.
          293  +	} {
          294  +	    list
          295  +	}
          296  +    } ::foo::backend::alias::add
          297  +
          298  +    private alias- {
          299  +	description {
          300  +	    Remove a shortcut by name\&.
          301  +	}
          302  +	input name {
          303  +	    The name of the shortcut to remove\&.
          304  +	} {
          305  +	    validate ::foo::backend::vt::aliasname
          306  +	}
          307  +    } ::foo::backend::alias::remove
          308  +
          309  +    private alias? {
          310  +	description {
          311  +	    List the known aliases (shortcuts)\&.
          312  +	}
          313  +    } ::foo::backend::alias::list
          314  +}
          315  +
          316  +foo do {*}$argv
          317  +exit
          318  +
          319  +.CE
          320  +.PP
          321  +At the bottom of the example, just above we can also see the
          322  +very simple Tcl command which invokes the command line processing for
          323  +a list of words, here coming from \fB$argv\fR, i\&.e\&. the application's
          324  +command line\&.
          325  +.SS "BASIC SETUP, COMMAND NESTING"
          326  +.PP
          327  +The decoupling of command names from their implementations seen
          328  +in the previous example makes it easy to re-arrange and re-label the
          329  +user visible commands without having to touch any other part of the
          330  +code\&.
          331  +.PP
          332  +This is demonstrated in the example below, moving the 3
          333  +"privates" into an "officer" and renaming them, without changing the
          334  +actions\&. Note that the parameter specifications were removed for
          335  +clarity, as they were not changed compared to the original example\&.
          336  +.PP
          337  +"officers" are named inner nodes in the command hierarchy\&. They
          338  +aggregate related commands, which may not only be "privates" as seen
          339  +here, but sub-officers as well\&.
          340  +.CS
          341  +
          342  +
          343  +\&.\&.\&.
          344  +cmdr create ::foo foo {
          345  +    officer alias {
          346  +	description {
          347  +	    A collection of commands to manage
          348  +	    user-specific shortcuts for command
          349  +	    entry
          350  +	}
          351  +
          352  +	private add {
          353  +	    \&.\&.\&.
          354  +	} ::foo::backend::alias::add
          355  +
          356  +	private remove {
          357  +	    \&.\&.\&.
          358  +	} ::foo::backend::alias::remove
          359  +
          360  +	private list {
          361  +	    \&.\&.\&.
          362  +	} ::foo::backend::alias::list
          363  +    }
          364  +}
          365  +\&.\&.\&.
          366  +
          367  +.CE
          368  +.SH "LANGUAGE REFERENCE"
          369  +With the examples behind us we can now go and specify the entire
          370  +specification language\&. If you have skipped here on first reading,
          371  +ignoring the examples, please go back and read them first\&.
          372  +.SS GENERAL
          373  +.PP
          374  +The conceptual model underneath the command hierarchy is that
          375  +of a tree\&.
          376  +.PP
          377  +The inner nodes of the tree represent command ensembles, here
          378  +called "officer"s\&. Each officer knows one or more commands, and
          379  +delegates actual execution to their respective specification, which
          380  +may be another officer, or a private\&.
          381  +.PP
          382  +The leaf nodes of the tree represent the individual commands,
          383  +here called "private"s\&. Each private is responsible for a single
          384  +action, and knows how to perform it and the parameters used to
          385  +configure that action at runtime\&.
          386  +.PP
          387  +The same model is graphically presented in the
          388  +Entity-Relationship-Diagram below\&.
          389  +.PS
          390  +.nf
          391  +      is-a         is-a
          392  +    /-1:1-> actor <-1:1-\\
          393  +   /                     \\
          394  +officer ---1:(0-n)--> private --1:1-> config --1:(0-n)-> parameter
          395  + |  ^      has                  has            has
          396  + |  |
          397  + \\--/
          398  + 1:(0-n)
          399  + has
          400  +
          401  +.fi
          402  +.PE
          403  +.PP
          404  +The "Actor" in that diagram is the common base class for the
          405  +ensembles and commands and not directly relevant to users\&.
          406  +.PP
          407  +The "Config" on the other hand is the second interface seen by
          408  +the user, as the sole argument to the action command prefix of
          409  +\fBprivate\fR (See section \fBOfficer\fR)\&.
          410  +This container holds all the declared parameters of the command the
          411  +action is invoked for, and provides easy access to them through its
          412  +methods (see package \fBcmdr::config\fR) at the time of execution\&.
          413  +.SS OFFICERS
          414  +.CS
          415  +
          416  +
          417  +alias <name> = <name'>\&.\&.\&.            Declare an alternate name for a command path\&.
          418  +alias <name>                         Declare an alternate name for the previous command\&.
          419  +common <name> <script>               Declare a named shared code block\&.
          420  +default                              Set last command as default\&.
          421  +description <text>                   Set help text for the current ensemble\&.
          422  +ehandler <cmdprefix>                 Execution Interposition\&.
          423  +officer <name> <script>              Declare a nested ensemble = sub-officer
          424  +private <name> <script> <cmdprefix>  Declare a simple command  = private
          425  +undocumented                         Hide ensemble from help\&.
          426  +
          427  +.CE
          428  +.TP
          429  +\fBalias\fR \fIname\fR \fB=\fR \fIname'\fR\&.\&.\&.
          430  +.TP
          431  +\fBalias\fR \fIname\fR
          432  +This is a structuring command, for the command hierarchy\&. Its main
          433  +uses are the creation of alternate command names, and of shortcuts
          434  +through the command hierarchy\&.
          435  +.sp
          436  +For example, stackato's command specification for alias management is
          437  +more like \fBBasic setup, command nesting\fR and uses shortcuts
          438  +similar to what is shown in
          439  +--TODO--(example ls-alias2)-- to provide the look of a flat namespace\&.
          440  +.sp
          441  +In the first form the \fIname\fR is given the explicit path to
          442  +the command it is an alias for\&. In the second form it implicitly
          443  +refers to the immediately preceding officer or private\&.
          444  +Note that "immediately" is interpreted at the current level\&. The
          445  +system is \fInot\fR looking into a nested specification for its last
          446  +command\&.
          447  +.TP
          448  +\fBcommon\fR \fIname\fR \fItext\fR
          449  +This is another structuring command, for structuring the specification
          450  +itself instead of the command tree it declares\&.
          451  +.sp
          452  +It creates named values, usually code blocks, which can be
          453  +shared between specifications\&. Note that while each block is visible
          454  +in the current officer and its subordinates, parents and siblings have
          455  +no access\&.
          456  +.sp
          457  +An example of such a block would be
          458  +.CS
          459  +
          460  +
          461  +common *all* {
          462  +    option debug {
          463  +	Activate client internal tracing\&.
          464  +    } {
          465  +	undocumented
          466  +	list
          467  +	when-complete [lambda {p tags} {
          468  +	    foreach t $tags { debug on $t }
          469  +	}]
          470  +    }
          471  +}
          472  +
          473  +.CE
          474  +.IP
          475  +This example defines an option to access the subsystem for debug
          476  +narative (See package \fBTcllib\fR)\&.
          477  +The example is actually special, as the block named \fB*all*\fR is
          478  +reserved by the framework\&. This block, if defined, is automatically
          479  +included at the front of all "private" specifications, i\&.e\&. shared
          480  +across all the specified commands underneath this officer\&. A very
          481  +important trait for the option in the example, as it makes the debug
          482  +setup available to all commands without having to explicitly include
          483  +the block, and possibly forgetting such\&.
          484  +.sp
          485  +Generally speaking, the framework reserves all blocks whose
          486  +name begins with a star, i\&.e \fB*\fR, for its own use\&.
          487  +.TP
          488  +\fBdefault\fR
          489  +This command sets up a special kind of alias\&. The last "private" or
          490  +"officer" is set as the default command to use at runtime\&.
          491  +This means that if during "Dispatch" the currently processed word does
          492  +not match any of the commands known to this officer this default is
          493  +used\&. If no default is specified an error will be thrown instead\&.
          494  +.TP
          495  +\fBdescription\fR \fItext\fR
          496  +This command declares the help text of the officer\&.
          497  +.TP
          498  +\fBehandler\fR \fIcmdprefix\fR
          499  +This is an advanced command which should normally only be specified at
          500  +the top of the whole hierarchy (from which its value will
          501  +automatically propagate to all subordinates)\&.
          502  +.sp
          503  +At runtime the framework will call the specified command prefix
          504  +with a single argument, a script whose execution is equivalent to the
          505  +phases "Parsing", "Completion", and "Execution" of the framework, as
          506  +described in section --TODO--(sectref:flow/phases)--\&. The handler \fImust\fR
          507  +call this script, and can perform any application-specific actions
          508  +before and after\&.
          509  +.sp
          510  +This handler's main uses are two-fold:
          511  +.RS
          512  +.IP [1]
          513  +Capture and hande application-specific errors which should not
          514  +abort the application, or shown as Tcl stacktrace\&.
          515  +.IP [2]
          516  +Cleanup of application-specific transient settings the
          517  +parameter callbacks and/or command implementations may have set during
          518  +their execution\&. This is especially important if the interactive
          519  +command line shells of the framework are active\&. Without such a
          520  +handler and its bespoke cleanup code transient settings will leak
          521  +between multiple commands run from such a shell, something which is
          522  +definitely not wanted\&.
          523  +.RE
          524  +.TP
          525  +\fBofficer\fR \fIname\fR \fIscript\fR
          526  +This command creates a named subordinate officer with its
          527  +specification \fIscript\fR of officer commands as described here\&.
          528  +.TP
          529  +\fBprivate\fR \fIname\fR \fIscript\fR \fIcmdprefix\fR
          530  +This command creates a named subordinate private with its
          531  +specification \fIscript\fR of private commands as described in the
          532  +following section, and a command prefix to invoke when it is chosen\&.
          533  +.sp
          534  +This command prefix is called with a single argument, the
          535  +\fBcmdr::config\fR instance holding the parameters of the private\&.
          536  +--TODO--(ref:backend-example-code)--
          537  +.TP
          538  +\fBundocumented\fR
          539  +Use of this command influences the generation of help, excluding all
          540  +officers having this marker (and their subordinates) from the
          541  +help\&. Note that subordinates reachable through aliases may be
          542  +included, under the alias name, if not explicitly excluded themselves\&.
          543  +.PP
          544  +.SS PRIVATES
          545  +.PP
          546  +The specification of simple commands, i\&.e\&. "privates" is quite
          547  +easy, with only seven commands (see the table below)\&. The important
          548  +parts are found in the parameter specifications, explained in the next
          549  +section\&.
          550  +.CS
          551  +
          552  +
          553  +description <text>             Set help text for command\&.
          554  +input <name> <help> <script>   Declare a positional parameter\&.
          555  +interactive                    Allow interactive shell\&.
          556  +option <name> <help> <script>  Declare a named parameter\&.
          557  +state <name> <help> <script>   Declare a hidden parameter\&.
          558  +undocumented                   Hide command from help\&.
          559  +use <name>                     Execute the named "common" block here\&.
          560  +
          561  +.CE
          562  +.TP
          563  +\fBdescription\fR \fItext\fR
          564  +Like the equivalent command for \fBOfficers\fR this command
          565  +declares the help text for the private\&.
          566  +.TP
          567  +\fBinput\fR \fIname\fR \fIhelp\fR \fIscript\fR
          568  +This command adds an "input" (positional) parameter to the "private",
          569  +with description \fIhelp\fR and its specification \fIscript\fR of
          570  +parameter commands as described in the following section\&.
          571  +.TP
          572  +\fBinteractive\fR
          573  +This command influences the runtime\&. By default the only interactive
          574  +command line shells are associated with the officers\&. Setting this
          575  +marker activates such a shell for the private, to be invoked when
          576  +required parameters do not have a value\&.
          577  +.sp
          578  +The global command \fBcmdr::config interactive\fR in package
          579  +\fBcmdr::config\fR can be used to globally activate this type of
          580  +shell for all "privates"\&.
          581  +.TP
          582  +\fBoption\fR \fIname\fR \fIhelp\fR \fIscript\fR
          583  +This command adds an "option" (named) parameter to the "private", with
          584  +description \fIhelp\fR and its specification \fIscript\fR of parameter
          585  +commands as described in the following section\&.
          586  +.TP
          587  +\fBstate\fR \fIname\fR \fIhelp\fR \fIscript\fR
          588  +This command adds a "state" (hidden) parameter to the "private", with
          589  +description \fIhelp\fR and its specification \fIscript\fR of parameter
          590  +commands as described in the following section\&.
          591  +.TP
          592  +\fBundocumented\fR
          593  +Like the equivalent command for \fBOfficers\fR use of this command
          594  +influences the generation of help, excluding all privates having this
          595  +marker from it\&.
          596  +.TP
          597  +\fBuse\fR \fIname\fR
          598  +This command is the counterpart to \fBcommon\fR of \fBOfficers\fR\&.
          599  +It inserts the named block into the specification, executing it\&. As
          600  +such it expects the contents to be a script of private commands as
          601  +described in this section\&.
          602  +.PP
          603  +.SS PARAMETERS
          604  +.PP
          605  +The parameters of private commands are the heart of the system,
          606  +providing the space needed to transfer the command arguments to the
          607  +implementations, and having the most attributes controlling their
          608  +behaviour\&.
          609  +.PP
          610  +This complexity is mitigated strongly by the use of sensible
          611  +defaults for each of the three possible kinds of parameter, i\&.e\&.
          612  +positional "inputs", named "options", and "state" hidden from the
          613  +command line\&.
          614  +.PP
          615  +Each kind has its own construction command in the DSL for
          616  +\fBPrivates\fR which specifies the common information which cannot
          617  +have defaults, i\&.e\&.
          618  +.IP [1]
          619  +the name identifying it to the system,
          620  +.IP [2]
          621  +the help text describing it in informal speech, and, of course,
          622  +.IP [3]
          623  +the parameter specification itself, using the commands of this section\&.
          624  +.PP
          625  +.CS
          626  +
          627  +
          628  +alias <name>              N  Declare alternate flag for an option\&.
          629  +default <value>            R Set constant default value\&.
          630  +defered                    R  Defer calculation of the internal representation until demanded\&.
          631  +generate <cmdprefix>       R  Set callback returning the default value\&.
          632  +immediate                  R  Complement of defered\&.
          633  +interact ?<prompt>?        R  Enable the interactive entry of the string value\&.
          634  +label <text>              N  Name to use in the help, and as primary flag (for an option)\&.
          635  +list                       R Declare as list-valued\&.
          636  +optional                  G  Declare input as optional\&.
          637  +presence                   V Declare as boolean option without argument\&.
          638  +test                      G  Control the matching of words to optional inputs\&.
          639  +undocumented              G  Declare as hidden from help\&.
          640  +validate <cmdprefix>       V Declare validation type\&.
          641  +when-complete <cmdprefix> C  Set callback executed when the value becomes known\&.
          642  +when-set <cmdprefix>      C  Set callback executed when the string value becomes known\&.
          643  +
          644  +.CE
          645  +.PP
          646  +\fINaming\fR
          647  +.PP
          648  +We have two commands to influence the visible naming of all
          649  +parameters\&.
          650  +.PP
          651  +As background, all parameters are named for proper
          652  +identification within the framework and other Tcl code, i\&.e\&. the
          653  +various callbacks, including a "private"s action\&. This "system name"
          654  +has to be unique within the "private" a parameter belongs to\&. Beyond
          655  +that however the visible parameters have to be identified within help
          656  +texts, and, in case of "options", for detection during "Parsing"\&. That
          657  +is the visible naming, seen by a user of any application whose command
          658  +line processing is based on the Cmdr framework\&.
          659  +.TP
          660  +\fBlabel\fR \fItext\fR
          661  +This command declares the visible name, if different from the system
          662  +name used as the default\&. Note that in most cases this default is good
          663  +enough, obviating the need for this command\&.
          664  +.sp
          665  +The only use case seen so far is when two semantically
          666  +equivalent input and option parameters clash, requiring different
          667  +internal names due to the requirement for uniqueness, yet also the
          668  +same visible name and flag within the help to highlight their
          669  +connection and equivalence\&.
          670  +.TP
          671  +\fBalias\fR \fIname\fR
          672  +For option parameters the "label" command and its default specifies
          673  +the name of the primary flag recognized during parsing\&. If that is not
          674  +enough for a specific option this command allows the specification of
          675  +any number additional flags to be recognized\&.
          676  +.sp
          677  +Note however that the framework automatically recognizes not
          678  +only the specified flags, but also all unique prefixes, obviating the
          679  +need for this command in many cases\&.
          680  +.PP
          681  +.PP
          682  +\fIGeneral control\fR
          683  +.PP
          684  +The general handling of a parameter is influenced by three
          685  +commands\&.
          686  +.TP
          687  +\fBoptional\fR
          688  +This command marks the parameter as optional, i\&.e\&. as something the
          689  +user may skip on the command line, and the application supplying
          690  +sensible defaults\&. --TODO--(sectref:para/vtype)--
          691  +During parsing the framework will then expend some effort to determine
          692  +whether an argument word should be assigned to the parameter, or not\&.
          693  +.sp
          694  +This setting is only applicable to "inputs", as "options" are
          695  +optional by definition, and "state" is hidden\&.
          696  +.TP
          697  +\fBtest\fR
          698  +This command is related to the above, switching from the standard
          699  +regime for acceptance based on counting and thresholds to a different
          700  +one based on validation\&. The details are explained in section
          701  +--TODO--(sectref:flow/parsing, flow/optional)--\&.
          702  +.TP
          703  +\fBundocumented\fR
          704  +Like "officers" and "privates" parameters can be hidden from the
          705  +generated help\&. This is the command for doing so, the same as for the
          706  +first two\&.
          707  +.sp
          708  +The main use case is the hiding of options giving an
          709  +application developer access to the internals of their application,
          710  +something a regular user has no need of, and doesn't have to know
          711  +about\&.
          712  +.PP
          713  +.PP
          714  +\fIRepresentations\fR
          715  +.PP
          716  +An important concept of parameters is something taken up from
          717  +Tcl itself\&.
          718  +The differentation between string and internal representations\&.
          719  +Where Tcl uses internal representations to speed up its execution here
          720  +this separation is that of between the information delivered to the
          721  +application by a user, and the application-specific data structures
          722  +behind them\&.
          723  +.PP
          724  +All parameters will have an internal representation\&.
          725  +This is usually derived from the string representation provided by the
          726  +user\&.
          727  +The details of that process are explained in section
          728  +--TODO--(sectref:para/vtype)--
          729  +about validation types\&.
          730  +However we have cases where the user cannot specify a string
          731  +representation ("states"), or is allowed to choose not to (optional
          732  +"inputs", "options")\&.
          733  +For these cases three specification commands are made available
          734  +enabling us to programmatically choose the internal representation\&.
          735  +.TP
          736  +\fBdefault\fR \fIvalue\fR
          737  +This command provides a constant value for the internal
          738  +representation\&.
          739  +.TP
          740  +\fBgenerate\fR \fIcmdprefix\fR
          741  +This command provides a callback to compute the internal
          742  +representation at runtime\&. This is useful if the default is something
          743  +which cannot be captured as a fixed value, for example a handle to
          744  +some resource, or a dynamically created object\&.
          745  +.sp
          746  +The command prefix is invoked with a single argument, the
          747  +\fBcmdr::parameter\fR instance for which to generate the internal
          748  +representation\&.
          749  +.PP
          750  +.PP
          751  +The commands "default" and "generate" exclude each other,
          752  +i\&.e\&. only of them can be specified\&.
          753  +If neither are specified, and we need a default (see the cases
          754  +above) a default is chosen per the two rules below:
          755  +.IP [1]
          756  +Use the empty string for a "list" parameter\&.
          757  +.IP [2]
          758  +Use the default value supplied by the chosen validation type
          759  +(See section --TODO--(sectref:para/vtype)--)\&.
          760  +.PP
          761  +.TP
          762  +\fBinteract\fR ?\fIprompt\fR?
          763  +This command actually does not specify an internal representation, but
          764  +activates another method for the user to specify a string value for
          765  +the parameter, outside of the command line\&.
          766  +As such it has priority over either "default" and "generate," and can
          767  +be specified with either\&. A parameter marked with it will
          768  +interactively ask the user for a value if none was specified on the
          769  +command line\&.
          770  +.sp
          771  +The default \fIprompt\fR is derived from the system name\&.
          772  +.PP
          773  +.PP
          774  +To recapitulate:
          775  +.IP [1]
          776  +A string representation specified on the command line has the
          777  +highest priority and goes through the chosen validation type to
          778  +get the associated internal representation\&.
          779  +.IP [2]
          780  +If activated via "interact" a small shell is run asking the
          781  +user for a value (or more, as per "list", see below)\&. The
          782  +result goes through the chosen validation type to get the
          783  +associated internal representation\&.
          784  +.IP [3]
          785  +After that the internal representation is either the declared
          786  +"default," or the result of invoking the "generate"
          787  +callback\&. As internal representations they are \fInot\fR run
          788  +through the chosen validation type\&.
          789  +.PP
          790  +.TP
          791  +\fBlist\fR
          792  +This command is used to mark parameters whose string and thus internal
          793  +value should be treated as a list\&. By default all parameters are scalar\&.
          794  +.sp
          795  +This affects the handling of the parameter during parsing, by
          796  +"interact" above, and the use of the validation type\&. The last two ask
          797  +for multiple values, and feed the elements of the string value
          798  +separately through validation instead of just the string value in one\&.
          799  +During parsing treatment of "options" changes from keeping only the
          800  +last assigned value to accumulation of all values\&. Similarly a
          801  +list-"input" takes all remaining words on the command line for itself
          802  +instead of just the current word\&. Because of this list-"inputs" are
          803  +only allowed as the last parameter of a "private\&."
          804  +.PP
          805  +.PP
          806  +The last two specification commands dealing with the
          807  +representations control when the internal representation is created\&.
          808  +.TP
          809  +\fBdefered\fR
          810  +This command marks a parameter as defered, with the internal
          811  +representation computed on first access to its value\&. This is the
          812  +default for "state" parameters\&.
          813  +.TP
          814  +\fBimmediate\fR
          815  +This command marks a parameter as immediate, with the internal
          816  +representation computed in the "Completion" phase\&. This is the default
          817  +for "input" and "option" parameters\&.
          818  +.PP
          819  +.PP
          820  +\fIValidation\fR
          821  +.PP
          822  +The answer to the necessity of moving between the string and
          823  +internal representations described in the previous section are the
          824  +validation types\&. Given a string representation they either return the
          825  +associated internal representation or raise an error, signaling that
          826  +the input was illegal\&. This part of their work, the verification of
          827  +the legality of the input string gave them their name\&.
          828  +.PP
          829  +The general concept of validation types was taken from
          830  +\fBsnit\fR, and modified to suit Cmdr\&. Where snit's types
          831  +expect only a single method to validate the input Cmdr
          832  +expects all types to support an ensemble of \fIfour\fR methods, one
          833  +for the basic validation and transformation of the input, another for
          834  +the release of any internal representation so generated, plus delivery
          835  +of a default representation and support for command line completion\&.
          836  +.TP
          837  +\fBvalidate\fR \fIcmdprefix\fR
          838  +This command specifies a validation type for the parameter, in the
          839  +form of a command prefix\&.
          840  +The set of methods this callback has to support, their signatures,
          841  +etc\&. are all explained in \fICmdr - Writing custom validation types\fR\&. This document
          842  +contains the implementation of the standard boolean validation type as
          843  +an example as well\&.
          844  +.sp
          845  +Because of the same necessity all parameters must have a
          846  +validation type assigned to them, and the system will choose which, if
          847  +the user did not\&. This choice is made per the six rules below and
          848  +always returns one of the standard types implemented in package
          849  +\fBcmdr::validate\fR\&.
          850  +.RS
          851  +.IP [1]
          852  +Use "identity" if a "generate" callback is specified\&.
          853  +.IP [2]
          854  +Use "boolean"  if no "default" is specified and the parameter is an option\&.
          855  +.IP [3]
          856  +Use "identity" if no "default" is specified and the parameter is an input\&.
          857  +.IP [4]
          858  +Use "boolean"  if the specified "default" value is a Tcl boolean\&.
          859  +.IP [5]
          860  +Use "integer"  if the specified "default" value is a Tcl integer\&.
          861  +.IP [6]
          862  +Use "identity" as fallback of last resort\&.
          863  +.RE
          864  +.TP
          865  +\fBpresence\fR
          866  +This command is best discussed as part of the wider area of "boolean"
          867  +options, i\&.e\&. options with validation type "boolean" assigned to
          868  +them\&. These have associated special behaviours, both in the handling
          869  +of the specification, and during parsing\&.
          870  +.sp
          871  +First, normal boolean options\&. They have automatic aliases
          872  +declared for them, derived from their primary flag\&. An option named
          873  +"foo" will have an alias of "no-foo", and the reverse\&. During parsing
          874  +the "foo" and "no-foo" flags have inverse semantics, and both are
          875  +allowed to occur without option argument following the flag\&. This is
          876  +in contrast to all other options which must have such an argument\&. The
          877  +parser essentially uses the validation type to decide if the word
          878  +after the flag is a proper boolean value, or not, i\&.e\&. an argument to
          879  +assign to the parameter, or not\&.
          880  +.sp
          881  +Now "presence" declares a variant of the above, a boolean
          882  +option without the automatic aliases, and \fInever\fR taking an
          883  +argument during parsing\&. Its mere \fIpresence\fR on the command line
          884  +will set its parameter\&. Their default value is consequently fixed to
          885  +\fBfalse\fR as well\&.
          886  +.PP
          887  +.PP
          888  +\fISignaling\fR
          889  +Of the four callbacks supported by parameters the first two,
          890  +"generate" and "validate" have been described already, in the sections
          891  +--TODO--\\ref{para/reps} about representations and
          892  +--TODO--\\ref{para/vtype} about validation types, respectively\&.
          893  +.PP
          894  +This section explains the commonalities between the callbacks
          895  +in general, and the last two, for notifications about state changes in
          896  +detail\&.
          897  +.PP
          898  +All callbacks are treated as command prefixes, not
          899  +scripts\&.
          900  +There are no placeholder substitutions, only arguments added to each
          901  +command prefix on invokation\&. This does not harm the generality of the
          902  +system, as complex scripts can be used via procedures or equivalents
          903  +(i\&.e\&. \fBapply\fR)\&.
          904  +.PP
          905  +The two callbacks not yet described are the state-change
          906  +callbacks through which the framework can actively drive parts of the
          907  +application while processing the command line, whereas normally the
          908  +application drives access to parameters through their methods\&.
          909  +.TP
          910  +\fBwhen-complete\fR \fIcmdprefix\fR
          911  +This command declares the state-change callback to invoke when the
          912  +internal representation of the parameter is generated from the string
          913  +representation, or the various ways of getting a default\&.
          914  +.sp
          915  +The callback is invoked with two arguments, the
          916  +\fBcmdr::parameter\fR instance of the parameter which changed, and
          917  +its internal representation, in this order\&.
          918  +.TP
          919  +\fBwhen-set\fR \fIcmdprefix\fR
          920  +This command declares the state-change callback to invoke when the
          921  +string representation of the parameter is set during command line
          922  +parsing\&.
          923  +.sp
          924  +The callback is invoked with two arguments, the
          925  +\fBcmdr::parameter\fR instance of the parameter which changed, and
          926  +its string representation, in this order\&.
          927  +.PP
          928  +Due to their nature these callbacks are invoked at runtime during
          929  +either parsing, completion," or execution\&. The details are shown in
          930  +the table below\&. The specification commands influencing the timing,
          931  +i\&.e\&. forcing the use in a specific phase are shown in the intersection
          932  +of callback and phase\&.
          933  +.CS
          934  +
          935  +
          936  +                    | Dispatch | Parsing | Completion  | Execution
          937  +--------------------+----------+---------+-------------+-----------
          938  +validate (default)  | *        |         |             |
          939  +--------------------+----------+---------+-------------+-----------
          940  +validate (complete) |          | *       | immediate   | defered
          941  +when-set            |          | *       |             |
          942  +--------------------+----------+---------+-------------+-----------
          943  +generate            |          |         | immediate   | defered
          944  +validate (validate) |          | test    | immediate   | defered
          945  +validate (release)  |          | test    | immediate   | defered
          946  +--------------------+----------+---------+-------------+-----------
          947  +when-complete       |          |         | immediate   | defered
          948  +--------------------+----------+---------+-------------+-----------
          949  +
          950  +.CE
          951  +.SH "RELATED DOCUMENTS"
          952  +.IP [1]
          953  +\fICmdr - Introduction to the project\fR
          954  +.IP [2]
          955  +\fICmdr - License\fR
          956  +.IP [3]
          957  +\fICmdr - Log of Changes\fR
          958  +.IP [4]
          959  +\fICmdr - How To Get The Sources\fR
          960  +.IP [5]
          961  +\fICmdr - The Installer's Guide\fR
          962  +.IP [6]
          963  +\fICmdr - The Developer's Guide\fR
          964  +.PP
          965  +.SH "BUGS, IDEAS, FEEDBACK"
          966  +Both the package(s) and this documentation will undoubtedly contain
          967  +bugs and other problems\&.
          968  +Please report such at
          969  +\fICmdr Tickets\fR [https:/core\&.tcl\&.tk/akupries/cmdr]\&.
          970  +.PP
          971  +Please also report any ideas you may have for enhancements of
          972  +either package(s) and/or documentation\&.
          973  +.SH KEYWORDS
          974  +arguments, command hierarchy, command line completion, command line handling, command tree, editing command line, help for command line, hierarchy of commands, interactive command shell, optional arguments, options, parameters, processing command line, tree of commands
          975  +.SH COPYRIGHT
          976  +.nf
          977  +Copyright (c) 2013 Andreas Kupries
          978  +Copyright (c) 2013 Documentation, Andreas Kupries
          979  +
          980  +.fi

Changes to embedded/man/files/cmdr_help.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_help" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_help" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_help \- Cmdr - Utilities for help text formatting and setup - Internal
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::help \fR
   248    248   .sp
   249    249   \fB::cmdr::help\fR \fBauto\fR \fIactor\fR

Changes to embedded/man/files/cmdr_help_json.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_help_json" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_help_json" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_help_json \- Cmdr - Formatting help as JSON object
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::help::json \fR
   248    248   .sp
   249    249   .BE

Changes to embedded/man/files/cmdr_help_sql.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_help_sql" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_help_sql" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_help_sql \- Cmdr - Formatting help as series of SQL commands
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::help::sql \fR
   248    248   .sp
   249    249   .BE

Changes to embedded/man/files/cmdr_howto_development.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_development" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_development" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_development \- Cmdr - The Developer's Guide
   246    246   .SH DESCRIPTION
   247    247   .PP
   248    248   Welcome to the Cmdr project, written by Andreas Kupries\&.
   249    249   .PP

Changes to embedded/man/files/cmdr_howto_get_sources.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_howto_get_sources" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_howto_get_sources" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_howto_get_sources \- Cmdr - How To Get The Sources
   246    246   .SH DESCRIPTION
   247    247   .PP
   248    248   Welcome to the Cmdr project, written by Andreas Kupries\&.
   249    249   .PP

Changes to embedded/man/files/cmdr_howto_installation.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_installation" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_installation" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_installation \- Cmdr - The Installer's Guide
   246    246   .SH DESCRIPTION
   247    247   .PP
   248    248   Welcome to the Cmdr project, written by Andreas Kupries\&.
   249    249   .PP

Changes to embedded/man/files/cmdr_introduction.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_introduction" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_introduction" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_introduction \- Cmdr - Introduction to the project
   246    246   .SH DESCRIPTION
   247    247   .PP
   248    248   Welcome to the Cmdr project, written by Andreas Kupries\&.
   249    249   .PP
   250    250   For availability please read \fICmdr - How To Get The Sources\fR\&.
   251    251   .PP
          252  +The cmdr framework is a set of 12 related Tcl packages for the easy
          253  +specification of the interfaces of command line applications\&.
          254  +This means the declaration of the set of commands to be provided by an
          255  +application, and their parameters, be they options or positional
          256  +inputs\&.
          257  +At runtime the internals of the framework, guided by the chosen
          258  +specification, handle the bulk of processing \fB$::argv\fR\&. This
          259  +covers determining the requested command, mapping argument words to
          260  +command parameters, and validating them\&.
          261  +Additional features of the runtime are an integrated help system and
          262  +interactive command line shells with basic command and argument
          263  +completion\&.
   252    264   .SH "SYSTEM ARCHITECTURE"
   253    265   .SH "RELATED DOCUMENTS"
   254    266   .IP [1]
   255    267   \fICmdr - Introduction to the project\fR
   256    268   .IP [2]
   257    269   \fICmdr - License\fR
   258    270   .IP [3]

Changes to embedded/man/files/cmdr_license.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_license" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_license" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_license \- Cmdr - License
   246    246   .SH DESCRIPTION
   247    247   .PP
   248    248   Welcome to the Cmdr project, written by Andreas Kupries\&.
   249    249   .PP

Changes to embedded/man/files/cmdr_officer.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_officer" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_officer" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_officer \- Cmdr - Aggregation of multiple commands for dispatch\&.
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::util \fR
   248    248   .sp
   249    249   \fB::cmdr::officer\fR \fBnew\fR \fIsuper\fR \fIname\fR \fIactions\fR
................................................................................
   323    323   The instance command of the actor (officer actually) which contains the new officer\&.
   324    324   .TP
   325    325   string \fIname\fR
   326    326   The user-visible name of the command\&.
   327    327   .TP
   328    328   script \fIactions\fR
   329    329   The specification of the officer's subordinates\&.
   330         -Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
          330  +Please read \fICmdr - Specification Language\fR (section "Officers") for the details\&.
   331    331   .RE
   332    332   .PP
   333    333   .SH "INSTANCE API"
   334    334   The instance API is not public\&. It is used internally by the framework
   335    335   during the parsing of a command hierarchy specification to configure
   336    336   the officer instances, and when processing a command line at runtime
   337    337   to manage navigation of the hierarchy, word-completion, etc\&.
................................................................................
   438    438   script \fIpath\fR
   439    439   The list of names specifying the route from this officer to the new
   440    440   private\&. The last element is the name of the private command, while
   441    441   the preceding names specify the intermediate officers\&.
   442    442   .TP
   443    443   script \fIarguments\fR
   444    444   The specification of the private's parameters\&.
   445         -Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
          445  +Please read \fICmdr - Specification Language\fR (section "Parameters") for the details\&.
   446    446   .TP
   447    447   cmd-prefix \fIaction\fR
   448    448   The command prefix to invoke when this private is selected for
   449    449   execution\&.  It takes a single argument, the instance command of the
   450    450   hidden \fBcmdr::config\fR container holding the private's
   451    451   parameters\&. The result of the action, if there is any, is ignored by
   452    452   the framework\&.
................................................................................
   491    491   the set of subordinates known to this officer\&. This is the same type
   492    492   of script as used during construction, except here we dynamically
   493    493   extend the officer\&.
   494    494   .RS
   495    495   .TP
   496    496   script \fIactions\fR
   497    497   The specification of the officer's additional subordinates\&.
   498         -Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
          498  +Please read \fICmdr - Specification Language\fR (section "Officers") for the details\&.
   499    499   .RE
   500    500   .TP
   501    501   \fB<officer>\fR \fBlookup\fR \fIname\fR
   502    502   This method returns the instance command of the sub-ordinate with the
   503    503   given \fIname\fR\&. An error is thrown if such a sub-ordinate does not
   504    504   exist\&. See also method \fBhas\fR\&.
   505    505   .RS

Changes to embedded/man/files/cmdr_parameter.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_parameter" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_parameter" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_parameter \- Cmdr - Command parameters
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::util \fR
   248    248   .sp
   249    249   \fB::cmdr::parameter\fR \fBnew\fR \fIconfig\fR \fIorder\fR \fIcmdline\fR \fIrequired\fR \fIdefered\fR \fIname\fR \fIdescription\fR \fIspec\fR
................................................................................
   398    398   (in \fIspec\fR)\&.
   399    399   .TP
   400    400   string \fIdescription\fR
   401    401   Human-readable help text for the parameter\&.
   402    402   .TP
   403    403   script \fIspec\fR
   404    404   Tcl-script specifying the parameter in detail\&. Please read
   405         -\fICmdr - Specification Language\fR, section --TODO-- for the details\&.
          405  +\fICmdr - Specification Language\fR (section "Parameters") for the details\&.
   406    406   .RE
   407    407   .PP
   408    408   .SH "INSTANCE API"
   409    409   Most of the instance API is not public\&.
   410    410   .PP
   411    411   It is described here for use by developers maintaining,
   412    412   modifying and extending the framework itself\&. A user of the framework

Changes to embedded/man/files/cmdr_private.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_private" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_private" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_private \- Cmdr - Single command handling, options, and arguments
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::util \fR
   248    248   .sp
   249    249   \fB::cmdr::private\fR \fBnew\fR \fIsuper\fR \fIname\fR \fIarguments\fR \fIaction\fR
................................................................................
   296    296   The instance command of the actor (officer actually) which contains the new private\&.
   297    297   .TP
   298    298   string \fIname\fR
   299    299   The user-visible name of the command\&.
   300    300   .TP
   301    301   script \fIarguments\fR
   302    302   The specification of the private's parameters\&.
   303         -Please read \fICmdr - Specification Language\fR, section --TODO-- for the details\&.
          303  +Please read \fICmdr - Specification Language\fR (section "Privates") for the details\&.
   304    304   .TP
   305    305   cmd-prefix \fIaction\fR
   306    306   The command prefix to invoke when this private is selected for
   307    307   execution\&.  It takes a single argument, the instance command of the
   308    308   hidden \fBcmdr::config\fR container holding the private's
   309    309   parameters\&. The result of the action, if there is any, is ignored by
   310    310   the framework\&.

Changes to embedded/man/files/cmdr_util.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_util" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_util" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_util \- Cmdr - General Utilities - Internal
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::util \fR
   248    248   .sp
   249    249   \fB::cmdr::util\fR \fBpadr\fR \fIlist\fR

Changes to embedded/man/files/cmdr_validate.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_validate" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_validate" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_validate \- Cmdr - Standard validation types for parameters
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::validate \fR
   248    248   .sp
   249    249   .BE

Changes to embedded/man/files/cmdr_vcommon.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_validate_common" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_validate_common" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_validate_common \- Cmdr - Utilities for Validation Types
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::validate::common \fR
   248    248   .sp
   249    249   \fB::cmdr::validate::common\fR \fBfail\fR \fIp\fR \fIcode\fR \fItype\fR \fIx\fR

Changes to embedded/man/files/cmdr_vtypes.n.

   235    235   .de CE
   236    236   .fi
   237    237   .RE
   238    238   ..
   239    239   .de UL
   240    240   \\$1\l'|0\(ul'\\$2
   241    241   ..
   242         -.TH "cmdr_vtypes" n 0 doc "<<unknown>>"
          242  +.TH "cmdr_vtypes" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
   243    243   .BS
   244    244   .SH NAME
   245    245   cmdr_vtypes \- Cmdr - Writing custom validation types
   246    246   .SH SYNOPSIS
   247    247   package require \fBcmdr::validate \fR
   248    248   .sp
   249    249   \fBcmd\fR \fBcomplete\fR \fIp\fR \fIx\fR

Changes to embedded/man/index.n.

   254    254   cmdr_changes
   255    255   .TP
   256    256   \fBfiles/cmdr_config\&.n\fR
   257    257   cmdr_config
   258    258   .TP
   259    259   \fBfiles/cmdr_howto_development\&.n\fR
   260    260   cmdr_development
          261  +.TP
          262  +\fBfiles/cmdr_dsl\&.n\fR
          263  +cmdr_dsl
   261    264   .TP
   262    265   \fBfiles/cmdr_help\&.n\fR
   263    266   cmdr_help
   264    267   .TP
   265    268   \fBfiles/cmdr_help_json\&.n\fR
   266    269   cmdr_help_json
   267    270   .TP
................................................................................
   314    317   cmdr_changes
   315    318   .TP
   316    319   \fBfiles/cmdr_config\&.n\fR
   317    320   cmdr_config
   318    321   .TP
   319    322   \fBfiles/cmdr_howto_development\&.n\fR
   320    323   cmdr_development
          324  +.TP
          325  +\fBfiles/cmdr_dsl\&.n\fR
          326  +cmdr_dsl
   321    327   .TP
   322    328   \fBfiles/cmdr_help\&.n\fR
   323    329   cmdr_help
   324    330   .TP
   325    331   \fBfiles/cmdr_help_json\&.n\fR
   326    332   cmdr_help_json
   327    333   .TP
................................................................................
   374    380   cmdr_changes
   375    381   .TP
   376    382   \fBfiles/cmdr_config\&.n\fR
   377    383   cmdr_config
   378    384   .TP
   379    385   \fBfiles/cmdr_howto_development\&.n\fR
   380    386   cmdr_development
          387  +.TP
          388  +\fBfiles/cmdr_dsl\&.n\fR
          389  +cmdr_dsl
   381    390   .TP
   382    391   \fBfiles/cmdr_help\&.n\fR
   383    392   cmdr_help
   384    393   .TP
   385    394   \fBfiles/cmdr_help_json\&.n\fR
   386    395   cmdr_help_json
   387    396   .TP
................................................................................
   434    443   cmdr_changes
   435    444   .TP
   436    445   \fBfiles/cmdr_config\&.n\fR
   437    446   cmdr_config
   438    447   .TP
   439    448   \fBfiles/cmdr_howto_development\&.n\fR
   440    449   cmdr_development
          450  +.TP
          451  +\fBfiles/cmdr_dsl\&.n\fR
          452  +cmdr_dsl
   441    453   .TP
   442    454   \fBfiles/cmdr_help\&.n\fR
   443    455   cmdr_help
   444    456   .TP
   445    457   \fBfiles/cmdr_help_json\&.n\fR
   446    458   cmdr_help_json
   447    459   .TP
................................................................................
   494    506   cmdr_changes
   495    507   .TP
   496    508   \fBfiles/cmdr_config\&.n\fR
   497    509   cmdr_config
   498    510   .TP
   499    511   \fBfiles/cmdr_howto_development\&.n\fR
   500    512   cmdr_development
          513  +.TP
          514  +\fBfiles/cmdr_dsl\&.n\fR
          515  +cmdr_dsl
   501    516   .TP
   502    517   \fBfiles/cmdr_help\&.n\fR
   503    518   cmdr_help
   504    519   .TP
   505    520   \fBfiles/cmdr_help_json\&.n\fR
   506    521   cmdr_help_json
   507    522   .TP
................................................................................
   554    569   cmdr_changes
   555    570   .TP
   556    571   \fBfiles/cmdr_config\&.n\fR
   557    572   cmdr_config
   558    573   .TP
   559    574   \fBfiles/cmdr_howto_development\&.n\fR
   560    575   cmdr_development
          576  +.TP
          577  +\fBfiles/cmdr_dsl\&.n\fR
          578  +cmdr_dsl
   561    579   .TP
   562    580   \fBfiles/cmdr_help\&.n\fR
   563    581   cmdr_help
   564    582   .TP
   565    583   \fBfiles/cmdr_help_json\&.n\fR
   566    584   cmdr_help_json
   567    585   .TP
................................................................................
   614    632   cmdr_changes
   615    633   .TP
   616    634   \fBfiles/cmdr_config\&.n\fR
   617    635   cmdr_config
   618    636   .TP
   619    637   \fBfiles/cmdr_howto_development\&.n\fR
   620    638   cmdr_development
          639  +.TP
          640  +\fBfiles/cmdr_dsl\&.n\fR
          641  +cmdr_dsl
   621    642   .TP
   622    643   \fBfiles/cmdr_help\&.n\fR
   623    644   cmdr_help
   624    645   .TP
   625    646   \fBfiles/cmdr_help_json\&.n\fR
   626    647   cmdr_help_json
   627    648   .TP
................................................................................
   674    695   cmdr_changes
   675    696   .TP
   676    697   \fBfiles/cmdr_config\&.n\fR
   677    698   cmdr_config
   678    699   .TP
   679    700   \fBfiles/cmdr_howto_development\&.n\fR
   680    701   cmdr_development
          702  +.TP
          703  +\fBfiles/cmdr_dsl\&.n\fR
          704  +cmdr_dsl
   681    705   .TP
   682    706   \fBfiles/cmdr_help\&.n\fR
   683    707   cmdr_help
   684    708   .TP
   685    709   \fBfiles/cmdr_help_json\&.n\fR
   686    710   cmdr_help_json
   687    711   .TP
................................................................................
   734    758   cmdr_changes
   735    759   .TP
   736    760   \fBfiles/cmdr_config\&.n\fR
   737    761   cmdr_config
   738    762   .TP
   739    763   \fBfiles/cmdr_howto_development\&.n\fR
   740    764   cmdr_development
          765  +.TP
          766  +\fBfiles/cmdr_dsl\&.n\fR
          767  +cmdr_dsl
   741    768   .TP
   742    769   \fBfiles/cmdr_help\&.n\fR
   743    770   cmdr_help
   744    771   .TP
   745    772   \fBfiles/cmdr_help_json\&.n\fR
   746    773   cmdr_help_json
   747    774   .TP
................................................................................
   794    821   cmdr_changes
   795    822   .TP
   796    823   \fBfiles/cmdr_config\&.n\fR
   797    824   cmdr_config
   798    825   .TP
   799    826   \fBfiles/cmdr_howto_development\&.n\fR
   800    827   cmdr_development
          828  +.TP
          829  +\fBfiles/cmdr_dsl\&.n\fR
          830  +cmdr_dsl
   801    831   .TP
   802    832   \fBfiles/cmdr_help\&.n\fR
   803    833   cmdr_help
   804    834   .TP
   805    835   \fBfiles/cmdr_help_json\&.n\fR
   806    836   cmdr_help_json
   807    837   .TP
................................................................................
   854    884   cmdr_changes
   855    885   .TP
   856    886   \fBfiles/cmdr_config\&.n\fR
   857    887   cmdr_config
   858    888   .TP
   859    889   \fBfiles/cmdr_howto_development\&.n\fR
   860    890   cmdr_development
          891  +.TP
          892  +\fBfiles/cmdr_dsl\&.n\fR
          893  +cmdr_dsl
   861    894   .TP
   862    895   \fBfiles/cmdr_help\&.n\fR
   863    896   cmdr_help
   864    897   .TP
   865    898   \fBfiles/cmdr_help_json\&.n\fR
   866    899   cmdr_help_json
   867    900   .TP
................................................................................
   914    947   cmdr_changes
   915    948   .TP
   916    949   \fBfiles/cmdr_config\&.n\fR
   917    950   cmdr_config
   918    951   .TP
   919    952   \fBfiles/cmdr_howto_development\&.n\fR
   920    953   cmdr_development
          954  +.TP
          955  +\fBfiles/cmdr_dsl\&.n\fR
          956  +cmdr_dsl
   921    957   .TP
   922    958   \fBfiles/cmdr_help\&.n\fR
   923    959   cmdr_help
   924    960   .TP
   925    961   \fBfiles/cmdr_help_json\&.n\fR
   926    962   cmdr_help_json
   927    963   .TP
................................................................................
   974   1010   cmdr_changes
   975   1011   .TP
   976   1012   \fBfiles/cmdr_config\&.n\fR
   977   1013   cmdr_config
   978   1014   .TP
   979   1015   \fBfiles/cmdr_howto_development\&.n\fR
   980   1016   cmdr_development
         1017  +.TP
         1018  +\fBfiles/cmdr_dsl\&.n\fR
         1019  +cmdr_dsl
   981   1020   .TP
   982   1021   \fBfiles/cmdr_help\&.n\fR
   983   1022   cmdr_help
   984   1023   .TP
   985   1024   \fBfiles/cmdr_help_json\&.n\fR
   986   1025   cmdr_help_json
   987   1026   .TP
................................................................................
  1034   1073   cmdr_changes
  1035   1074   .TP
  1036   1075   \fBfiles/cmdr_config\&.n\fR
  1037   1076   cmdr_config
  1038   1077   .TP
  1039   1078   \fBfiles/cmdr_howto_development\&.n\fR
  1040   1079   cmdr_development
         1080  +.TP
         1081  +\fBfiles/cmdr_dsl\&.n\fR
         1082  +cmdr_dsl
  1041   1083   .TP
  1042   1084   \fBfiles/cmdr_help\&.n\fR
  1043   1085   cmdr_help
  1044   1086   .TP
  1045   1087   \fBfiles/cmdr_help_json\&.n\fR
  1046   1088   cmdr_help_json
  1047   1089   .TP

Changes to embedded/man/toc.n.

   253    253   .TP
   254    254   \fBcmdr_config\fR
   255    255   \fIfiles/cmdr_config\&.n\fR: Cmdr - Collection of parameters for privates
   256    256   .TP
   257    257   \fBcmdr_development\fR
   258    258   \fIfiles/cmdr_howto_development\&.n\fR: Cmdr - The Developer's Guide
   259    259   .TP
          260  +\fBcmdr_dsl\fR
          261  +\fIfiles/cmdr_dsl\&.n\fR: Cmdr - Specification Language
          262  +.TP
   260    263   \fBcmdr_help\fR
   261    264   \fIfiles/cmdr_help\&.n\fR: Cmdr - Utilities for help text formatting and setup - Internal
   262    265   .TP
   263    266   \fBcmdr_help_json\fR
   264    267   \fIfiles/cmdr_help_json\&.n\fR: Cmdr - Formatting help as JSON object
   265    268   .TP
   266    269   \fBcmdr_help_sql\fR

Changes to embedded/www/doc/files/cmdr.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr - Cmdr - Main package and API</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
   154    154   <p>The result of the command is the new instance command.</p>
   155    155   <dl class="arguments">
   156    156   <dt>string <i class="arg">name</i></dt>
   157    157   <dd><p>The user-visible name of the command (hierarchy).</p></dd>
   158    158   <dt>script <i class="arg">actions</i></dt>
   159    159   <dd><p>The specification of the subordinate commands. On the command line
   160    160   these are the toplevel commands of the application using the
   161         -hierarchy.
   162         -Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
          161  +hierarchy. Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i>, (section &quot;Officers&quot;)
          162  +for the details.</p></dd>
   163    163   </dl></dd>
   164    164   <dt><a name="3"><b class="cmd">::cmdr</b> <b class="method">interactive</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
   165    165   <dd><p>This command globally (de)activates the interactive parts of the
   166    166   framework, as per the value of <i class="arg">enable</i>.</p>
   167    167   <p>By default (initial state) the framework allows interaction.</p>
   168    168   <dl class="arguments">
   169    169   <dt>boolean <i class="arg">enable</i></dt>

Changes to embedded/www/doc/files/cmdr_actor.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_actor - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_actor - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_actor(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_actor(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_actor - Cmdr - Base class for officers and privates - Internal</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_changes.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_changes - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_changes - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_changes(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_changes(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_changes - Cmdr - Log of Changes</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#section1">Description</a></li>

Changes to embedded/www/doc/files/cmdr_config.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_config - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_config - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_config(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_config(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_config - Cmdr - Collection of parameters for privates</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
   192    192   <dt>string <i class="arg">obj</i></dt>
   193    193   <dd><p>The (command) name of the new config instance.</p></dd>
   194    194   <dt>cmdr::config <i class="arg">context</i></dt>
   195    195   <dd><p>The instance command of the <b class="package">cmdr::private</b> instance the configuration
   196    196   will belong to.</p></dd>
   197    197   <dt>script <i class="arg">spec</i></dt>
   198    198   <dd><p>Tcl-script specifying the parameters in detail. Please read
   199         -<i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
          199  +<i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Parameters&quot;) for the details.</p></dd>
   200    200   </dl></dd>
   201    201   <dt><a name="3"><b class="cmd">::cmdr::config</b> <b class="method">interactive</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
   202    202   <dd><p>Class method to change the global interaction default for the
   203    203   mini-shell of privates. The default is to disable this mini-shell
   204    204   for all privates, and enable it on a per-private basis, through
   205    205   the specification.</p>
   206    206   <dl class="arguments">

Added embedded/www/doc/files/cmdr_dsl.html.

            1  +
            2  +<html><head>
            3  +<title>cmdr_dsl - Cmdr, a framework for command line parsing and dispatch</title>
            4  +<style type="text/css"><!--
            5  +    HTML {
            6  +	background: 	#FFFFFF;
            7  +	color: 		black;
            8  +    }
            9  +    BODY {
           10  +	background: 	#FFFFFF;
           11  +	color:	 	black;
           12  +    }
           13  +    DIV.doctools {
           14  +	margin-left:	10%;
           15  +	margin-right:	10%;
           16  +    }
           17  +    DIV.doctools H1,DIV.doctools H2 {
           18  +	margin-left:	-5%;
           19  +    }
           20  +    H1, H2, H3, H4 {
           21  +	margin-top: 	1em;
           22  +	font-family:	sans-serif;
           23  +	font-size:	large;
           24  +	color:		#005A9C;
           25  +	background: 	transparent;
           26  +	text-align:		left;
           27  +    }
           28  +    H1.title {
           29  +	text-align: center;
           30  +    }
           31  +    UL,OL {
           32  +	margin-right: 0em;
           33  +	margin-top: 3pt;
           34  +	margin-bottom: 3pt;
           35  +    }
           36  +    UL LI {
           37  +	list-style: disc;
           38  +    }
           39  +    OL LI {
           40  +	list-style: decimal;
           41  +    }
           42  +    DT {
           43  +	padding-top: 	1ex;
           44  +    }
           45  +    UL.toc,UL.toc UL, UL.toc UL UL {
           46  +	font:		normal 12pt/14pt sans-serif;
           47  +	list-style:	none;
           48  +    }
           49  +    LI.section, LI.subsection {
           50  +	list-style: 	none;
           51  +	margin-left: 	0em;
           52  +	text-indent:	0em;
           53  +	padding: 	0em;
           54  +    }
           55  +    PRE {
           56  +	display: 	block;
           57  +	font-family:	monospace;
           58  +	white-space:	pre;
           59  +	margin:		0%;
           60  +	padding-top:	0.5ex;
           61  +	padding-bottom:	0.5ex;
           62  +	padding-left:	1ex;
           63  +	padding-right:	1ex;
           64  +	width:		100%;
           65  +    }
           66  +    PRE.example {
           67  +	color: 		black;
           68  +	background: 	#f5dcb3;
           69  +	border:		1px solid black;
           70  +    }
           71  +    UL.requirements LI, UL.syntax LI {
           72  +	list-style: 	none;
           73  +	margin-left: 	0em;
           74  +	text-indent:	0em;
           75  +	padding:	0em;
           76  +    }
           77  +    DIV.synopsis {
           78  +	color: 		black;
           79  +	background: 	#80ffff;
           80  +	border:		1px solid black;
           81  +	font-family:	serif;
           82  +	margin-top: 	1em;
           83  +	margin-bottom: 	1em;
           84  +    }
           85  +    UL.syntax {
           86  +	margin-top: 	1em;
           87  +	border-top:	1px solid black;
           88  +    }
           89  +    UL.requirements {
           90  +	margin-bottom: 	1em;
           91  +	border-bottom:	1px solid black;
           92  +    }
           93  +--></style>
           94  +</head>
           95  +<! -- Generated from file 'cmdr_dsl.man' by tcllib/doctools with format 'html'
           96  +   -->
           97  +<! -- Copyright &copy; 2013 Andreas Kupries   -- Copyright &copy; 2013 Documentation, Andreas Kupries
           98  +   -->
           99  +<! -- CVS: $Id$ cmdr_dsl.n
          100  +   -->
          101  +<body><div class="doctools">
          102  +<hr> [
          103  +   <a href="../../../../../../home">Home</a>
          104  +| <a href="../../toc.html">Main Table Of Contents</a>
          105  +| <a href="../toc.html">Table Of Contents</a>
          106  +| <a href="../../index.html">Keyword Index</a>
          107  + ] <hr>
          108  +<h1 class="title">cmdr_dsl(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
          109  +<div id="name" class="section"><h2><a name="name">Name</a></h2>
          110  +<p>cmdr_dsl - Cmdr - Specification Language</p>
          111  +</div>
          112  +<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
          113  +<ul class="toc">
          114  +<li class="section"><a href="#toc">Table Of Contents</a></li>
          115  +<li class="section"><a href="#section1">Description</a></li>
          116  +<li class="section"><a href="#section2">Introductory examples</a>
          117  +<ul>
          118  +<li class="subsection"><a href="#subsection1">Basic setup, private with inputs</a></li>
          119  +<li class="subsection"><a href="#subsection2">Basic setup, command nesting</a></li>
          120  +</ul>
          121  +</li>
          122  +<li class="section"><a href="#section3">Language Reference</a>
          123  +<ul>
          124  +<li class="subsection"><a href="#subsection3">General</a></li>
          125  +<li class="subsection"><a href="#subsection4">Officers</a></li>
          126  +<li class="subsection"><a href="#subsection5">Privates</a></li>
          127  +<li class="subsection"><a href="#subsection6">Parameters</a></li>
          128  +</ul>
          129  +</li>
          130  +<li class="section"><a href="#section4">Related Documents</a></li>
          131  +<li class="section"><a href="#section5">Bugs, Ideas, Feedback</a></li>
          132  +<li class="section"><a href="#keywords">Keywords</a></li>
          133  +<li class="section"><a href="#copyright">Copyright</a></li>
          134  +</ul>
          135  +</div>
          136  +<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
          137  +<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
          138  +<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
          139  +<p>This document is for users of the cmdr framework. It describes the
          140  +domain-specific language for the specification of command hierarchies
          141  +with commands and their parameters (options, and inputs).</p>
          142  +</div>
          143  +<div id="section2" class="section"><h2><a name="section2">Introductory examples</a></h2>
          144  +<p>Instead of immediately diving into the full syntax of the
          145  +specification language first a few examples to demonstrate the general
          146  +look and feel, plus basic features.</p>
          147  +<div id="subsection1" class="subsection"><h3><a name="subsection1">Basic setup, private with inputs</a></h3>
          148  +<p>This example specifies a command line providing 3 commands for
          149  +the management of command aliases.
          150  +This is actually a slice of <b class="syscmd">stackato</b>'s interface, reduced and
          151  +modified to fit here.
          152  +While it does not have the necessary backend procedures required to
          153  +actually run the commands, it is enough to demonstrate basic features,
          154  +namely the declaration of &quot;privates&quot; with &quot;input&quot; parameters.</p>
          155  +<p>&quot;privates&quot; are the actual commands, the leaves at the bottom of
          156  +the hierarchy. Their &quot;inputs&quot; are positional parameters, i.e. the
          157  +association of argument words on a command line to parameter is done
          158  +in order of occurence (on command line, and in the specification).</p>
          159  +<pre class="example">
          160  +# -*- tcl -*
          161  +package require Tcl 8.5
          162  +package require cmdr
          163  +package require foo-backend
          164  +cmdr create ::foo foo {
          165  +    private alias+ {
          166  +	description {
          167  +	    Create a shortcut for a command (prefix).
          168  +	}
          169  +	input name {
          170  +	    The name of the new shortcut.
          171  +	} {
          172  +	    validate ::foo::backend::vt::notacommand
          173  +	}
          174  +	input command {
          175  +	    The command (prefix) the name will map to.
          176  +	} {
          177  +	    list
          178  +	}
          179  +    } ::foo::backend::alias::add
          180  +    private alias- {
          181  +	description {
          182  +	    Remove a shortcut by name.
          183  +	}
          184  +	input name {
          185  +	    The name of the shortcut to remove.
          186  +	} {
          187  +	    validate ::foo::backend::vt::aliasname
          188  +	}
          189  +    } ::foo::backend::alias::remove
          190  +    private alias? {
          191  +	description {
          192  +	    List the known aliases (shortcuts).
          193  +	}
          194  +    } ::foo::backend::alias::list
          195  +}
          196  +foo do {*}$argv
          197  +exit
          198  +</pre>
          199  +<p>At the bottom of the example, just above we can also see the
          200  +very simple Tcl command which invokes the command line processing for
          201  +a list of words, here coming from <b class="variable">$argv</b>, i.e. the application's
          202  +command line.</p>
          203  +</div>
          204  +<div id="subsection2" class="subsection"><h3><a name="subsection2">Basic setup, command nesting</a></h3>
          205  +<p>The decoupling of command names from their implementations seen
          206  +in the previous example makes it easy to re-arrange and re-label the
          207  +user visible commands without having to touch any other part of the
          208  +code.</p>
          209  +<p>This is demonstrated in the example below, moving the 3
          210  +&quot;privates&quot; into an &quot;officer&quot; and renaming them, without changing the
          211  +actions. Note that the parameter specifications were removed for
          212  +clarity, as they were not changed compared to the original example.</p>
          213  +<p>&quot;officers&quot; are named inner nodes in the command hierarchy. They
          214  +aggregate related commands, which may not only be &quot;privates&quot; as seen
          215  +here, but sub-officers as well.</p>
          216  +<pre class="example">
          217  +...
          218  +cmdr create ::foo foo {
          219  +    officer alias {
          220  +	description {
          221  +	    A collection of commands to manage
          222  +	    user-specific shortcuts for command
          223  +	    entry
          224  +	}
          225  +	private add {
          226  +	    ...
          227  +	} ::foo::backend::alias::add
          228  +	private remove {
          229  +	    ...
          230  +	} ::foo::backend::alias::remove
          231  +	private list {
          232  +	    ...
          233  +	} ::foo::backend::alias::list
          234  +    }
          235  +}
          236  +...
          237  +</pre>
          238  +</div>
          239  +</div>
          240  +<div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2>
          241  +<p>With the examples behind us we can now go and specify the entire
          242  +specification language. If you have skipped here on first reading,
          243  +ignoring the examples, please go back and read them first.</p>
          244  +<div id="subsection3" class="subsection"><h3><a name="subsection3">General</a></h3>
          245  +<p>The conceptual model underneath the command hierarchy is that
          246  +of a tree.</p>
          247  +<p>The inner nodes of the tree represent command ensembles, here
          248  +called &quot;officer&quot;s. Each officer knows one or more commands, and
          249  +delegates actual execution to their respective specification, which
          250  +may be another officer, or a private.</p>
          251  +<p>The leaf nodes of the tree represent the individual commands,
          252  +here called &quot;private&quot;s. Each private is responsible for a single
          253  +action, and knows how to perform it and the parameters used to
          254  +configure that action at runtime.</p>
          255  +<p>The same model is graphically presented in the
          256  +Entity-Relationship-Diagram below.
          257  +<img alt="erd" src="../../image/erd.png"></p>
          258  +<p>The &quot;Actor&quot; in that diagram is the common base class for the
          259  +ensembles and commands and not directly relevant to users.</p>
          260  +<p>The &quot;Config&quot; on the other hand is the second interface seen by
          261  +the user, as the sole argument to the action command prefix of
          262  +<b class="cmd">private</b> (See section <b class="sectref">Officer</b>).
          263  +This container holds all the declared parameters of the command the
          264  +action is invoked for, and provides easy access to them through its
          265  +methods (see package <b class="package">cmdr::config</b>) at the time of execution.</p>
          266  +</div>
          267  +<div id="subsection4" class="subsection"><h3><a name="subsection4">Officers</a></h3>
          268  +<pre class="example">
          269  +alias &lt;name&gt; = &lt;name'&gt;...            Declare an alternate name for a command path.
          270  +alias &lt;name&gt;                         Declare an alternate name for the previous command.
          271  +common &lt;name&gt; &lt;script&gt;               Declare a named shared code block.
          272  +default                              Set last command as default.
          273  +description &lt;text&gt;                   Set help text for the current ensemble.
          274  +ehandler &lt;cmdprefix&gt;                 Execution Interposition.
          275  +officer &lt;name&gt; &lt;script&gt;              Declare a nested ensemble = sub-officer
          276  +private &lt;name&gt; &lt;script&gt; &lt;cmdprefix&gt;  Declare a simple command  = private
          277  +undocumented                         Hide ensemble from help.
          278  +</pre>
          279  +<dl class="definitions">
          280  +<dt><b class="cmd">alias</b> <i class="arg">name</i> <b class="const">=</b> <i class="arg">name'</i>...</dt>
          281  +<dd></dd>
          282  +<dt><b class="cmd">alias</b> <i class="arg">name</i></dt>
          283  +<dd><p>This is a structuring command, for the command hierarchy. Its main
          284  +uses are the creation of alternate command names, and of shortcuts
          285  +through the command hierarchy.</p>
          286  +<p>For example, stackato's command specification for alias management is
          287  +more like <span class="sectref"><a href="#subsection2">Basic setup, command nesting</a></span> and uses shortcuts
          288  +similar to what is shown in
          289  +--TODO--(example ls-alias2)-- to provide the look of a flat namespace.</p>
          290  +<p>In the first form the <i class="arg">name</i> is given the explicit path to
          291  +the command it is an alias for. In the second form it implicitly
          292  +refers to the immediately preceding officer or private.
          293  +Note that &quot;immediately&quot; is interpreted at the current level. The
          294  +system is <em>not</em> looking into a nested specification for its last
          295  +command.</p></dd>
          296  +<dt><b class="cmd">common</b> <i class="arg">name</i> <i class="arg">text</i></dt>
          297  +<dd><p>This is another structuring command, for structuring the specification
          298  +itself instead of the command tree it declares.</p>
          299  +<p>It creates named values, usually code blocks, which can be
          300  +shared between specifications. Note that while each block is visible
          301  +in the current officer and its subordinates, parents and siblings have
          302  +no access.</p>
          303  +<p>An example of such a block would be</p>
          304  +<pre class="example">
          305  +common *all* {
          306  +    option debug {
          307  +	Activate client internal tracing.
          308  +    } {
          309  +	undocumented
          310  +	list
          311  +	when-complete [lambda {p tags} {
          312  +	    foreach t $tags { debug on $t }
          313  +	}]
          314  +    }
          315  +}
          316  +</pre>
          317  +<p>This example defines an option to access the subsystem for debug
          318  +narative (See package <b class="package">Tcllib</b>). 
          319  +The example is actually special, as the block named <b class="const">*all*</b> is
          320  +reserved by the framework. This block, if defined, is automatically
          321  +included at the front of all &quot;private&quot; specifications, i.e. shared
          322  +across all the specified commands underneath this officer. A very
          323  +important trait for the option in the example, as it makes the debug
          324  +setup available to all commands without having to explicitly include
          325  +the block, and possibly forgetting such.</p>
          326  +<p>Generally speaking, the framework reserves all blocks whose
          327  +name begins with a star, i.e <b class="const">*</b>, for its own use.</p></dd>
          328  +<dt><b class="cmd">default</b></dt>
          329  +<dd><p>This command sets up a special kind of alias. The last &quot;private&quot; or
          330  +&quot;officer&quot; is set as the default command to use at runtime.
          331  +This means that if during &quot;Dispatch&quot; the currently processed word does
          332  +not match any of the commands known to this officer this default is
          333  +used. If no default is specified an error will be thrown instead.</p></dd>
          334  +<dt><b class="cmd">description</b> <i class="arg">text</i></dt>
          335  +<dd><p>This command declares the help text of the officer.</p></dd>
          336  +<dt><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></dt>
          337  +<dd><p>This is an advanced command which should normally only be specified at
          338  +the top of the whole hierarchy (from which its value will
          339  +automatically propagate to all subordinates).</p>
          340  +<p>At runtime the framework will call the specified command prefix
          341  +with a single argument, a script whose execution is equivalent to the
          342  +phases &quot;Parsing&quot;, &quot;Completion&quot;, and &quot;Execution&quot; of the framework, as
          343  +described in section --TODO--(sectref:flow/phases)--. The handler <em>must</em>
          344  +call this script, and can perform any application-specific actions
          345  +before and after.</p>
          346  +<p>This handler's main uses are two-fold:</p>
          347  +<ol class="enumerated">
          348  +<li><p>Capture and hande application-specific errors which should not
          349  +abort the application, or shown as Tcl stacktrace.</p></li>
          350  +<li><p>Cleanup of application-specific transient settings the
          351  +parameter callbacks and/or command implementations may have set during
          352  +their execution. This is especially important if the interactive
          353  +command line shells of the framework are active. Without such a
          354  +handler and its bespoke cleanup code transient settings will leak
          355  +between multiple commands run from such a shell, something which is
          356  +definitely not wanted.</p></li>
          357  +</ol></dd>
          358  +<dt><b class="cmd">officer</b> <i class="arg">name</i> <i class="arg">script</i></dt>
          359  +<dd><p>This command creates a named subordinate officer with its
          360  +specification <i class="arg">script</i> of officer commands as described here.</p></dd>
          361  +<dt><b class="cmd">private</b> <i class="arg">name</i> <i class="arg">script</i> <i class="arg">cmdprefix</i></dt>
          362  +<dd><p>This command creates a named subordinate private with its
          363  +specification <i class="arg">script</i> of private commands as described in the
          364  +following section, and a command prefix to invoke when it is chosen.</p>
          365  +<p>This command prefix is called with a single argument, the
          366  +<b class="package">cmdr::config</b> instance holding the parameters of the private.
          367  +--TODO--(ref:backend-example-code)--</p></dd>
          368  +<dt><b class="cmd">undocumented</b></dt>
          369  +<dd><p>Use of this command influences the generation of help, excluding all
          370  +officers having this marker (and their subordinates) from the
          371  +help. Note that subordinates reachable through aliases may be
          372  +included, under the alias name, if not explicitly excluded themselves.</p></dd>
          373  +</dl>
          374  +</div>
          375  +<div id="subsection5" class="subsection"><h3><a name="subsection5">Privates</a></h3>
          376  +<p>The specification of simple commands, i.e. &quot;privates&quot; is quite
          377  +easy, with only seven commands (see the table below). The important
          378  +parts are found in the parameter specifications, explained in the next
          379  +section.</p>
          380  +<pre class="example">
          381  +description &lt;text&gt;             Set help text for command.
          382  +input &lt;name&gt; &lt;help&gt; &lt;script&gt;   Declare a positional parameter.
          383  +interactive                    Allow interactive shell.
          384  +option &lt;name&gt; &lt;help&gt; &lt;script&gt;  Declare a named parameter.
          385  +state &lt;name&gt; &lt;help&gt; &lt;script&gt;   Declare a hidden parameter.
          386  +undocumented                   Hide command from help.
          387  +use &lt;name&gt;                     Execute the named &quot;common&quot; block here.
          388  +</pre>
          389  +<dl class="definitions">
          390  +<dt><b class="cmd">description</b> <i class="arg">text</i></dt>
          391  +<dd><p>Like the equivalent command for <span class="sectref"><a href="#subsection4">Officers</a></span> this command
          392  +declares the help text for the private.</p></dd>
          393  +<dt><b class="cmd">input</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></dt>
          394  +<dd><p>This command adds an &quot;input&quot; (positional) parameter to the &quot;private&quot;,
          395  +with description <i class="arg">help</i> and its specification <i class="arg">script</i> of
          396  +parameter commands as described in the following section.</p></dd>
          397  +<dt><b class="cmd">interactive</b></dt>
          398  +<dd><p>This command influences the runtime. By default the only interactive
          399  +command line shells are associated with the officers. Setting this
          400  +marker activates such a shell for the private, to be invoked when
          401  +required parameters do not have a value.</p>
          402  +<p>The global command <b class="cmd">cmdr::config interactive</b> in package
          403  +<b class="package">cmdr::config</b> can be used to globally activate this type of
          404  +shell for all &quot;privates&quot;.</p></dd>
          405  +<dt><b class="cmd">option</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></dt>
          406  +<dd><p>This command adds an &quot;option&quot; (named) parameter to the &quot;private&quot;, with
          407  +description <i class="arg">help</i> and its specification <i class="arg">script</i> of parameter
          408  +commands as described in the following section.</p></dd>
          409  +<dt><b class="cmd">state</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></dt>
          410  +<dd><p>This command adds a &quot;state&quot; (hidden) parameter to the &quot;private&quot;, with
          411  +description <i class="arg">help</i> and its specification <i class="arg">script</i> of parameter
          412  +commands as described in the following section.</p></dd>
          413  +<dt><b class="cmd">undocumented</b></dt>
          414  +<dd><p>Like the equivalent command for <span class="sectref"><a href="#subsection4">Officers</a></span> use of this command
          415  +influences the generation of help, excluding all privates having this
          416  +marker from it.</p></dd>
          417  +<dt><b class="cmd">use</b> <i class="arg">name</i></dt>
          418  +<dd><p>This command is the counterpart to <b class="cmd">common</b> of <span class="sectref"><a href="#subsection4">Officers</a></span>.
          419  +It inserts the named block into the specification, executing it. As
          420  +such it expects the contents to be a script of private commands as
          421  +described in this section.</p></dd>
          422  +</dl>
          423  +</div>
          424  +<div id="subsection6" class="subsection"><h3><a name="subsection6">Parameters</a></h3>
          425  +<p>The parameters of private commands are the heart of the system,
          426  +providing the space needed to transfer the command arguments to the
          427  +implementations, and having the most attributes controlling their
          428  +behaviour.</p>
          429  +<p>This complexity is mitigated strongly by the use of sensible
          430  +defaults for each of the three possible kinds of parameter, i.e.
          431  +positional &quot;inputs&quot;, named &quot;options&quot;, and &quot;state&quot; hidden from the
          432  +command line.</p>
          433  +<p>Each kind has its own construction command in the DSL for
          434  +<span class="sectref"><a href="#subsection5">Privates</a></span> which specifies the common information which cannot
          435  +have defaults, i.e.</p>
          436  +<ol class="enumerated">
          437  +<li><p>the name identifying it to the system,</p></li>
          438  +<li><p>the help text describing it in informal speech, and, of course,</p></li>
          439  +<li><p>the parameter specification itself, using the commands of this section.</p></li>
          440  +</ol>
          441  +<pre class="example">
          442  +alias &lt;name&gt;              N  Declare alternate flag for an option.
          443  +default &lt;value&gt;            R Set constant default value.
          444  +defered                    R  Defer calculation of the internal representation until demanded.
          445  +generate &lt;cmdprefix&gt;       R  Set callback returning the default value.
          446  +immediate                  R  Complement of defered.
          447  +interact ?&lt;prompt&gt;?        R  Enable the interactive entry of the string value.
          448  +label &lt;text&gt;              N  Name to use in the help, and as primary flag (for an option).
          449  +list                       R Declare as list-valued.
          450  +optional                  G  Declare input as optional.
          451  +presence                   V Declare as boolean option without argument.
          452  +test                      G  Control the matching of words to optional inputs.
          453  +undocumented              G  Declare as hidden from help.
          454  +validate &lt;cmdprefix&gt;       V Declare validation type.
          455  +when-complete &lt;cmdprefix&gt; C  Set callback executed when the value becomes known.
          456  +when-set &lt;cmdprefix&gt;      C  Set callback executed when the string value becomes known.
          457  +</pre>
          458  +<p><em>Naming</em></p>
          459  +<p>We have two commands to influence the visible naming of all
          460  +parameters.</p>
          461  +<p>As background, all parameters are named for proper
          462  +identification within the framework and other Tcl code, i.e. the
          463  +various callbacks, including a &quot;private&quot;s action. This &quot;system name&quot;
          464  +has to be unique within the &quot;private&quot; a parameter belongs to. Beyond
          465  +that however the visible parameters have to be identified within help
          466  +texts, and, in case of &quot;options&quot;, for detection during &quot;Parsing&quot;. That
          467  +is the visible naming, seen by a user of any application whose command
          468  +line processing is based on the Cmdr framework.</p>
          469  +<dl class="definitions">
          470  +<dt><b class="cmd">label</b> <i class="arg">text</i></dt>
          471  +<dd><p>This command declares the visible name, if different from the system
          472  +name used as the default. Note that in most cases this default is good
          473  +enough, obviating the need for this command.</p>
          474  +<p>The only use case seen so far is when two semantically
          475  +equivalent input and option parameters clash, requiring different
          476  +internal names due to the requirement for uniqueness, yet also the
          477  +same visible name and flag within the help to highlight their
          478  +connection and equivalence.</p></dd>
          479  +<dt><b class="cmd">alias</b> <i class="arg">name</i></dt>
          480  +<dd><p>For option parameters the &quot;label&quot; command and its default specifies
          481  +the name of the primary flag recognized during parsing. If that is not
          482  +enough for a specific option this command allows the specification of
          483  +any number additional flags to be recognized.</p>
          484  +<p>Note however that the framework automatically recognizes not
          485  +only the specified flags, but also all unique prefixes, obviating the
          486  +need for this command in many cases.</p></dd>
          487  +</dl>
          488  +<p><em>General control</em></p>
          489  +<p>The general handling of a parameter is influenced by three
          490  +commands.</p>
          491  +<dl class="definitions">
          492  +<dt><b class="cmd">optional</b></dt>
          493  +<dd><p>This command marks the parameter as optional, i.e. as something the
          494  +user may skip on the command line, and the application supplying
          495  +sensible defaults. --TODO--(sectref:para/vtype)--
          496  +During parsing the framework will then expend some effort to determine
          497  +whether an argument word should be assigned to the parameter, or not.</p>
          498  +<p>This setting is only applicable to &quot;inputs&quot;, as &quot;options&quot; are
          499  +optional by definition, and &quot;state&quot; is hidden.</p></dd>
          500  +<dt><b class="cmd">test</b></dt>
          501  +<dd><p>This command is related to the above, switching from the standard
          502  +regime for acceptance based on counting and thresholds to a different
          503  +one based on validation. The details are explained in section
          504  +--TODO--(sectref:flow/parsing, flow/optional)--.</p></dd>
          505  +<dt><b class="cmd">undocumented</b></dt>
          506  +<dd><p>Like &quot;officers&quot; and &quot;privates&quot; parameters can be hidden from the
          507  +generated help. This is the command for doing so, the same as for the
          508  +first two.</p>
          509  +<p>The main use case is the hiding of options giving an
          510  +application developer access to the internals of their application,
          511  +something a regular user has no need of, and doesn't have to know
          512  +about.</p></dd>
          513  +</dl>
          514  +<p><em>Representations</em></p>
          515  +<p>An important concept of parameters is something taken up from
          516  +Tcl itself.
          517  +The differentation between string and internal representations.
          518  +Where Tcl uses internal representations to speed up its execution here
          519  +this separation is that of between the information delivered to the
          520  +application by a user, and the application-specific data structures
          521  +behind them.</p>
          522  +<p>All parameters will have an internal representation.
          523  +This is usually derived from the string representation provided by the
          524  +user.
          525  +The details of that process are explained in section
          526  +--TODO--(sectref:para/vtype)--
          527  +about validation types.
          528  +However we have cases where the user cannot specify a string
          529  +representation (&quot;states&quot;), or is allowed to choose not to (optional
          530  +&quot;inputs&quot;, &quot;options&quot;).
          531  +For these cases three specification commands are made available
          532  +enabling us to programmatically choose the internal representation.</p>
          533  +<dl class="definitions">
          534  +<dt><b class="cmd">default</b> <i class="arg">value</i></dt>
          535  +<dd><p>This command provides a constant value for the internal
          536  +representation.</p></dd>
          537  +<dt><b class="cmd">generate</b> <i class="arg">cmdprefix</i></dt>
          538  +<dd><p>This command provides a callback to compute the internal
          539  +representation at runtime. This is useful if the default is something
          540  +which cannot be captured as a fixed value, for example a handle to
          541  +some resource, or a dynamically created object.</p>
          542  +<p>The command prefix is invoked with a single argument, the
          543  +<b class="package">cmdr::parameter</b> instance for which to generate the internal
          544  +representation.</p></dd>
          545  +</dl>
          546  +<p>The commands &quot;default&quot; and &quot;generate&quot; exclude each other,
          547  +i.e. only of them can be specified.
          548  +If neither are specified, and we need a default (see the cases
          549  +above) a default is chosen per the two rules below:</p>
          550  +<ol class="enumerated">
          551  +<li><p>Use the empty string for a &quot;list&quot; parameter.</p></li>
          552  +<li><p>Use the default value supplied by the chosen validation type
          553  +       (See section --TODO--(sectref:para/vtype)--).</p></li>
          554  +</ol>
          555  +<dl class="definitions">
          556  +<dt><b class="cmd">interact</b> <span class="opt">?<i class="arg">prompt</i>?</span></dt>
          557  +<dd><p>This command actually does not specify an internal representation, but
          558  +activates another method for the user to specify a string value for
          559  +the parameter, outside of the command line. 
          560  +As such it has priority over either &quot;default&quot; and &quot;generate,&quot; and can
          561  +be specified with either. A parameter marked with it will
          562  +interactively ask the user for a value if none was specified on the
          563  +command line.</p>
          564  +<p>The default <i class="arg">prompt</i> is derived from the system name.</p></dd>
          565  +</dl>
          566  +<p>To recapitulate:</p>
          567  +<ol class="enumerated">
          568  +<li><p>A string representation specified on the command line has the
          569  +       highest priority and goes through the chosen validation type to
          570  +       get the associated internal representation.</p></li>
          571  +<li><p>If activated via &quot;interact&quot; a small shell is run asking the
          572  +       user for a value (or more, as per &quot;list&quot;, see below). The
          573  +       result goes through the chosen validation type to get the
          574  +       associated internal representation.</p></li>
          575  +<li><p>After that the internal representation is either the declared
          576  +       &quot;default,&quot; or the result of invoking the &quot;generate&quot;
          577  +       callback. As internal representations they are <em>not</em> run
          578  +       through the chosen validation type.</p></li>
          579  +</ol>
          580  +<dl class="definitions">
          581  +<dt><b class="cmd">list</b></dt>
          582  +<dd><p>This command is used to mark parameters whose string and thus internal
          583  +value should be treated as a list. By default all parameters are scalar.</p>
          584  +<p>This affects the handling of the parameter during parsing, by
          585  +&quot;interact&quot; above, and the use of the validation type. The last two ask
          586  +for multiple values, and feed the elements of the string value
          587  +separately through validation instead of just the string value in one.
          588  +During parsing treatment of &quot;options&quot; changes from keeping only the
          589  +last assigned value to accumulation of all values. Similarly a
          590  +list-&quot;input&quot; takes all remaining words on the command line for itself
          591  +instead of just the current word. Because of this list-&quot;inputs&quot; are
          592  +only allowed as the last parameter of a &quot;private.&quot;</p></dd>
          593  +</dl>
          594  +<p>The last two specification commands dealing with the
          595  +representations control when the internal representation is created.</p>
          596  +<dl class="definitions">
          597  +<dt><b class="cmd">defered</b></dt>
          598  +<dd><p>This command marks a parameter as defered, with the internal
          599  +representation computed on first access to its value. This is the
          600  +default for &quot;state&quot; parameters.</p></dd>
          601  +<dt><b class="cmd">immediate</b></dt>
          602  +<dd><p>This command marks a parameter as immediate, with the internal
          603  +representation computed in the &quot;Completion&quot; phase. This is the default
          604  +for &quot;input&quot; and &quot;option&quot; parameters.</p></dd>
          605  +</dl>
          606  +<p><em>Validation</em></p>
          607  +<p>The answer to the necessity of moving between the string and
          608  +internal representations described in the previous section are the
          609  +validation types. Given a string representation they either return the
          610  +associated internal representation or raise an error, signaling that
          611  +the input was illegal. This part of their work, the verification of
          612  +the legality of the input string gave them their name.</p>
          613  +<p>The general concept of validation types was taken from
          614  +<b class="package">snit</b>, and modified to suit Cmdr. Where snit's types
          615  +expect only a single method to validate the input Cmdr
          616  +expects all types to support an ensemble of <em>four</em> methods, one
          617  +for the basic validation and transformation of the input, another for
          618  +the release of any internal representation so generated, plus delivery
          619  +of a default representation and support for command line completion.</p>
          620  +<dl class="definitions">
          621  +<dt><b class="cmd">validate</b> <i class="arg">cmdprefix</i></dt>
          622  +<dd><p>This command specifies a validation type for the parameter, in the
          623  +form of a command prefix.
          624  +The set of methods this callback has to support, their signatures,
          625  +etc. are all explained in <i class="term"><a href="cmdr_vtypes.html">Cmdr - Writing custom validation types</a></i>. This document
          626  +contains the implementation of the standard boolean validation type as
          627  +an example as well.</p>
          628  +<p>Because of the same necessity all parameters must have a
          629  +validation type assigned to them, and the system will choose which, if
          630  +the user did not. This choice is made per the six rules below and
          631  +always returns one of the standard types implemented in package
          632  +<b class="package">cmdr::validate</b>.</p>
          633  +<ol class="enumerated">
          634  +<li><p>Use &quot;identity&quot; if a &quot;generate&quot; callback is specified.</p></li>
          635  +<li><p>Use &quot;boolean&quot;  if no &quot;default&quot; is specified and the parameter is an option.</p></li>
          636  +<li><p>Use &quot;identity&quot; if no &quot;default&quot; is specified and the parameter is an input.</p></li>
          637  +<li><p>Use &quot;boolean&quot;  if the specified &quot;default&quot; value is a Tcl boolean.</p></li>
          638  +<li><p>Use &quot;integer&quot;  if the specified &quot;default&quot; value is a Tcl integer.</p></li>
          639  +<li><p>Use &quot;identity&quot; as fallback of last resort.</p></li>
          640  +</ol></dd>
          641  +<dt><b class="cmd">presence</b></dt>
          642  +<dd><p>This command is best discussed as part of the wider area of &quot;boolean&quot;
          643  +options, i.e. options with validation type &quot;boolean&quot; assigned to
          644  +them. These have associated special behaviours, both in the handling
          645  +of the specification, and during parsing.</p>
          646  +<p>First, normal boolean options. They have automatic aliases
          647  +declared for them, derived from their primary flag. An option named
          648  +&quot;foo&quot; will have an alias of &quot;no-foo&quot;, and the reverse. During parsing
          649  +the &quot;foo&quot; and &quot;no-foo&quot; flags have inverse semantics, and both are
          650  +allowed to occur without option argument following the flag. This is
          651  +in contrast to all other options which must have such an argument. The
          652  +parser essentially uses the validation type to decide if the word
          653  +after the flag is a proper boolean value, or not, i.e. an argument to
          654  +assign to the parameter, or not.</p>
          655  +<p>Now &quot;presence&quot; declares a variant of the above, a boolean
          656  +option without the automatic aliases, and <em>never</em> taking an
          657  +argument during parsing. Its mere <em>presence</em> on the command line
          658  +will set its parameter. Their default value is consequently fixed to
          659  +<b class="const">false</b> as well.</p></dd>
          660  +</dl>
          661  +<p><em>Signaling</em>         
          662  +Of the four callbacks supported by parameters the first two,
          663  +&quot;generate&quot; and &quot;validate&quot; have been described already, in the sections
          664  +--TODO--\ref{para/reps} about representations and
          665  +--TODO--\ref{para/vtype} about validation types, respectively.</p>
          666  +<p>This section explains the commonalities between the callbacks
          667  +in general, and the last two, for notifications about state changes in
          668  +detail.</p>
          669  +<p>All callbacks are treated as command prefixes, not
          670  +scripts.
          671  +There are no placeholder substitutions, only arguments added to each
          672  +command prefix on invokation. This does not harm the generality of the
          673  +system, as complex scripts can be used via procedures or equivalents
          674  +(i.e. <b class="cmd">apply</b>).</p>
          675  +<p>The two callbacks not yet described are the state-change
          676  +callbacks through which the framework can actively drive parts of the
          677  +application while processing the command line, whereas normally the
          678  +application drives access to parameters through their methods.</p>
          679  +<dl class="definitions">
          680  +<dt><b class="cmd">when-complete</b> <i class="arg">cmdprefix</i></dt>
          681  +<dd><p>This command declares the state-change callback to invoke when the
          682  +internal representation of the parameter is generated from the string
          683  +representation, or the various ways of getting a default.</p>
          684  +<p>The callback is invoked with two arguments, the
          685  +<b class="package">cmdr::parameter</b> instance of the parameter which changed, and
          686  +its internal representation, in this order.</p></dd>
          687  +<dt><b class="cmd">when-set</b> <i class="arg">cmdprefix</i></dt>
          688  +<dd><p>This command declares the state-change callback to invoke when the
          689  +string representation of the parameter is set during command line
          690  +parsing.</p>
          691  +<p>The callback is invoked with two arguments, the
          692  +<b class="package">cmdr::parameter</b> instance of the parameter which changed, and
          693  +its string representation, in this order.</p></dd>
          694  +</dl>
          695  +<p>Due to their nature these callbacks are invoked at runtime during
          696  +either parsing, completion,&quot; or execution. The details are shown in
          697  +the table below. The specification commands influencing the timing,
          698  +i.e. forcing the use in a specific phase are shown in the intersection
          699  +of callback and phase.</p>
          700  +<pre class="example">
          701  +                    | Dispatch | Parsing | Completion  | Execution
          702  +--------------------+----------+---------+-------------+-----------
          703  +validate (default)  | *        |         |             |          
          704  +--------------------+----------+---------+-------------+-----------
          705  +validate (complete) |          | *       | immediate   | defered
          706  +when-set            |          | *       |             |          
          707  +--------------------+----------+---------+-------------+-----------
          708  +generate            |          |         | immediate   | defered
          709  +validate (validate) |          | test    | immediate   | defered
          710  +validate (release)  |          | test    | immediate   | defered
          711  +--------------------+----------+---------+-------------+-----------
          712  +when-complete       |          |         | immediate   | defered
          713  +--------------------+----------+---------+-------------+-----------
          714  +</pre>
          715  +</div>
          716  +</div>
          717  +<div id="section4" class="section"><h2><a name="section4">Related Documents</a></h2>
          718  +<ol class="enumerated">
          719  +<li><p><i class="term"><a href="cmdr_introduction.html">Cmdr - Introduction to the project</a></i></p></li>
          720  +<li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li>
          721  +<li><p><i class="term"><a href="cmdr_changes.html">Cmdr - Log of Changes</a></i></p></li>
          722  +<li><p><i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i></p></li>
          723  +<li><p><i class="term"><a href="cmdr_howto_installation.html">Cmdr - The Installer's Guide</a></i></p></li>
          724  +<li><p><i class="term"><a href="cmdr_howto_development.html">Cmdr - The Developer's Guide</a></i></p></li>
          725  +</ol>
          726  +</div>
          727  +<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
          728  +<p>Both the package(s) and this documentation will undoubtedly contain
          729  +bugs and other problems.
          730  +Please report such at
          731  +<a href="https:/core.tcl.tk/akupries/cmdr">Cmdr Tickets</a>.</p>
          732  +<p>Please also report any ideas you may have for enhancements of
          733  +either package(s) and/or documentation.</p>
          734  +</div>
          735  +<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
          736  +<p><a href="../../index.html#key4">arguments</a>, <a href="../../index.html#key5">command hierarchy</a>, <a href="../../index.html#key9">command line completion</a>, <a href="../../index.html#key11">command line handling</a>, <a href="../../index.html#key13">command tree</a>, <a href="../../index.html#key0">editing command line</a>, <a href="../../index.html#key8">help for command line</a>, <a href="../../index.html#key6">hierarchy of commands</a>, <a href="../../index.html#key3">interactive command shell</a>, <a href="../../index.html#key1">optional arguments</a>, <a href="../../index.html#key2">options</a>, <a href="../../index.html#key12">parameters</a>, <a href="../../index.html#key10">processing command line</a>, <a href="../../index.html#key7">tree of commands</a></p>
          737  +</div>
          738  +<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
          739  +<p>Copyright &copy; 2013 Andreas Kupries<br>
          740  +Copyright &copy; 2013 Documentation, Andreas Kupries</p>
          741  +</div>
          742  +</div></body></html>

Changes to embedded/www/doc/files/cmdr_help.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_help - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_help - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_help(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_help(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_help - Cmdr - Utilities for help text formatting and setup - Internal</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_help_json.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_help_json - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_help_json - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_help_json(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_help_json(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_help_json - Cmdr - Formatting help as JSON object</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_help_sql.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_help_sql - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_help_sql - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_help_sql(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_help_sql(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_help_sql - Cmdr - Formatting help as series of SQL commands</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_howto_development.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_development - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_development - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_development(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_development(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_development - Cmdr - The Developer's Guide</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#section1">Description</a></li>

Changes to embedded/www/doc/files/cmdr_howto_get_sources.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_howto_get_sources - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_howto_get_sources - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_howto_get_sources(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_howto_get_sources(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_howto_get_sources - Cmdr - How To Get The Sources</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#section1">Description</a></li>

Changes to embedded/www/doc/files/cmdr_howto_installation.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_installation - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_installation - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_installation(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_installation(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_installation - Cmdr - The Installer's Guide</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#section1">Description</a></li>

Changes to embedded/www/doc/files/cmdr_introduction.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_introduction - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_introduction - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_introduction(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_introduction(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_introduction - Cmdr - Introduction to the project</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#section1">Description</a></li>
................................................................................
   119    119   <li class="section"><a href="#keywords">Keywords</a></li>
   120    120   <li class="section"><a href="#copyright">Copyright</a></li>
   121    121   </ul>
   122    122   </div>
   123    123   <div id="section1" class="section"><h2><a name="section1">Description</a></h2>
   124    124   <p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
   125    125   <p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
          126  +<p>The cmdr framework is a set of 12 related Tcl packages for the easy
          127  +specification of the interfaces of command line applications.
          128  +This means the declaration of the set of commands to be provided by an
          129  +application, and their parameters, be they options or positional
          130  +inputs.
          131  +At runtime the internals of the framework, guided by the chosen
          132  +specification, handle the bulk of processing <b class="variable">$::argv</b>. This
          133  +covers determining the requested command, mapping argument words to
          134  +command parameters, and validating them.
          135  +Additional features of the runtime are an integrated help system and
          136  +interactive command line shells with basic command and argument
          137  +completion.</p>
   126    138   </div>
   127    139   <div id="section2" class="section"><h2><a name="section2">System Architecture</a></h2>
   128    140   </div>
   129    141   <div id="section3" class="section"><h2><a name="section3">Related Documents</a></h2>
   130    142   <ol class="enumerated">
   131    143   <li><p><i class="term">Cmdr - Introduction to the project</i></p></li>
   132    144   <li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li>

Changes to embedded/www/doc/files/cmdr_license.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_license - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_license - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_license(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_license(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_license - Cmdr - License</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#section1">Description</a></li>

Changes to embedded/www/doc/files/cmdr_officer.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_officer - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_officer - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_officer(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_officer(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_officer - Cmdr - Aggregation of multiple commands for dispatch.</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
   177    177   <dl class="arguments">
   178    178   <dt>object <i class="arg">super</i></dt>
   179    179   <dd><p>The instance command of the actor (officer actually) which contains the new officer.</p></dd>
   180    180   <dt>string <i class="arg">name</i></dt>
   181    181   <dd><p>The user-visible name of the command.</p></dd>
   182    182   <dt>script <i class="arg">actions</i></dt>
   183    183   <dd><p>The specification of the officer's subordinates.
   184         -Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
          184  +Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Officers&quot;) for the details.</p></dd>
   185    185   </dl></dd>
   186    186   </dl>
   187    187   </div>
   188    188   <div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
   189    189   <p>The instance API is not public. It is used internally by the framework
   190    190   during the parsing of a command hierarchy specification to configure
   191    191   the officer instances, and when processing a command line at runtime
................................................................................
   273    273   <dl class="arguments">
   274    274   <dt>script <i class="arg">path</i></dt>
   275    275   <dd><p>The list of names specifying the route from this officer to the new
   276    276   private. The last element is the name of the private command, while
   277    277   the preceding names specify the intermediate officers.</p></dd>
   278    278   <dt>script <i class="arg">arguments</i></dt>
   279    279   <dd><p>The specification of the private's parameters.
   280         -Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
          280  +Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Parameters&quot;) for the details.</p></dd>
   281    281   <dt>cmd-prefix <i class="arg">action</i></dt>
   282    282   <dd><p>The command prefix to invoke when this private is selected for
   283    283   execution.  It takes a single argument, the instance command of the
   284    284   hidden <b class="package">cmdr::config</b> container holding the private's
   285    285   parameters. The result of the action, if there is any, is ignored by
   286    286   the framework.</p></dd>
   287    287   </dl></dd>
................................................................................
   317    317   <dd><p>This method takes a regular specification script and uses it to extend
   318    318   the set of subordinates known to this officer. This is the same type
   319    319   of script as used during construction, except here we dynamically
   320    320   extend the officer.</p>
   321    321   <dl class="arguments">
   322    322   <dt>script <i class="arg">actions</i></dt>
   323    323   <dd><p>The specification of the officer's additional subordinates.
   324         -Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
          324  +Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Officers&quot;) for the details.</p></dd>
   325    325   </dl></dd>
   326    326   <dt><a name="18"><b class="cmd">&lt;officer&gt;</b> <b class="method">lookup</b> <i class="arg">name</i></a></dt>
   327    327   <dd><p>This method returns the instance command of the sub-ordinate with the
   328    328   given <i class="arg">name</i>. An error is thrown if such a sub-ordinate does not
   329    329   exist. See also method <b class="method">has</b>.</p>
   330    330   <dl class="arguments">
   331    331   <dt>string <i class="arg">name</i></dt>

Changes to embedded/www/doc/files/cmdr_parameter.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_parameter - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_parameter - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_parameter(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_parameter(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_parameter - Cmdr - Command parameters</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
   221    221   <dd><p>Internal name of the parameter. Also the name used in the
   222    222   help, if not overridden by a <b class="cmd">label</b> declaration
   223    223   (in <i class="arg">spec</i>).</p></dd>
   224    224   <dt>string <i class="arg">description</i></dt>
   225    225   <dd><p>Human-readable help text for the parameter.</p></dd>
   226    226   <dt>script <i class="arg">spec</i></dt>
   227    227   <dd><p>Tcl-script specifying the parameter in detail. Please read
   228         -<i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
          228  +<i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Parameters&quot;) for the details.</p></dd>
   229    229   </dl></dd>
   230    230   </dl>
   231    231   </div>
   232    232   <div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
   233    233   <p>Most of the instance API is not public.</p>
   234    234   <p>It is described here for use by developers maintaining,
   235    235   modifying and extending the framework itself. A user of the framework

Changes to embedded/www/doc/files/cmdr_private.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_private - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_private - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_private(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_private(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_private - Cmdr - Single command handling, options, and arguments</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>
................................................................................
   164    164   <dl class="arguments">
   165    165   <dt>object <i class="arg">super</i></dt>
   166    166   <dd><p>The instance command of the actor (officer actually) which contains the new private.</p></dd>
   167    167   <dt>string <i class="arg">name</i></dt>
   168    168   <dd><p>The user-visible name of the command.</p></dd>
   169    169   <dt>script <i class="arg">arguments</i></dt>
   170    170   <dd><p>The specification of the private's parameters.
   171         -Please read <i class="term">Cmdr - Specification Language</i>, section --TODO-- for the details.</p></dd>
          171  +Please read <i class="term"><a href="cmdr_dsl.html">Cmdr - Specification Language</a></i> (section &quot;Privates&quot;) for the details.</p></dd>
   172    172   <dt>cmd-prefix <i class="arg">action</i></dt>
   173    173   <dd><p>The command prefix to invoke when this private is selected for
   174    174   execution.  It takes a single argument, the instance command of the
   175    175   hidden <b class="package">cmdr::config</b> container holding the private's
   176    176   parameters. The result of the action, if there is any, is ignored by
   177    177   the framework.</p></dd>
   178    178   </dl></dd>

Changes to embedded/www/doc/files/cmdr_util.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_util - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_util - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_util(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_util(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_util - Cmdr - General Utilities - Internal</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_validate.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_validate - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_validate - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_validate(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_validate(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_validate - Cmdr - Standard validation types for parameters</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_vcommon.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_validate_common - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_validate_common - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_validate_common(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_validate_common(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_validate_common - Cmdr - Utilities for Validation Types</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/files/cmdr_vtypes.html.

     1      1   
     2      2   <html><head>
     3         -<title>cmdr_vtypes - &lt;&lt;unknown&gt;&gt;</title>
            3  +<title>cmdr_vtypes - Cmdr, a framework for command line parsing and dispatch</title>
     4      4   <style type="text/css"><!--
     5      5       HTML {
     6      6   	background: 	#FFFFFF;
     7      7   	color: 		black;
     8      8       }
     9      9       BODY {
    10     10   	background: 	#FFFFFF;
................................................................................
   101    101   <body><div class="doctools">
   102    102   <hr> [
   103    103      <a href="../../../../../../home">Home</a>
   104    104   | <a href="../../toc.html">Main Table Of Contents</a>
   105    105   | <a href="../toc.html">Table Of Contents</a>
   106    106   | <a href="../../index.html">Keyword Index</a>
   107    107    ] <hr>
   108         -<h1 class="title">cmdr_vtypes(n) 0 doc &quot;&lt;&lt;unknown&gt;&gt;&quot;</h1>
          108  +<h1 class="title">cmdr_vtypes(n) 0 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
   109    109   <div id="name" class="section"><h2><a name="name">Name</a></h2>
   110    110   <p>cmdr_vtypes - Cmdr - Writing custom validation types</p>
   111    111   </div>
   112    112   <div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
   113    113   <ul class="toc">
   114    114   <li class="section"><a href="#toc">Table Of Contents</a></li>
   115    115   <li class="section"><a href="#synopsis">Synopsis</a></li>

Changes to embedded/www/doc/toc.html.

    30     30   <td class="#tocright">Cmdr - Collection of parameters for privates</td>
    31     31   </tr>
    32     32   <tr class="#toceven" >
    33     33   <td class="#tocleft" ><a href="files/cmdr_howto_development.html">cmdr_development</a></td>
    34     34   <td class="#tocright">Cmdr - The Developer's Guide</td>
    35     35   </tr>
    36     36   <tr class="#tocodd"  >
           37  +<td class="#tocleft" ><a href="files/cmdr_dsl.html">cmdr_dsl</a></td>
           38  +<td class="#tocright">Cmdr - Specification Language</td>
           39  +</tr>
           40  +<tr class="#toceven" >
    37     41   <td class="#tocleft" ><a href="files/cmdr_help.html">cmdr_help</a></td>
    38     42   <td class="#tocright">Cmdr - Utilities for help text formatting and setup - Internal</td>
    39     43   </tr>
    40         -<tr class="#toceven" >
           44  +<tr class="#tocodd"  >
    41     45   <td class="#tocleft" ><a href="files/cmdr_help_json.html">cmdr_help_json</a></td>
    42     46   <td class="#tocright">Cmdr - Formatting help as JSON object</td>
    43     47   </tr>
    44         -<tr class="#tocodd"  >
           48  +<tr class="#toceven" >
    45     49   <td class="#tocleft" ><a href="files/cmdr_help_sql.html">cmdr_help_sql</a></td>
    46     50   <td class="#tocright">Cmdr - Formatting help as series of SQL commands</td>
    47     51   </tr>
    48         -<tr class="#toceven" >
           52  +<tr class="#tocodd"  >
    49     53   <td class="#tocleft" ><a href="files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
    50     54   <td class="#tocright">Cmdr - How To Get The Sources</td>
    51     55   </tr>
    52         -<tr class="#tocodd"  >
           56  +<tr class="#toceven" >
    53     57   <td class="#tocleft" ><a href="files/cmdr_howto_installation.html">cmdr_installation</a></td>
    54     58   <td class="#tocright">Cmdr - The Installer's Guide</td>
    55     59   </tr>
    56         -<tr class="#toceven" >
           60  +<tr class="#tocodd"  >
    57     61   <td class="#tocleft" ><a href="files/cmdr_introduction.html">cmdr_introduction</a></td>
    58     62   <td class="#tocright">Cmdr - Introduction to the project</td>
    59     63   </tr>
    60         -<tr class="#tocodd"  >
           64  +<tr class="#toceven" >
    61     65   <td class="#tocleft" ><a href="files/cmdr_license.html">cmdr_license</a></td>
    62     66   <td class="#tocright">Cmdr - License</td>
    63     67   </tr>
    64         -<tr class="#toceven" >
           68  +<tr class="#tocodd"  >
    65     69   <td class="#tocleft" ><a href="files/cmdr_officer.html">cmdr_officer</a></td>
    66     70   <td class="#tocright">Cmdr - Aggregation of multiple commands for dispatch.</td>
    67     71   </tr>
    68         -<tr class="#tocodd"  >
           72  +<tr class="#toceven" >
    69     73   <td class="#tocleft" ><a href="files/cmdr_parameter.html">cmdr_parameter</a></td>
    70     74   <td class="#tocright">Cmdr - Command parameters</td>
    71     75   </tr>
    72         -<tr class="#toceven" >
           76  +<tr class="#tocodd"  >
    73     77   <td class="#tocleft" ><a href="files/cmdr_private.html">cmdr_private</a></td>
    74     78   <td class="#tocright">Cmdr - Single command handling, options, and arguments</td>
    75     79   </tr>
    76         -<tr class="#tocodd"  >
           80  +<tr class="#toceven" >
    77     81   <td class="#tocleft" ><a href="files/cmdr_util.html">cmdr_util</a></td>
    78     82   <td class="#tocright">Cmdr - General Utilities - Internal</td>
    79     83   </tr>
    80         -<tr class="#toceven" >
           84  +<tr class="#tocodd"  >
    81     85   <td class="#tocleft" ><a href="files/cmdr_validate.html">cmdr_validate</a></td>
    82     86   <td class="#tocright">Cmdr - Standard validation types for parameters</td>
    83     87   </tr>
    84         -<tr class="#tocodd"  >
           88  +<tr class="#toceven" >
    85     89   <td class="#tocleft" ><a href="files/cmdr_vcommon.html">cmdr_validate_common</a></td>
    86     90   <td class="#tocright">Cmdr - Utilities for Validation Types</td>
    87     91   </tr>
    88         -<tr class="#toceven" >
           92  +<tr class="#tocodd"  >
    89     93   <td class="#tocleft" ><a href="files/cmdr_vtypes.html">cmdr_vtypes</a></td>
    90     94   <td class="#tocright">Cmdr - Writing custom validation types</td>
    91     95   </tr>
    92     96   </table>
    93     97   </dl><hr></body></html>

Added embedded/www/image/erd.png.

cannot compute difference between binary files

Changes to embedded/www/index.html.

    18     18   <hr><table class="#idx" width="100%">
    19     19   <tr class="#idxheader"><th colspan="2">
    20     20   <a name="c1">Keywords: A</a>
    21     21   </th></tr>
    22     22   <tr class="#idxeven" valign=top>
    23     23   <td class="#idxleft" width="35%"><a name="key4"> arguments </a></td>
    24     24   <td class="#idxright" width="65%">
    25         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           25  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    26     26   </td></tr>
    27     27   <tr class="#idxheader"><th colspan="2">
    28     28   <a name="c2">Keywords: C</a>
    29     29   </th></tr>
    30     30   <tr class="#idxodd" valign=top>
    31     31   <td class="#idxleft" width="35%"><a name="key5"> command hierarchy </a></td>
    32     32   <td class="#idxright" width="65%">
    33         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           33  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    34     34   </td></tr>
    35     35   <tr class="#idxeven" valign=top>
    36     36   <td class="#idxleft" width="35%"><a name="key9"> command line completion </a></td>
    37     37   <td class="#idxright" width="65%">
    38         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           38  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    39     39   </td></tr>
    40     40   <tr class="#idxodd" valign=top>
    41     41   <td class="#idxleft" width="35%"><a name="key11"> command line handling </a></td>
    42     42   <td class="#idxright" width="65%">
    43         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           43  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    44     44   </td></tr>
    45     45   <tr class="#idxeven" valign=top>
    46     46   <td class="#idxleft" width="35%"><a name="key13"> command tree </a></td>
    47     47   <td class="#idxright" width="65%">
    48         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           48  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    49     49   </td></tr>
    50     50   <tr class="#idxheader"><th colspan="2">
    51     51   <a name="c3">Keywords: E</a>
    52     52   </th></tr>
    53     53   <tr class="#idxodd" valign=top>
    54     54   <td class="#idxleft" width="35%"><a name="key0"> editing command line </a></td>
    55     55   <td class="#idxright" width="65%">
    56         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           56  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    57     57   </td></tr>
    58     58   <tr class="#idxheader"><th colspan="2">
    59     59   <a name="c4">Keywords: H</a>
    60     60   </th></tr>
    61     61   <tr class="#idxeven" valign=top>
    62     62   <td class="#idxleft" width="35%"><a name="key8"> help for command line </a></td>
    63     63   <td class="#idxright" width="65%">
    64         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           64  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    65     65   </td></tr>
    66     66   <tr class="#idxodd" valign=top>
    67     67   <td class="#idxleft" width="35%"><a name="key6"> hierarchy of commands </a></td>
    68     68   <td class="#idxright" width="65%">
    69         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           69  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    70     70   </td></tr>
    71     71   <tr class="#idxheader"><th colspan="2">
    72     72   <a name="c5">Keywords: I</a>
    73     73   </th></tr>
    74     74   <tr class="#idxeven" valign=top>
    75     75   <td class="#idxleft" width="35%"><a name="key3"> interactive command shell </a></td>
    76     76   <td class="#idxright" width="65%">
    77         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           77  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    78     78   </td></tr>
    79     79   <tr class="#idxheader"><th colspan="2">
    80     80   <a name="c6">Keywords: O</a>
    81     81   </th></tr>
    82     82   <tr class="#idxodd" valign=top>
    83     83   <td class="#idxleft" width="35%"><a name="key1"> optional arguments </a></td>
    84     84   <td class="#idxright" width="65%">
    85         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           85  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    86     86   </td></tr>
    87     87   <tr class="#idxeven" valign=top>
    88     88   <td class="#idxleft" width="35%"><a name="key2"> options </a></td>
    89     89   <td class="#idxright" width="65%">
    90         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           90  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    91     91   </td></tr>
    92     92   <tr class="#idxheader"><th colspan="2">
    93     93   <a name="c7">Keywords: P</a>
    94     94   </th></tr>
    95     95   <tr class="#idxodd" valign=top>
    96     96   <td class="#idxleft" width="35%"><a name="key12"> parameters </a></td>
    97     97   <td class="#idxright" width="65%">
    98         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
           98  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
    99     99   </td></tr>
   100    100   <tr class="#idxeven" valign=top>
   101    101   <td class="#idxleft" width="35%"><a name="key10"> processing command line </a></td>
   102    102   <td class="#idxright" width="65%">
   103         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
          103  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
   104    104   </td></tr>
   105    105   <tr class="#idxheader"><th colspan="2">
   106    106   <a name="c8">Keywords: T</a>
   107    107   </th></tr>
   108    108   <tr class="#idxodd" valign=top>
   109    109   <td class="#idxleft" width="35%"><a name="key7"> tree of commands </a></td>
   110    110   <td class="#idxright" width="65%">
   111         -<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
          111  +<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr_actor </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr_config </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_help.html"> cmdr_help </a> &#183; <a href="doc/files/cmdr_help_json.html"> cmdr_help_json </a> &#183; <a href="doc/files/cmdr_help_sql.html"> cmdr_help_sql </a> &#183; <a href="doc/files/cmdr_howto_get_sources.html"> cmdr_howto_get_sources </a> &#183; <a href="doc/files/cmdr_howto_installation.html"> cmdr_installation </a> &#183; <a href="doc/files/cmdr_introduction.html"> cmdr_introduction </a> &#183; <a href="doc/files/cmdr_license.html"> cmdr_license </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr_officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr_parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr_private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr_util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr_validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr_validate_common </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr_vtypes </a>
   112    112   </td></tr>
   113    113   </table>
   114    114   </body></html>

Changes to embedded/www/toc.html.

    30     30   <td class="#tocright">Cmdr - Collection of parameters for privates</td>
    31     31   </tr>
    32     32   <tr class="#toceven" >
    33     33   <td class="#tocleft" ><a href="doc/files/cmdr_howto_development.html">cmdr_development</a></td>
    34     34   <td class="#tocright">Cmdr - The Developer's Guide</td>
    35     35   </tr>
    36     36   <tr class="#tocodd"  >
           37  +<td class="#tocleft" ><a href="doc/files/cmdr_dsl.html">cmdr_dsl</a></td>
           38  +<td class="#tocright">Cmdr - Specification Language</td>
           39  +</tr>
           40  +<tr class="#toceven" >
    37     41   <td class="#tocleft" ><a href="doc/files/cmdr_help.html">cmdr_help</a></td>
    38     42   <td class="#tocright">Cmdr - Utilities for help text formatting and setup - Internal</td>
    39     43   </tr>
    40         -<tr class="#toceven" >
           44  +<tr class="#tocodd"  >
    41     45   <td class="#tocleft" ><a href="doc/files/cmdr_help_json.html">cmdr_help_json</a></td>
    42     46   <td class="#tocright">Cmdr - Formatting help as JSON object</td>
    43     47   </tr>
    44         -<tr class="#tocodd"  >
           48  +<tr class="#toceven" >
    45     49   <td class="#tocleft" ><a href="doc/files/cmdr_help_sql.html">cmdr_help_sql</a></td>
    46     50   <td class="#tocright">Cmdr - Formatting help as series of SQL commands</td>
    47     51   </tr>
    48         -<tr class="#toceven" >
           52  +<tr class="#tocodd"  >
    49     53   <td class="#tocleft" ><a href="doc/files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
    50     54   <td class="#tocright">Cmdr - How To Get The Sources</td>
    51     55   </tr>
    52         -<tr class="#tocodd"  >
           56  +<tr class="#toceven" >
    53     57   <td class="#tocleft" ><a href="doc/files/cmdr_howto_installation.html">cmdr_installation</a></td>
    54     58   <td class="#tocright">Cmdr - The Installer's Guide</td>
    55     59   </tr>
    56         -<tr class="#toceven" >
           60  +<tr class="#tocodd"  >
    57     61   <td class="#tocleft" ><a href="doc/files/cmdr_introduction.html">cmdr_introduction</a></td>
    58     62   <td class="#tocright">Cmdr - Introduction to the project</td>
    59     63   </tr>
    60         -<tr class="#tocodd"  >
           64  +<tr class="#toceven" >
    61     65   <td class="#tocleft" ><a href="doc/files/cmdr_license.html">cmdr_license</a></td>
    62     66   <td class="#tocright">Cmdr - License</td>
    63     67   </tr>
    64         -<tr class="#toceven" >
           68  +<tr class="#tocodd"  >
    65     69   <td class="#tocleft" ><a href="doc/files/cmdr_officer.html">cmdr_officer</a></td>
    66     70   <td class="#tocright">Cmdr - Aggregation of multiple commands for dispatch.</td>
    67     71   </tr>
    68         -<tr class="#tocodd"  >
           72  +<tr class="#toceven" >
    69     73   <td class="#tocleft" ><a href="doc/files/cmdr_parameter.html">cmdr_parameter</a></td>
    70     74   <td class="#tocright">Cmdr - Command parameters</td>
    71     75   </tr>
    72         -<tr class="#toceven" >
           76  +<tr class="#tocodd"  >
    73     77   <td class="#tocleft" ><a href="doc/files/cmdr_private.html">cmdr_private</a></td>
    74     78   <td class="#tocright">Cmdr - Single command handling, options, and arguments</td>
    75     79   </tr>
    76         -<tr class="#tocodd"  >
           80  +<tr class="#toceven" >
    77     81   <td class="#tocleft" ><a href="doc/files/cmdr_util.html">cmdr_util</a></td>
    78     82   <td class="#tocright">Cmdr - General Utilities - Internal</td>
    79     83   </tr>
    80         -<tr class="#toceven" >
           84  +<tr class="#tocodd"  >
    81     85   <td class="#tocleft" ><a href="doc/files/cmdr_validate.html">cmdr_validate</a></td>
    82     86   <td class="#tocright">Cmdr - Standard validation types for parameters</td>
    83     87   </tr>
    84         -<tr class="#tocodd"  >
           88  +<tr class="#toceven" >
    85     89   <td class="#tocleft" ><a href="doc/files/cmdr_vcommon.html">cmdr_validate_common</a></td>
    86     90   <td class="#tocright">Cmdr - Utilities for Validation Types</td>
    87     91   </tr>
    88         -<tr class="#toceven" >
           92  +<tr class="#tocodd"  >
    89     93   <td class="#tocleft" ><a href="doc/files/cmdr_vtypes.html">cmdr_vtypes</a></td>
    90     94   <td class="#tocright">Cmdr - Writing custom validation types</td>
    91     95   </tr>
    92     96   </table>
    93     97   </dl><hr></body></html>