cmdr
Check-in [cabf535e47]
Not logged in

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

Overview
Comment:officers/private * Renamed 'ehandler' to intercept. Documented the change. Kept the old name around, deprecated it. * Renamed 'shandler' to custom-setup, and documented it. Extended the implementation to support a list of customizations, instead of a single. * Fixed handling of *prefix* for --help. Code wrongly extended the local copy of the block, instead of the root copy. Updated docs, change information. Regenerated the embedded docs.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:cabf535e4773c880bda8839204701e61e2adbac6
User & Date: aku 2016-06-29 07:54:42
Original Comment: officers/private * Renamed 'ehandler' to intercept. Documented the change. Kept the old name around, deprecated it. * Renamed 'shandler' to custom-setup, and documented it. Extended the implementation to support a list of cusomizations, instead of a single. * Fixed handling of *prefix* for --help. Code wrongly extended the local copy of the block, instead of the root copy. Updated docs, change information. Regenerated the embedded docs.
Context
2016-06-30
06:07
Bumped primary version to 1.2. Regenerated docs. check-in: 39c3c491d0 user: aku tags: trunk, release, v1.2, cmdr-1-2, release-1-2
2016-06-29
07:54
officers/private * Renamed 'ehandler' to intercept. Documented the change. Kept the old name around, deprecated it. * Renamed 'shandler' to custom-setup, and documented it. Extended the implementation to support a list of customizations, instead of a single. * Fixed handling of *prefix* for --help. Code wrongly extended the local copy of the block, instead of the root copy. Updated docs, change information. Regenerated the embedded docs. check-in: cabf535e47 user: aku tags: trunk
07:09
cmdr::color - Add forgotten docs about new symbolic name. check-in: d1c012590f user: aku tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to core/officer.tcl.

75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100






101
102
103

104
105
106
107
108
109
110
111
112
113
114
115
...
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
...
267
268
269
270
271
272
273

274


275

276
277
278
279
280
281
282
...
373
374
375
376
377
378
379
380
381
382


383
384
385
386
387
388
389
...
501
502
503
504
505
506
507
508
509
510

511
512
513
514
515
516
517
...
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
    constructor {super name actions} {
	debug.cmdr/officer {[self] $super $name}
	next

	my super: $super
	my name:  $name

	set myactions   $actions ; # Action spec for future initialization
	set myinit      no       ; # Dispatch map will be initialized lazily
	set mymap       {}       ; # Action map starts knowing nothing
	set mypmap      {}       ; # Ditto for the map of action abbreviations.
	set mycommands  {}       ; # Ditto
	set myccommands {}       ; # Ditto, derived cache, see method CCommands.
	set mychildren  {}       ; # List of created subordinates.
	set myhandler   {}       ; # Handler around cmd parsing and execution.
	set myshandler  {}       ; # Setup handler, run after regular object
	#                          # initialization from its definition.
	set myconfig    {}
	return
    }

    # # ## ### ##### ######## #############

    method ehandler {cmd} {
	debug.cmdr/officer {[self] $cmd}
	set myhandler $cmd






	return
    }


    method shandler {cmd} {
	debug.cmdr/officer {[self] $cmd}
	set myshandler $cmd
	return
    }

    # # ## ### ##### ######## #############
    ## Public API. (Introspection, mostly).
    ## - Determine set of known actions.
    ## - Determine default action.
    ## - Determine handler for an action.

................................................................................
		    No-op if not in a shell.
		}
	    } [mymethod shell-exit]
	}

	# Invoke the user-specified hook for extending a newly-made
	# officer, if any.
	debug.cmdr/officer {[debug caller] | call shandler}
	if {[llength $myshandler]} {
	    {*}$myshandler [self]
	}

	debug.cmdr/officer {[debug caller] | /done}
	return
    }

    method learn {script} {
................................................................................
	debug.cmdr/officer {[self] learn}
	# Make the DSL commands directly available. Note that
	# "description:" and "common" are superclass methods, and
	# renamed to their DSL counterparts. The others are unexported
	# instance methods of this class.

	link \

	    {ehandler    ehandler} \


	    {shandler    shandler} \

	    {private     Private} \
	    {officer     Officer} \
	    {default     Default} \
	    {alias       Alias} \
	    {description description:} \
	    undocumented \
	    {common      set} \
................................................................................
	# Note: By placing the subordinate objects into the officer's
	# namespace they will be automatically destroyed with the
	# officer itself. No special code for cleanup required.

	set handler [self namespace]::${what}_$name
	cmdr::$what create $handler [self] $name {*}$args

	# Propagate error and setup handlers.
	$handler ehandler $myhandler
	$handler shandler $myshandler



	lappend mychildren $handler

	my Def $name $handler
	return $handler
    }

................................................................................
	    # Split into command and arguments
	    set remainder [lassign $args cmd]

	    # Delegate to the handler for a known command.
	    if {[my Known $cmd]} {
		debug.cmdr/officer {[debug caller] | /known $cmd}

		my lappend *prefix* $cmd
		[my lookup $cmd] do {*}$remainder


		debug.cmdr/officer {[debug caller] | /done known}
		return
	    }

	    # The command word is not known. Delegate the full command to
	    # the default, if we have any. Otherwise fail.

................................................................................

	return $help
    }

    # # ## ### ##### ######## #############

    variable myinit myactions mymap mycommands myccommands mychildren \
	myreplexit myhandler mypmap myshandler myconfig

    # # ## ### ##### ######## #############
}

# # ## ### ##### ######## ############# #####################
## Ready
package provide cmdr::officer 1.4.1







|
|
|
|
|
|
|
|
|
|






|

|
>
>
>
>
>
>



>
|
<
<
<
<







 







|
|
|







 







>
|
>
>
|
>







 







|
|
|
>
>







 







|
|

>







 







|







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111




112
113
114
115
116
117
118
...
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
...
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
...
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
...
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
...
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
    constructor {super name actions} {
	debug.cmdr/officer {[self] $super $name}
	next

	my super: $super
	my name:  $name

	set myactions     $actions ; # Action spec for future initialization
	set myinit        no       ; # Dispatch map will be initialized lazily
	set mymap         {}       ; # Action map starts knowing nothing
	set mypmap        {}       ; # Ditto for the map of action abbreviations.
	set mycommands    {}       ; # Ditto
	set myccommands   {}       ; # Ditto, derived cache, see method CCommands.
	set mychildren    {}       ; # List of created subordinates.
	set myintercept   {}       ; # Handler around cmd parsing and execution.
	set mycustomsetup {}       ; # List of setup handlers, run after regular object
	#                            # initialization from its definition.
	set myconfig    {}
	return
    }

    # # ## ### ##### ######## #############

    method intercept {cmd} {
	debug.cmdr/officer {[self] $cmd}
	set myintercept $cmd
	return
    }

    method custom-setup {cmd} {
	debug.cmdr/officer {[self] $cmd}
	lappend mycustomsetup $cmd
	return
    }

    forward ehandler my intercept
    forward shandler my custom-setup





    # # ## ### ##### ######## #############
    ## Public API. (Introspection, mostly).
    ## - Determine set of known actions.
    ## - Determine default action.
    ## - Determine handler for an action.

................................................................................
		    No-op if not in a shell.
		}
	    } [mymethod shell-exit]
	}

	# Invoke the user-specified hook for extending a newly-made
	# officer, if any.
	debug.cmdr/officer {[debug caller] | call custom-setup}
	foreach cmd $mycustomsetup {
	    {*}$cmd [self]
	}

	debug.cmdr/officer {[debug caller] | /done}
	return
    }

    method learn {script} {
................................................................................
	debug.cmdr/officer {[self] learn}
	# Make the DSL commands directly available. Note that
	# "description:" and "common" are superclass methods, and
	# renamed to their DSL counterparts. The others are unexported
	# instance methods of this class.

	link \
	    {intercept   intercept} \
	    {ehandler    intercept} \
	    \
	    {custom-setup custom-setup} \
	    {shandler     custom-setup} \
	    \
	    {private     Private} \
	    {officer     Officer} \
	    {default     Default} \
	    {alias       Alias} \
	    {description description:} \
	    undocumented \
	    {common      set} \
................................................................................
	# Note: By placing the subordinate objects into the officer's
	# namespace they will be automatically destroyed with the
	# officer itself. No special code for cleanup required.

	set handler [self namespace]::${what}_$name
	cmdr::$what create $handler [self] $name {*}$args

	# Propagate error (interceptor) and custom setup handlers.
	$handler intercept $myintercept
	foreach cmd  $mycustomsetup {
	    $handler custom-setup $cmd
	}

	lappend mychildren $handler

	my Def $name $handler
	return $handler
    }

................................................................................
	    # Split into command and arguments
	    set remainder [lassign $args cmd]

	    # Delegate to the handler for a known command.
	    if {[my Known $cmd]} {
		debug.cmdr/officer {[debug caller] | /known $cmd}

		[my root] lappend *prefix* $cmd
		debug.cmdr/officer {[debug caller] | /prefix [my root] ([my get *prefix*])}

		[my lookup $cmd] do {*}$remainder
		debug.cmdr/officer {[debug caller] | /done known}
		return
	    }

	    # The command word is not known. Delegate the full command to
	    # the default, if we have any. Otherwise fail.

................................................................................

	return $help
    }

    # # ## ### ##### ######## #############

    variable myinit myactions mymap mycommands myccommands mychildren \
	myreplexit myintercept mypmap mycustomsetup myconfig

    # # ## ### ##### ######## #############
}

# # ## ### ##### ######## ############# #####################
## Ready
package provide cmdr::officer 1.4.1

Changes to core/private.tcl.

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
..
89
90
91
92
93
94
95
96
97
98







99
100
101

102
103
104
105
106
107
108
109
110
111
112
113
114
...
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
...
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221

	my super: $super
	my name:  $name

	set myarguments $arguments
	set mycmd       $cmdprefix
	set myinit      0
	set myhandler   {}
	return
    }

    # # ## ### ##### ######## #############

    method children {} {
	debug.cmdr/private {}
................................................................................
	return -code error \
	    -errorcode [list CMDR ACTION BAD $word] \
	    "The command \"$prefix\" has no sub-commands, unexpected word \"$word\""
    }

    # # ## ### ##### ######## #############

    method ehandler {cmd} {
	debug.cmdr/private {}
	set myhandler $cmd







	return
    }


    method shandler {cmd} {
	debug.cmdr/private {}
	# Privates have no setup handler/hook.
	# Ignoring the inherited definition.
	return
    }

    # # ## ### ##### ######## #############
    ## Internal. Argument processing. Defered until required.
    ## Core setup code runs only once.

    method Setup {} {
	# Process myarguments only once.
................................................................................

    method do {args} {
	debug.cmdr/private {}
	my Setup

	my history-add [my FullCmd $args]

	if {[llength $myhandler]} {
	    # The handler is expected to have a try/finally construct
	    # which captures all of interest.
	    {*}$myhandler {
		my Run $args
	    }
	} else {
	    my Run $args
	}
	debug.cmdr/private {/done}
    }
................................................................................
	debug.cmdr/private {}
	my Setup
	config $m {*}$args
    }

    # # ## ### ##### ######## #############

    variable myarguments mycmd myinit myconfig myhandler

    # # ## ### ##### ######## #############
}

# # ## ### ##### ######## ############# #####################
## Ready
package provide cmdr::private 1.3.1







|







 







|

|
>
>
>
>
>
>
>



>
|
<
<
<
<
<







 







|

|
|







 







|







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
..
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110





111
112
113
114
115
116
117
...
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
...
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

	my super: $super
	my name:  $name

	set myarguments $arguments
	set mycmd       $cmdprefix
	set myinit      0
	set myintercept {}
	return
    }

    # # ## ### ##### ######## #############

    method children {} {
	debug.cmdr/private {}
................................................................................
	return -code error \
	    -errorcode [list CMDR ACTION BAD $word] \
	    "The command \"$prefix\" has no sub-commands, unexpected word \"$word\""
    }

    # # ## ### ##### ######## #############

    method intercept {cmd} {
	debug.cmdr/private {}
	set myintercept $cmd
	return
    }

    method custom-setup {cmd} {
	debug.cmdr/private {}
	# Privates have no hook/handler for custom setup.
	# Ignore the inherited definition.
	return
    }

    forward ehandler my intercept
    forward shandler my custom-setup






    # # ## ### ##### ######## #############
    ## Internal. Argument processing. Defered until required.
    ## Core setup code runs only once.

    method Setup {} {
	# Process myarguments only once.
................................................................................

    method do {args} {
	debug.cmdr/private {}
	my Setup

	my history-add [my FullCmd $args]

	if {[llength $myintercept]} {
	    # The handler is expected to have a try/finally construct
	    # which captures everything of interest to it.
	    {*}$myintercept {
		my Run $args
	    }
	} else {
	    my Run $args
	}
	debug.cmdr/private {/done}
    }
................................................................................
	debug.cmdr/private {}
	my Setup
	config $m {*}$args
    }

    # # ## ### ##### ######## #############

    variable myarguments mycmd myinit myconfig myintercept

    # # ## ### ##### ######## #############
}

# # ## ### ##### ######## ############# #####################
## Ready
package provide cmdr::private 1.3.1

Changes to doc/cmdr_history.man.

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
..
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
[example {
    history list ?n?  - Show last n history entries. Defaults to all.
    history clear     - Drop all history entries
    history limit ?n? - Limit history to 'n' entries (n >= 0). Unlimited for n < 0.
}]

Under most circumstances the attachment is handled through the
[cmd shandler] method of officers. See [package cmdr::officer], and
the [sectref Example] for more information.

[comment {- - -- --- ----- -------- -------------}]
[call [cmd ::cmdr::history] [method save-to] [arg path]]

When invoked this command sets the package-wide history save file used
by the commands to the [arg path].
................................................................................
[cmd fossil] DVCS.

[example {
cmdr history initial-limit 20
cmdr history save-to       ~/.fx_history

cmdr create fx::fx [file tail $::argv0] {
    shandler ::cmdr::history::attach

    [...]
}
}]

[include parts/feedback.inc]
[manpage_end]







|







 







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
..
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
[example {
    history list ?n?  - Show last n history entries. Defaults to all.
    history clear     - Drop all history entries
    history limit ?n? - Limit history to 'n' entries (n >= 0). Unlimited for n < 0.
}]

Under most circumstances the attachment is handled through the
method [cmd custom-setup] of officers. See [package cmdr::officer], and
the [sectref Example] for more information.

[comment {- - -- --- ----- -------- -------------}]
[call [cmd ::cmdr::history] [method save-to] [arg path]]

When invoked this command sets the package-wide history save file used
by the commands to the [arg path].
................................................................................
[cmd fossil] DVCS.

[example {
cmdr history initial-limit 20
cmdr history save-to       ~/.fx_history

cmdr create fx::fx [file tail $::argv0] {
    custom-setup ::cmdr::history::attach

    [...]
}
}]

[include parts/feedback.inc]
[manpage_end]

Changes to doc/cmdr_officer.man.

143
144
145
146
147
148
149

150



151
152
153
154
155
156
157
...
158
159
160
161
162
163
164
























165
166
167
168
169
170
171

[list_begin arguments]
[arg_def string word]
The words of the command line to parse and match to parameters.
[list_end][comment arguments]

[comment {- - -- --- ----- -------- -------------}]

[call [cmd <officer>] [method ehandler] [arg cmd]]




This method specifies a command prefix to wrap around the parsing of
the command line for the officer, and the execution of its action.

[list_begin arguments]
[arg_def cmd-prefix cmd]
A command prefix taking a single argument, a script. The command
................................................................................
prefix has to execute this script in its caller's context. The script
will parse words for the officer,m and perform its action. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i.e. in
an interactive shell run by the framework).
[list_end][comment arguments]

























[comment {- - -- --- ----- -------- -------------}]
[call [cmd <officer>] [method exit]]

This hook-method for the main shell returns a boolean value indicating
whether the main shell was stopped and has to exit ([const true]), or
not ([const false]).







>

>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
...
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199

[list_begin arguments]
[arg_def string word]
The words of the command line to parse and match to parameters.
[list_end][comment arguments]

[comment {- - -- --- ----- -------- -------------}]
[call [cmd <officer>] [method intercept] [arg cmd]]
[call [cmd <officer>] [method ehandler] [arg cmd]]

[emph Note:] While the form [method ehandler] is still usable, it is
deprecated and will be removed in a future release.

This method specifies a command prefix to wrap around the parsing of
the command line for the officer, and the execution of its action.

[list_begin arguments]
[arg_def cmd-prefix cmd]
A command prefix taking a single argument, a script. The command
................................................................................
prefix has to execute this script in its caller's context. The script
will parse words for the officer,m and perform its action. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i.e. in
an interactive shell run by the framework).
[list_end][comment arguments]

[comment {- - -- --- ----- -------- -------------}]
[call [cmd <officer>] [method custom-setup] [arg cmd]]

This method specifies a command prefix which will be run all the
regular setup of the officer from its specification is done, to
perform customizations.

[para] An example of this can be seen in the package
[package cmdr::history]. It provides a command
[cmd cmdr::history::attach] to add the history management commands to
the actor in question, suitable as argument to this method.

[para] When called multiple times, the specified commands
accumulate. This makes it easy to specify several indepedent
customizations.

[list_begin arguments]
[arg_def cmd-prefix cmd]
A command prefix taking a single argument, the instance command of an
[package cmd::actor]. The command prefix has full access to this actor
and can modify it as it sees fit. The common use case will be the
extension of the actor with additional subordinates.
[list_end][comment arguments]

[comment {- - -- --- ----- -------- -------------}]
[call [cmd <officer>] [method exit]]

This hook-method for the main shell returns a boolean value indicating
whether the main shell was stopped and has to exit ([const true]), or
not ([const false]).

Changes to doc/cmdr_private.man.

101
102
103
104
105
106
107

108



109
110
111
112
113
114
115
...
117
118
119
120
121
122
123












124
125
126
127
128
129
130

[list_begin arguments]
[arg_def string word]
The words of the command line to parse and match to parameters.
[list_end][comment arguments]

[comment {- - -- --- ----- -------- -------------}]

[call [cmd <private>] [method ehandler] [arg cmd]]




This method specifies a command prefix to wrap around the parsing of
the command line for the private, and the execution of its action.

[list_begin arguments]
[arg_def cmd-prefix cmd]
A command prefix taking a single argument, a script. The command
................................................................................
will parse words for the private,m and perform its action. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i.e. in
an interactive shell run by the framework).
[list_end][comment arguments]













[comment {- - -- --- ----- -------- -------------}]
[call [cmd <private>] [method find] [arg path]]

This method returns the instance command of the sub-ordinate with the
given [arg path] of names. An error is thrown if such a sub-ordinate
does not exist, i.e. whenever [arg path] is not empty, as a private
has no sub-ordinates, ever.







>

>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>







101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
...
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146

[list_begin arguments]
[arg_def string word]
The words of the command line to parse and match to parameters.
[list_end][comment arguments]

[comment {- - -- --- ----- -------- -------------}]
[call [cmd <private>] [method intercept] [arg cmd]]
[call [cmd <private>] [method ehandler] [arg cmd]]

[emph Note:] While the form [method ehandler] is still usable, it is
deprecated and will be removed in a future release.

This method specifies a command prefix to wrap around the parsing of
the command line for the private, and the execution of its action.

[list_begin arguments]
[arg_def cmd-prefix cmd]
A command prefix taking a single argument, a script. The command
................................................................................
will parse words for the private,m and perform its action. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i.e. in
an interactive shell run by the framework).
[list_end][comment arguments]

[comment {- - -- --- ----- -------- -------------}]
[call [cmd <private>] [method custom-setup] [arg cmd]]

This method specifies a command prefix which will be run all the
regular setup of an officer from its specification is done, to perform
customizations.

[para] The [cmd <private>] here ignores such calls.

[para] The method exists only to avoid having to special-case code the
places propagating these commands down the hierarchy.

[comment {- - -- --- ----- -------- -------------}]
[call [cmd <private>] [method find] [arg path]]

This method returns the instance command of the sub-ordinate with the
given [arg path] of names. An error is thrown if such a sub-ordinate
does not exist, i.e. whenever [arg path] is not empty, as a private
has no sub-ordinates, ever.

Changes to doc/parts/changes1.2.inc.

1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37



38


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

54
55
56
57



58


59


60
61


62

63

64
65
66

67


68
69

70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86


87
88
89
90
91
92
93
94
95
96
97
98
99
100
101






102
103

104
105
106
107
108
109

110

111
112
113

114
115
116


117
118
119
120
121
122
123
124















































125
126
127
[subsection {Changes for version 1.2}]
[vset tcllib http://core.tcl.tk/tcllib/doc/trunk/embedded/www]
[vset tm     [vset tcllib]/tcllib/files/modules]

[list_begin enumerated]
[comment {- - -- --- ----- -------- ------------- ---------------------}]


[enum] Added many new standard validation types to package
       [package cmdr::validate]:

[list_begin enumerated]
[enum] Double
[enum] Percent
[enum] Posint (positive integers, > 0)
[enum] Paths and channels
       [list_begin enumerated]
       [enum] Readable file
       [enum] Writable file
       [enum] Read/writable file
       [enum] Readable directory
       [enum] Read/writeable directory
       [enum] readable path
       [enum] Read/writable path
       [enum] Readable path, as channel
       [enum] Writable path, as channel
       [enum] Read/writable path, as channel
       [list_end]
[enum] Date and time related:
       [list_begin enumerated]
       [enum] iso8601 date/time,
       [enum] year
       [enum] weekday, 
       [enum] hour:minute
       [list_end]
[list_end]

[enum] Added more helper commands for validation failure messages to



       package [package cmdr::validate::common].



       [list_begin enumerated]
       [enum] [cmd fail-unknown-thing]
       [enum] [cmd fail-unknown-thing-msg]
       [enum] [cmd fail-unknown-simple]
       [enum] [cmd fail-unknown-simple-msg]
       [enum] [cmd fail-known-thing]
       [enum] [cmd fail-known-thing-msg]
       [enum] [cmd fail-known-simple]
       [enum] [cmd fail-known-simple-msg]
       [list_end]

[enum] Modified integer validation to have a proper internal
       representation: decimal. Octal, hex, etc. input is now
       normalized to this.


[enum] Various new supporting packages:
[list_begin definitions]
[def [package cmdr::tty]] Test for terminal.



[def [package cmdr::color]] Color management, ansi control sequences.


[def [package cmdr::ask]] User interaction commands.


[def [package cmdr::pager]] Text display with automatic invokation of
     	      		    a pager for tall output.


[def [package cmdr::history]] Pluggable management of command history.

[def [package cmdr::table]] Table formatting, simplified interface to

      		            [uri [vset tcllib]/toc.html Tcllib]'s
      		            [package struct::matrix] and
			    [package report] packages.

[def [package cmdr::validate::valtype-support]] Even more validation types.


     Wrappers around the validation commands provided by
       [uri [vset tcllib]/toc.html Tcllib]:

       [list_begin enumerated]
       [enum] [uri [vset tm]/valtype/cc_amex.html       valtype::creditcard::amex]
       [enum] [uri [vset tm]/valtype/cc_discover.html   valtype::creditcard::discover]
       [enum] [uri [vset tm]/valtype/cc_mastercard.html valtype::creditcard::mastercard]
       [enum] [uri [vset tm]/valtype/cc_visa.html       valtype::creditcard::visa]
       [enum] [uri [vset tm]/valtype/ean13.html         valtype::gs1::ean13]
       [enum] [uri [vset tm]/valtype/iban.html          valtype::iban]
       [enum] [uri [vset tm]/valtype/imei.html          valtype::imei]
       [enum] [uri [vset tm]/valtype/isbn.html          valtype::isbn]
       [enum] [uri [vset tm]/valtype/luhn.html          valtype::luhn]
       [enum] [uri [vset tm]/valtype/luhn5.html         valtype::luhn5]
       [enum] [uri [vset tm]/valtype/usnpi.html         valtype::usnpi]
       [enum] [uri [vset tm]/valtype/verhoeff.html      valtype::verhoeff]
       [list_end]

[list_end]



[enum] Added support for per-officer options. The most common use case
       will likely be the declaration of global options in the root
       officer.

[para] Related to this, a new common block [const *config*] is set to
       the active [package config] instance, which will be different
       from the defining instance, , for per-officer options. This
       gives the per-officer options access to the arguments (and
       options) of the current command, instead of only their own
       sibling options.

[enum] Added support for an option [option -extend] for common blocks,
       allowing their extension in a subordinate instead of just
       replacing the entire content.







[enum] Extended boolean options to allow the specification of negative
       aliases, i.e. representing the inverted option. See the DSL

       commands [cmd neg-alias] and [cmd !alias] in
       [term {Cmdr - Parameter Specification Language}].

[enum] Extended the DSL for options in general with the ability to set
       a label for the option argument so that the generated help can
       be more descriptive. The option name is used as fallback for

       options for which no such label was specified.


       See DSL command [cmd label] in
       [term {Cmdr - Parameter Specification Language}].


[enum] Extended officers to accept all unique command prefixes of
       their subordinates for dispatch.



[enum] Modified the help system to use the [const short] format for
       interior nodes of the command hierarchy by default.

[enum] Modified the help system to exclude auto-added commands from
       the output generated by format [const by-category].

[enum] ... A suite of bug fixes ... // TODO: list the details.
















































[comment {- - -- --- ----- -------- ------------- ---------------------}]
[list_end]







>
|
<

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
>
>
>
|
>
>


<



<





<
<
<
>

<
|
|
>
>
>
|
>
>
|
>
>
|
|
>
>
|
>
|
>
|
|
<
>
|
>
>
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|

>
>
|
|
|

|
|
|
|
|
|

|
|
|

>
>
>
>
>
>
|
|
>
|
|

<
<
<
>
|
>

|
|
>

<
<
>
>

|
|

|
|

<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>



1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

46
47
48

49
50
51
52
53



54
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128



129
130
131
132
133
134
135
136


137
138
139
140
141
142
143
144
145

146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
[subsection {Changes for version 1.2}]
[vset tcllib http://core.tcl.tk/tcllib/doc/trunk/embedded/www]
[vset tm     [vset tcllib]/tcllib/files/modules]

[list_begin enumerated]
[comment {- - -- --- ----- -------- ------------- ---------------------}]

[enum] Extended the package [package cmdr::validate] with many new
       standard validation types:


       [list_begin enumerated]
       [enum] Double
       [enum] Percent
       [enum] Posint (positive integers, > 0)
       [enum] Paths and channels
              [list_begin enumerated]
              [enum] Readable file
              [enum] Writable file
              [enum] Read/writable file
              [enum] Readable directory
              [enum] Read/writeable directory
              [enum] readable path
              [enum] Read/writable path
              [enum] Readable path, as channel
              [enum] Writable path, as channel
              [enum] Read/writable path, as channel
              [list_end]
       [enum] Date and time related:
              [list_begin enumerated]
              [enum] ISO-8601 date/time,
              [enum] year
              [enum] weekday, 
              [enum] hour:minute
              [list_end]
       [list_end]

[enum] In package [package cmdr::validate], modified the integer
       validation type to have a proper internal representation:
       decimal. Input in octal, hex, etc. is now normalized to this.

[enum] Extended package [package cmdr::validate::common] with more
       helper commands for the generation of validation failure
       messages

       [list_begin enumerated]

       [enum] [cmd fail-unknown-thing-msg]
       [enum] [cmd fail-unknown-simple]
       [enum] [cmd fail-unknown-simple-msg]

       [enum] [cmd fail-known-thing-msg]
       [enum] [cmd fail-known-simple]
       [enum] [cmd fail-known-simple-msg]
       [list_end]




[enum] Added various new supporting packages:


       [list_begin definitions]
       [def [package cmdr::tty]]
            Test for terminal.

       [def [package cmdr::color]]
            Color management, ansi control sequences.

       [def [package cmdr::ask]]
            User interaction commands.

       [def [package cmdr::pager]]
            Text display with automatic invokation of a pager for tall
            output.

       [def [package cmdr::history]]
            Pluggable management of command history.

       [def [package cmdr::table]]
            Table formatting, a simplified interface to
            [uri [vset tcllib]/toc.html Tcllib]'s
            [package struct::matrix] and [package report] packages.


       [def [package cmdr::validate::valtype-support]]

            Even more validation types, now as wrappers around the
            validation commands provided by
            [uri [vset tcllib]/toc.html Tcllib]:

            [list_begin enumerated]
            [enum] [uri [vset tm]/valtype/cc_amex.html       valtype::creditcard::amex]
            [enum] [uri [vset tm]/valtype/cc_discover.html   valtype::creditcard::discover]
            [enum] [uri [vset tm]/valtype/cc_mastercard.html valtype::creditcard::mastercard]
            [enum] [uri [vset tm]/valtype/cc_visa.html       valtype::creditcard::visa]
            [enum] [uri [vset tm]/valtype/ean13.html         valtype::gs1::ean13]
            [enum] [uri [vset tm]/valtype/iban.html          valtype::iban]
            [enum] [uri [vset tm]/valtype/imei.html          valtype::imei]
            [enum] [uri [vset tm]/valtype/isbn.html          valtype::isbn]
            [enum] [uri [vset tm]/valtype/luhn.html          valtype::luhn]
            [enum] [uri [vset tm]/valtype/luhn5.html         valtype::luhn5]
            [enum] [uri [vset tm]/valtype/usnpi.html         valtype::usnpi]
            [enum] [uri [vset tm]/valtype/verhoeff.html      valtype::verhoeff]
            [list_end]

       [list_end]

[enum] Extended package [package cmdr::officer] with 
       [list_begin enumerated]
       [enum] Support for per-officer options. The most common use
              case will likely be the declaration of global options in
              the root officer.

       [para] Related to this, a new common block [const *config*] is
              set to the active [package config] instance, which will
              be different from the defining instance, for per-officer
              options. This gives the per-officer options access to
              the arguments (and options) of the current command,
              instead of only their own sibling options.

       [enum] Support for an option [option -extend] for common
              blocks, allowing their extension in a subordinate
              instead of just replacing the entire content.

       [enum] Support to accept all unique command prefixes of an
              officer's subordinates for dispatch.
       [list_end]

[enum] Extended package [package cmdr::parameter] with 
       [list_begin enumerated]
       [enum] Support for the specification of negative aliases for
              boolean options, i.e. representing the inverted option.

       [para] See the DSL commands [cmd neg-alias] and [cmd !alias] in
              [term {Cmdr - Parameter Specification Language}].




       [enum] Support for option labeling, for use in the generated
              help, to make it more descriptive. Options for which no
              label is specified will use their name as fallback.

       [para] See DSL command [cmd label] in
              [term {Cmdr - Parameter Specification Language}].
       [list_end]



[enum] Help system changes
       [list_begin enumerated]

       [enum] Modified it to use the [const short] format for interior
              nodes of the command hierarchy by default.

       [enum] Modified it to exclude auto-added commands from the
              output generated by format [const by-category].


       [enum] Modified the format [const full] to show the option
       	      arguments for those which have such. See also the
       	      extension of package [package cmdr::parameter] with
       	      support for option labels, this is what is used here.

       [enum] Modified it to declare a standard global option
              [option --help] (with aliases [option -h] and
              [option -?]). Using the option invokes the standard help
              (command) on the current command, if any, or the global
              help if there is no command.

       [enum] Modified to use a minimum width of 10 characters for
       	      descriptions. If the user narrowed the terminal this far
       	      then having the text either cut off at the right edge,
       	      or wrapped around is not worse then the help trying to
       	      wrap the sentence with word boundaries, etc. Also,
       	      trying to use negative width threw Tcl errors.
       [list_end]

[enum] Fixed the handling of common block [const *all*] in package
       [package cmdr::officer]. While it was ok trapping and ignoring
       a missing definition of this block, trapping everything which
       could go wrong was not.

       [para][uri http://core.tcl.tk/akupries/cmdr/info/9159f68bc35d9747 Details].

[enum] Fixed a long-standing bug of package [package cmdr::config] in
       the forced calculation of parameter values in method
       [method Force]). Any error in the calculations left an internal
       flag set, causing future invokations to believe to be in a
       recursive call and thus do nothing.

       [para] While this had no effect on regular operation, i.e.
       with the application exiting after each command, in interactive
       mode this misbehaviour disabled all checks and validations for
       the command in question, and also retained old parameter
       values.

       [para][uri http://core.tcl.tk/akupries/cmdr/info/f74095b252d4c9df Details]

[enum] Modified the formatting of [package cmdr::config] state when
       interactively entering it for a private. Parameter names now
       are shown as declared, and an additional flag character
       indicates if it is inherited from above, or not.

[enum] General fixes to testsuite, code comments, bogus variable
       names, typos in error messages, etc.

[comment {- - -- --- ----- -------- ------------- ---------------------}]
[list_end]

Changes to doc/parts/dev_dsl_officer.inc.

10
11
12
13
14
15
16

17
18
19
20

21
22
23
24
on first call) to provide the necessary in-memory structures.

[para] The DSL commands map to instance methods as shown below:

[list_begin definitions]
[def [cmd alias]]        [method Alias]
[def [cmd common]]       [package cmdr::actor] [method set]

[def [cmd default]]      [method Default]
[def [cmd description]]  [package cmdr::actor] [method description:]
[def [cmd ehandler]]     [method ehandler]
[def [cmd shandler]]     [method shandler]

[def [cmd officer]]      [method Officer], forward to [method DefineAction]
[def [cmd private]]      [method Private], forward to [method DefineAction]
[def [cmd undocumented]] [package cmdr::actor] [method undocumented]
[list_end]







>


|
<
>




10
11
12
13
14
15
16
17
18
19
20

21
22
23
24
25
on first call) to provide the necessary in-memory structures.

[para] The DSL commands map to instance methods as shown below:

[list_begin definitions]
[def [cmd alias]]        [method Alias]
[def [cmd common]]       [package cmdr::actor] [method set]
[def [cmd custom-setup]] [method custom-setup]
[def [cmd default]]      [method Default]
[def [cmd description]]  [package cmdr::actor] [method description:]
[def [cmd ehandler]]     See [cmd intercept]. [emph Deprecated].

[def [cmd intercept]]    [method intercept]
[def [cmd officer]]      [method Officer], forward to [method DefineAction]
[def [cmd private]]      [method Private], forward to [method DefineAction]
[def [cmd undocumented]] [package cmdr::actor] [method undocumented]
[list_end]

Changes to doc/parts/dsl_officer.inc.

102
103
104
105
106
107
108

109



110
111
112
113
114
115
116
...
136
137
138
139
140
141
142
143
144
145
146
147
148




149
150
151
152
153
154
155
156
157
158

[comment {- - -- --- ----- -------- -------------}]
[call [cmd description] [arg text]]

This command declares the help text of the [term officer].

[comment {- - -- --- ----- -------- -------------}]

[call [cmd ehandler] [arg cmdprefix]]




This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).

[para] At runtime the framework will call the specified command prefix
with a single argument, a script whose execution is equivalent to the
................................................................................
cleanup code transient state [emph will] leak between multiple
commands run from such a shell, something which is definitely not
wanted.

[list_end]

[comment {- - -- --- ----- -------- -------------}]
[call [cmd shandler] [arg cmdprefix]]

This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).





[para] At runtime the framework will call the specified command prefix
with a single argument, the command of the actor we wish to
initialize.

The command prefix is then allowed to modify that actor as it sees
fit. The common use case will be the extension of the object with
additional subordinates.

An example of this is the package [package cmdr::history] which
provides a command [cmd cmdr::history::attach] to add the history







>

>
>
>







 







|





>
>
>
>
|
|
<







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
...
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158

159
160
161
162
163
164
165

[comment {- - -- --- ----- -------- -------------}]
[call [cmd description] [arg text]]

This command declares the help text of the [term officer].

[comment {- - -- --- ----- -------- -------------}]
[call [cmd intercept] [arg cmdprefix]]
[call [cmd ehandler] [arg cmdprefix]]

[emph Note:] While the form [cmd ehandler] is still usable, it is
deprecated and will be removed in a future release.

This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).

[para] At runtime the framework will call the specified command prefix
with a single argument, a script whose execution is equivalent to the
................................................................................
cleanup code transient state [emph will] leak between multiple
commands run from such a shell, something which is definitely not
wanted.

[list_end]

[comment {- - -- --- ----- -------- -------------}]
[call [cmd custom-setup] [arg cmdprefix]]

This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).

[para] When called multiple times, the specified commands
accumulate. This makes it easy to specify several indepedent
customizations.

[para] At runtime the framework will invoke all the specified commands
with a single argument, the command of the actor to initialize.


The command prefix is then allowed to modify that actor as it sees
fit. The common use case will be the extension of the object with
additional subordinates.

An example of this is the package [package cmdr::history] which
provides a command [cmd cmdr::history::attach] to add the history

Changes to doc/parts/dsl_para_support.inc.

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

The returned callback sets the [arg name]d sibling parameter to the
specified [arg value]. A simple method of communication between
parameters of a command.

[para] Useful for use with [cmd when-set] and/or [cmd when-complete]

[call [cmd touch] [arg name] [arg value]]

The returned callback sets the [arg name]d sibling parameter to the
specified [arg value], if and only if that parameter exists. A simple
method of communication between parameters of a command, where the
sibling may not exists, depending on usage context.

[para] Useful for use with [cmd when-set] and/or [cmd when-complete]







|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

The returned callback sets the [arg name]d sibling parameter to the
specified [arg value]. A simple method of communication between
parameters of a command.

[para] Useful for use with [cmd when-set] and/or [cmd when-complete]

[call [cmd touch?] [arg name] [arg value]]

The returned callback sets the [arg name]d sibling parameter to the
specified [arg value], if and only if that parameter exists. A simple
method of communication between parameters of a command, where the
sibling may not exists, depending on usage context.

[para] Useful for use with [cmd when-set] and/or [cmd when-complete]

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

281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
...
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335



336


337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
...
410
411
412
413
414
415
416



417
418
419
420
421
422
423
424
425
426
427
428
429
430
431







432
433

434
435
436
437
438
439

440


441
442

443
444
445


446
447
448
449
450
451








































452
453







454
455
456
457
458
459
460
For availability please read \fICmdr - How To Get The Sources\fR\&.
.PP
This document provides an overview of the changes \fBcmdr\fR
underwent from version to version\&.
.SH CHANGES
.SS "CHANGES FOR VERSION 1\&.2"
.IP [1]
Added many new standard validation types to package
\fBcmdr::validate\fR:
.RS
.IP [1]
Double
.IP [2]
Percent
.IP [3]
Posint (positive integers, > 0)
................................................................................
.IP [10]
Read/writable path, as channel
.RE
.IP [5]
Date and time related:
.RS
.IP [1]
iso8601 date/time,
.IP [2]
year
.IP [3]
weekday,
.IP [4]
hour:minute
.RE
.RE
.IP [2]
Added more helper commands for validation failure messages to



package \fBcmdr::validate::common\fR\&.


.RS
.IP [1]
\fBfail-unknown-thing\fR
.IP [2]
\fBfail-unknown-thing-msg\fR
.IP [3]
\fBfail-unknown-simple\fR
.IP [4]
\fBfail-unknown-simple-msg\fR
.IP [5]
\fBfail-known-thing\fR
.IP [6]
\fBfail-known-thing-msg\fR
.IP [7]
\fBfail-known-simple\fR
.IP [8]
\fBfail-known-simple-msg\fR
.RE
.IP [3]
Modified integer validation to have a proper internal
representation: decimal\&. Octal, hex, etc\&. input is now
normalized to this\&.
.IP [4]
Various new supporting packages:
.RS
.TP
\fBcmdr::tty\fR
Test for terminal\&.
.TP
\fBcmdr::color\fR
Color management, ansi control sequences\&.
.TP
\fBcmdr::ask\fR
User interaction commands\&.
.TP
\fBcmdr::pager\fR
Text display with automatic invokation of
a pager for tall output\&.
.TP
\fBcmdr::history\fR
Pluggable management of command history\&.
.TP
\fBcmdr::table\fR
Table formatting, simplified interface to
\fITcllib\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/toc\&.html]'s
\fBstruct::matrix\fR and
\fBreport\fR packages\&.
.TP
\fBcmdr::validate::valtype-support\fR
Even more validation types\&.
Wrappers around the validation commands provided by
\fITcllib\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/toc\&.html]:
.RS
.IP [1]
\fIvaltype::creditcard::amex\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_amex\&.html]
.IP [2]
\fIvaltype::creditcard::discover\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_discover\&.html]
.IP [3]
................................................................................
.IP [11]
\fIvaltype::usnpi\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/usnpi\&.html]
.IP [12]
\fIvaltype::verhoeff\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/verhoeff\&.html]
.RE
.RE
.IP [5]



Added support for per-officer options\&. The most common use case
will likely be the declaration of global options in the root
officer\&.
.sp
Related to this, a new common block \fB*config*\fR is set to
the active \fBconfig\fR instance, which will be different
from the defining instance, , for per-officer options\&. This
gives the per-officer options access to the arguments (and
options) of the current command, instead of only their own
sibling options\&.
.IP [6]
Added support for an option \fB-extend\fR for common blocks,
allowing their extension in a subordinate instead of just
replacing the entire content\&.
.IP [7]







Extended boolean options to allow the specification of negative
aliases, i\&.e\&. representing the inverted option\&. See the DSL

commands \fBneg-alias\fR and \fB!alias\fR in
\fICmdr - Parameter Specification Language\fR\&.
.IP [8]
Extended the DSL for options in general with the ability to set
a label for the option argument so that the generated help can
be more descriptive\&. The option name is used as fallback for

options for which no such label was specified\&.


See DSL command \fBlabel\fR in
\fICmdr - Parameter Specification Language\fR\&.

.IP [9]
Extended officers to accept all unique command prefixes of
their subordinates for dispatch\&.


.IP [10]
Modified the help system to use the \fBshort\fR format for
interior nodes of the command hierarchy by default\&.
.IP [11]
Modified the help system to exclude auto-added commands from
the output generated by format \fBby-category\fR\&.








































.IP [12]
\&.\&.\&. A suite of bug fixes \&.\&.\&. // TODO: list the details\&.







.PP
.SS "CHANGES FOR VERSION 1\&.1"
.IP [1]
Fixed broken requirement references in the meta data of packages
\fBcmdr::help::json\fR and \fBcmdr::help::sql\fR\&.
.IP [2]
Fixed initialization issues in the help generator\&.







|
|







 







|









|
>
>
>
|
>
>


|

|

|

<
<
<
<

|

|


<
<
<
<

|












|
|





|

|
<


|
|







 







>
>
>
|
|
|

|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
>
>
>
|
|
>
|

|
<
<
<
>
|
>
>


>
|
<
<
>
>
|
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
<
>
>
>
>
>
>
>







281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
...
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349




350
351
352
353
354
355




356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379

380
381
382
383
384
385
386
387
388
389
390
...
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443



444
445
446
447
448
449
450
451


452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500

501
502
503
504
505
506
507
508
509
510
511
512
513
514
For availability please read \fICmdr - How To Get The Sources\fR\&.
.PP
This document provides an overview of the changes \fBcmdr\fR
underwent from version to version\&.
.SH CHANGES
.SS "CHANGES FOR VERSION 1\&.2"
.IP [1]
Extended the package \fBcmdr::validate\fR with many new
standard validation types:
.RS
.IP [1]
Double
.IP [2]
Percent
.IP [3]
Posint (positive integers, > 0)
................................................................................
.IP [10]
Read/writable path, as channel
.RE
.IP [5]
Date and time related:
.RS
.IP [1]
ISO-8601 date/time,
.IP [2]
year
.IP [3]
weekday,
.IP [4]
hour:minute
.RE
.RE
.IP [2]
In package \fBcmdr::validate\fR, modified the integer
validation type to have a proper internal representation:
decimal\&. Input in octal, hex, etc\&. is now normalized to this\&.
.IP [3]
Extended package \fBcmdr::validate::common\fR with more
helper commands for the generation of validation failure
messages
.RS
.IP [1]
\fBfail-unknown-thing-msg\fR
.IP [2]
\fBfail-unknown-simple\fR
.IP [3]
\fBfail-unknown-simple-msg\fR
.IP [4]




\fBfail-known-thing-msg\fR
.IP [5]
\fBfail-known-simple\fR
.IP [6]
\fBfail-known-simple-msg\fR
.RE




.IP [4]
Added various new supporting packages:
.RS
.TP
\fBcmdr::tty\fR
Test for terminal\&.
.TP
\fBcmdr::color\fR
Color management, ansi control sequences\&.
.TP
\fBcmdr::ask\fR
User interaction commands\&.
.TP
\fBcmdr::pager\fR
Text display with automatic invokation of a pager for tall
output\&.
.TP
\fBcmdr::history\fR
Pluggable management of command history\&.
.TP
\fBcmdr::table\fR
Table formatting, a simplified interface to
\fITcllib\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/toc\&.html]'s
\fBstruct::matrix\fR and \fBreport\fR packages\&.

.TP
\fBcmdr::validate::valtype-support\fR
Even more validation types, now as wrappers around the
validation commands provided by
\fITcllib\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/toc\&.html]:
.RS
.IP [1]
\fIvaltype::creditcard::amex\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_amex\&.html]
.IP [2]
\fIvaltype::creditcard::discover\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_discover\&.html]
.IP [3]
................................................................................
.IP [11]
\fIvaltype::usnpi\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/usnpi\&.html]
.IP [12]
\fIvaltype::verhoeff\fR [http://core\&.tcl\&.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/verhoeff\&.html]
.RE
.RE
.IP [5]
Extended package \fBcmdr::officer\fR with
.RS
.IP [1]
Support for per-officer options\&. The most common use
case will likely be the declaration of global options in
the root officer\&.
.sp
Related to this, a new common block \fB*config*\fR is
set to the active \fBconfig\fR instance, which will
be different from the defining instance, for per-officer
options\&. This gives the per-officer options access to
the arguments (and options) of the current command,
instead of only their own sibling options\&.
.IP [2]
Support for an option \fB-extend\fR for common
blocks, allowing their extension in a subordinate
instead of just replacing the entire content\&.
.IP [3]
Support to accept all unique command prefixes of an
officer's subordinates for dispatch\&.
.RE
.IP [6]
Extended package \fBcmdr::parameter\fR with
.RS
.IP [1]
Support for the specification of negative aliases for
boolean options, i\&.e\&. representing the inverted option\&.
.sp
See the DSL commands \fBneg-alias\fR and \fB!alias\fR in
\fICmdr - Parameter Specification Language\fR\&.
.IP [2]



Support for option labeling, for use in the generated
help, to make it more descriptive\&. Options for which no
label is specified will use their name as fallback\&.
.sp
See DSL command \fBlabel\fR in
\fICmdr - Parameter Specification Language\fR\&.
.RE
.IP [7]


Help system changes
.RS
.IP [1]
Modified it to use the \fBshort\fR format for interior
nodes of the command hierarchy by default\&.
.IP [2]
Modified it to exclude auto-added commands from the
output generated by format \fBby-category\fR\&.
.IP [3]
Modified the format \fBfull\fR to show the option
arguments for those which have such\&. See also the
extension of package \fBcmdr::parameter\fR with
support for option labels, this is what is used here\&.
.IP [4]
Modified it to declare a standard global option
\fB--help\fR (with aliases \fB-h\fR and
\fB-?\fR)\&. Using the option invokes the standard help
(command) on the current command, if any, or the global
help if there is no command\&.
.IP [5]
Modified to use a minimum width of 10 characters for
descriptions\&. If the user narrowed the terminal this far
then having the text either cut off at the right edge,
or wrapped around is not worse then the help trying to
wrap the sentence with word boundaries, etc\&. Also,
trying to use negative width threw Tcl errors\&.
.RE
.IP [8]
Fixed the handling of common block \fB*all*\fR in package
\fBcmdr::officer\fR\&. While it was ok trapping and ignoring
a missing definition of this block, trapping everything which
could go wrong was not\&.
.sp
\fIDetails\fR [http://core\&.tcl\&.tk/akupries/cmdr/info/9159f68bc35d9747]\&.
.IP [9]
Fixed a long-standing bug of package \fBcmdr::config\fR in
the forced calculation of parameter values in method
\fBForce\fR)\&. Any error in the calculations left an internal
flag set, causing future invokations to believe to be in a
recursive call and thus do nothing\&.
.sp
While this had no effect on regular operation, i\&.e\&.
with the application exiting after each command, in interactive
mode this misbehaviour disabled all checks and validations for
the command in question, and also retained old parameter
values\&.
.sp
\fIDetails\fR [http://core\&.tcl\&.tk/akupries/cmdr/info/f74095b252d4c9df]
.IP [10]

Modified the formatting of \fBcmdr::config\fR state when
interactively entering it for a private\&. Parameter names now
are shown as declared, and an additional flag character
indicates if it is inherited from above, or not\&.
.IP [11]
General fixes to testsuite, code comments, bogus variable
names, typos in error messages, etc\&.
.PP
.SS "CHANGES FOR VERSION 1\&.1"
.IP [1]
Fixed broken requirement references in the meta data of packages
\fBcmdr::help::json\fR and \fBcmdr::help::sql\fR\&.
.IP [2]
Fixed initialization issues in the help generator\&.

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

1
2
3
4
5
6
7
8
9
'\"
'\" Generated from file 'cmdr_color\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2013-2016 Andreas Kupries
'\" Copyright (c) 2013-2016 Documentation, Andreas Kupries
'\"
.TH "cmdr::color" n 1\&.0\&.2 doc "Cmdr, a framework for command line parsing and dispatch"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"

|







1
2
3
4
5
6
7
8
9
'\"
'\" Generated from file 'cmdr_color\&.man~' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2013-2016 Andreas Kupries
'\" Copyright (c) 2013-2016 Documentation, Andreas Kupries
'\"
.TH "cmdr::color" n 1\&.0\&.2 doc "Cmdr, a framework for command line parsing and dispatch"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"

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

306
307
308
309
310
311
312



313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
.TP
\fBalias\fR
\fBAlias\fR
.TP
\fBcommon\fR
\fBcmdr::actor\fR \fBset\fR
.TP



\fBdefault\fR
\fBDefault\fR
.TP
\fBdescription\fR
\fBcmdr::actor\fR \fBdescription:\fR
.TP
\fBehandler\fR
\fBehandler\fR
.TP
\fBshandler\fR
\fBshandler\fR
.TP
\fBofficer\fR
\fBOfficer\fR, forward to \fBDefineAction\fR
.TP
\fBprivate\fR
\fBPrivate\fR, forward to \fBDefineAction\fR
.TP







>
>
>







|

|
|







306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
.TP
\fBalias\fR
\fBAlias\fR
.TP
\fBcommon\fR
\fBcmdr::actor\fR \fBset\fR
.TP
\fBcustom-setup\fR
\fBcustom-setup\fR
.TP
\fBdefault\fR
\fBDefault\fR
.TP
\fBdescription\fR
\fBcmdr::actor\fR \fBdescription:\fR
.TP
\fBehandler\fR
See \fBintercept\fR\&. \fIDeprecated\fR\&.
.TP
\fBintercept\fR
\fBintercept\fR
.TP
\fBofficer\fR
\fBOfficer\fR, forward to \fBDefineAction\fR
.TP
\fBprivate\fR
\fBPrivate\fR, forward to \fBDefineAction\fR
.TP

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

281
282
283
284
285
286
287


288
289
290
291
292
293
294
295
296
297
...
409
410
411
412
413
414
415


416


417
418
419
420
421
422
423
...
437
438
439
440
441
442
443
444
445
446
447
448




449
450
451
452
453
454
455
456
457
458
.sp
\fBcommon\fR \fIname\fR \fB-extend\fR \fB--\fR \fItext\fR
.sp
\fBdefault\fR
.sp
\fBdescription\fR \fItext\fR
.sp


\fBehandler\fR \fIcmdprefix\fR
.sp
\fBshandler\fR \fIcmdprefix\fR
.sp
\fBofficer\fR \fIname\fR \fIscript\fR
.sp
\fBprivate\fR \fIname\fR \fIscript\fR \fIcmdprefix\fR
.sp
\fBundocumented\fR
.sp
................................................................................
word does not match any of the commands known to this \fIofficer\fR
this default is used\&. If no default is specified an error will be
thrown instead\&.
.TP
\fBdescription\fR \fItext\fR
This command declares the help text of the \fIofficer\fR\&.
.TP


\fBehandler\fR \fIcmdprefix\fR


This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates)\&.
.sp
At runtime the framework will call the specified command prefix
with a single argument, a script whose execution is equivalent to the
phases \fIParsing\fR, \fICompletion\fR, and \fIExecution\fR of the
................................................................................
This is especially important if the interactive command line shells of
the framework are enabled\&. Without such a handler and its bespoke
cleanup code transient state \fIwill\fR leak between multiple
commands run from such a shell, something which is definitely not
wanted\&.
.RE
.TP
\fBshandler\fR \fIcmdprefix\fR
This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates)\&.
.sp




At runtime the framework will call the specified command prefix
with a single argument, the command of the actor we wish to
initialize\&.
The command prefix is then allowed to modify that actor as it sees
fit\&. The common use case will be the extension of the object with
additional subordinates\&.
An example of this is the package \fBcmdr::history\fR which
provides a command \fBcmdr::history::attach\fR to add the history
management commands to the actor in question\&.
.TP







>
>


|







 







>
>

>
>







 







|




>
>
>
>
|
|
<







281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
...
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
...
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460

461
462
463
464
465
466
467
.sp
\fBcommon\fR \fIname\fR \fB-extend\fR \fB--\fR \fItext\fR
.sp
\fBdefault\fR
.sp
\fBdescription\fR \fItext\fR
.sp
\fBintercept\fR \fIcmdprefix\fR
.sp
\fBehandler\fR \fIcmdprefix\fR
.sp
\fBcustom-setup\fR \fIcmdprefix\fR
.sp
\fBofficer\fR \fIname\fR \fIscript\fR
.sp
\fBprivate\fR \fIname\fR \fIscript\fR \fIcmdprefix\fR
.sp
\fBundocumented\fR
.sp
................................................................................
word does not match any of the commands known to this \fIofficer\fR
this default is used\&. If no default is specified an error will be
thrown instead\&.
.TP
\fBdescription\fR \fItext\fR
This command declares the help text of the \fIofficer\fR\&.
.TP
\fBintercept\fR \fIcmdprefix\fR
.TP
\fBehandler\fR \fIcmdprefix\fR
\fINote:\fR While the form \fBehandler\fR is still usable, it is
deprecated and will be removed in a future release\&.
This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates)\&.
.sp
At runtime the framework will call the specified command prefix
with a single argument, a script whose execution is equivalent to the
phases \fIParsing\fR, \fICompletion\fR, and \fIExecution\fR of the
................................................................................
This is especially important if the interactive command line shells of
the framework are enabled\&. Without such a handler and its bespoke
cleanup code transient state \fIwill\fR leak between multiple
commands run from such a shell, something which is definitely not
wanted\&.
.RE
.TP
\fBcustom-setup\fR \fIcmdprefix\fR
This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates)\&.
.sp
When called multiple times, the specified commands
accumulate\&. This makes it easy to specify several indepedent
customizations\&.
.sp
At runtime the framework will invoke all the specified commands
with a single argument, the command of the actor to initialize\&.

The command prefix is then allowed to modify that actor as it sees
fit\&. The common use case will be the extension of the object with
additional subordinates\&.
An example of this is the package \fBcmdr::history\fR which
provides a command \fBcmdr::history::attach\fR to add the history
management commands to the actor in question\&.
.TP

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

311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
...
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
.sp
\fBwhen-set\fR \fIcmdprefix\fR
.sp
\fBstop!\fR
.sp
\fBtouch\fR \fIname\fR \fIvalue\fR
.sp
\fBtouch\fR \fIname\fR \fIvalue\fR
.sp
\fBdisallow\fR \fIname\fR
.sp
.BE
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
................................................................................
\fBtouch\fR \fIname\fR \fIvalue\fR
The returned callback sets the \fIname\fRd sibling parameter to the
specified \fIvalue\fR\&. A simple method of communication between
parameters of a command\&.
.sp
Useful for use with \fBwhen-set\fR and/or \fBwhen-complete\fR
.TP
\fBtouch\fR \fIname\fR \fIvalue\fR
The returned callback sets the \fIname\fRd sibling parameter to the
specified \fIvalue\fR, if and only if that parameter exists\&. A simple
method of communication between parameters of a command, where the
sibling may not exists, depending on usage context\&.
.sp
Useful for use with \fBwhen-set\fR and/or \fBwhen-complete\fR
.TP







|







 







|







311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
...
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
.sp
\fBwhen-set\fR \fIcmdprefix\fR
.sp
\fBstop!\fR
.sp
\fBtouch\fR \fIname\fR \fIvalue\fR
.sp
\fBtouch?\fR \fIname\fR \fIvalue\fR
.sp
\fBdisallow\fR \fIname\fR
.sp
.BE
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
................................................................................
\fBtouch\fR \fIname\fR \fIvalue\fR
The returned callback sets the \fIname\fRd sibling parameter to the
specified \fIvalue\fR\&. A simple method of communication between
parameters of a command\&.
.sp
Useful for use with \fBwhen-set\fR and/or \fBwhen-complete\fR
.TP
\fBtouch?\fR \fIname\fR \fIvalue\fR
The returned callback sets the \fIname\fRd sibling parameter to the
specified \fIvalue\fR, if and only if that parameter exists\&. A simple
method of communication between parameters of a command, where the
sibling may not exists, depending on usage context\&.
.sp
Useful for use with \fBwhen-set\fR and/or \fBwhen-complete\fR
.TP

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

316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
...
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
    history list ?n?  - Show last n history entries\&. Defaults to all\&.
    history clear     - Drop all history entries
    history limit ?n? - Limit history to 'n' entries (n >= 0)\&. Unlimited for n < 0\&.

.CE
.IP
Under most circumstances the attachment is handled through the
\fBshandler\fR method of officers\&. See \fBcmdr::officer\fR, and
the \fBExample\fR for more information\&.
.TP
\fB::cmdr::history\fR \fBsave-to\fR \fIpath\fR
When invoked this command sets the package-wide history save file used
by the commands to the \fIpath\fR\&.
.sp
The result of the command is the empty string\&.
................................................................................
.CS


cmdr history initial-limit 20
cmdr history save-to       ~/\&.fx_history

cmdr create fx::fx [file tail $::argv0] {
    shandler ::cmdr::history::attach

    [\&.\&.\&.]
}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
Both the package(s) and this documentation will undoubtedly contain







|







 







|







316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
...
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
    history list ?n?  - Show last n history entries\&. Defaults to all\&.
    history clear     - Drop all history entries
    history limit ?n? - Limit history to 'n' entries (n >= 0)\&. Unlimited for n < 0\&.

.CE
.IP
Under most circumstances the attachment is handled through the
method \fBcustom-setup\fR of officers\&. See \fBcmdr::officer\fR, and
the \fBExample\fR for more information\&.
.TP
\fB::cmdr::history\fR \fBsave-to\fR \fIpath\fR
When invoked this command sets the package-wide history save file used
by the commands to the \fIpath\fR\&.
.sp
The result of the command is the empty string\&.
................................................................................
.CS


cmdr history initial-limit 20
cmdr history save-to       ~/\&.fx_history

cmdr create fx::fx [file tail $::argv0] {
    custom-setup ::cmdr::history::attach

    [\&.\&.\&.]
}

.CE
.SH "BUGS, IDEAS, FEEDBACK"
Both the package(s) and this documentation will undoubtedly contain

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

291
292
293
294
295
296
297


298


299
300
301
302
303
304
305
...
437
438
439
440
441
442
443


444


445
446
447
448
449
450
451
452
453
454
455
456
457






















458
459
460
461
462
463
464
.sp
\fB<officer>\fR \fBdefault\fR
.sp
\fB<officer>\fR \fBdispatch\fR \fIcmd\fR
.sp
\fB<officer>\fR \fBdo\fR ?\fIword\fR\&.\&.\&.?
.sp


\fB<officer>\fR \fBehandler\fR \fIcmd\fR


.sp
\fB<officer>\fR \fBexit\fR
.sp
\fB<officer>\fR \fBextend\fR \fIpath\fR \fIarguments\fR \fIaction\fR
.sp
\fB<officer>\fR \fBfind\fR \fIpath\fR
.sp
................................................................................
This represents the "Dispatch" phase of command line processing\&.
.RS
.TP
string \fIword\fR
The words of the command line to parse and match to parameters\&.
.RE
.TP


\fB<officer>\fR \fBehandler\fR \fIcmd\fR


This method specifies a command prefix to wrap around the parsing of
the command line for the officer, and the execution of its action\&.
.RS
.TP
cmd-prefix \fIcmd\fR
A command prefix taking a single argument, a script\&. The command
prefix has to execute this script in its caller's context\&. The script
will parse words for the officer,m and perform its action\&. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i\&.e\&. in
an interactive shell run by the framework)\&.
.RE






















.TP
\fB<officer>\fR \fBexit\fR
This hook-method for the main shell returns a boolean value indicating
whether the main shell was stopped and has to exit (\fBtrue\fR), or
not (\fBfalse\fR)\&.
.TP
\fB<officer>\fR \fBextend\fR \fIpath\fR \fIarguments\fR \fIaction\fR







>
>

>
>







 







>
>

>
>













>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
...
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
.sp
\fB<officer>\fR \fBdefault\fR
.sp
\fB<officer>\fR \fBdispatch\fR \fIcmd\fR
.sp
\fB<officer>\fR \fBdo\fR ?\fIword\fR\&.\&.\&.?
.sp
\fB<officer>\fR \fBintercept\fR \fIcmd\fR
.sp
\fB<officer>\fR \fBehandler\fR \fIcmd\fR
.sp
\fB<officer>\fR \fBcustom-setup\fR \fIcmd\fR
.sp
\fB<officer>\fR \fBexit\fR
.sp
\fB<officer>\fR \fBextend\fR \fIpath\fR \fIarguments\fR \fIaction\fR
.sp
\fB<officer>\fR \fBfind\fR \fIpath\fR
.sp
................................................................................
This represents the "Dispatch" phase of command line processing\&.
.RS
.TP
string \fIword\fR
The words of the command line to parse and match to parameters\&.
.RE
.TP
\fB<officer>\fR \fBintercept\fR \fIcmd\fR
.TP
\fB<officer>\fR \fBehandler\fR \fIcmd\fR
\fINote:\fR While the form \fBehandler\fR is still usable, it is
deprecated and will be removed in a future release\&.
This method specifies a command prefix to wrap around the parsing of
the command line for the officer, and the execution of its action\&.
.RS
.TP
cmd-prefix \fIcmd\fR
A command prefix taking a single argument, a script\&. The command
prefix has to execute this script in its caller's context\&. The script
will parse words for the officer,m and perform its action\&. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i\&.e\&. in
an interactive shell run by the framework)\&.
.RE
.TP
\fB<officer>\fR \fBcustom-setup\fR \fIcmd\fR
This method specifies a command prefix which will be run all the
regular setup of the officer from its specification is done, to
perform customizations\&.
.sp
An example of this can be seen in the package
\fBcmdr::history\fR\&. It provides a command
\fBcmdr::history::attach\fR to add the history management commands to
the actor in question, suitable as argument to this method\&.
.sp
When called multiple times, the specified commands
accumulate\&. This makes it easy to specify several indepedent
customizations\&.
.RS
.TP
cmd-prefix \fIcmd\fR
A command prefix taking a single argument, the instance command of an
\fBcmd::actor\fR\&. The command prefix has full access to this actor
and can modify it as it sees fit\&. The common use case will be the
extension of the actor with additional subordinates\&.
.RE
.TP
\fB<officer>\fR \fBexit\fR
This hook-method for the main shell returns a boolean value indicating
whether the main shell was stopped and has to exit (\fBtrue\fR), or
not (\fBfalse\fR)\&.
.TP
\fB<officer>\fR \fBextend\fR \fIpath\fR \fIarguments\fR \fIaction\fR

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

281
282
283
284
285
286
287


288


289
290
291
292
293
294
295
...
376
377
378
379
380
381
382


383


384
385
386
387
388
389
390
...
391
392
393
394
395
396
397










398
399
400
401
402
403
404
.sp
\fB::cmdr::private\fR \fBcreate\fR \fIobj\fR \fIsuper\fR \fIname\fR \fIarguments\fR \fIaction\fR
.sp
\fB<private>\fR \fBcomplete-words\fR \fIparse\fR
.sp
\fB<private>\fR \fBdo\fR ?\fIword\fR\&.\&.\&.?
.sp


\fB<private>\fR \fBehandler\fR \fIcmd\fR


.sp
\fB<private>\fR \fBfind\fR \fIpath\fR
.sp
\fB<private>\fR \fBhelp\fR ?\fIprefix\fR?
.sp
\fB<private>\fR \fBunknown\fR \fIm\fR ?\fIword\fR\&.\&.\&.?
.sp
................................................................................
filled container of parameters\&.
.RS
.TP
string \fIword\fR
The words of the command line to parse and match to parameters\&.
.RE
.TP


\fB<private>\fR \fBehandler\fR \fIcmd\fR


This method specifies a command prefix to wrap around the parsing of
the command line for the private, and the execution of its action\&.
.RS
.TP
cmd-prefix \fIcmd\fR
A command prefix taking a single argument, a script\&. The command
prefix has to execute this script in its caller's context\&. The script
................................................................................
will parse words for the private,m and perform its action\&. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i\&.e\&. in
an interactive shell run by the framework)\&.
.RE
.TP










\fB<private>\fR \fBfind\fR \fIpath\fR
This method returns the instance command of the sub-ordinate with the
given \fIpath\fR of names\&. An error is thrown if such a sub-ordinate
does not exist, i\&.e\&. whenever \fIpath\fR is not empty, as a private
has no sub-ordinates, ever\&.
.sp
Note, as implied above, an empty \fIpath\fR is allowed and







>
>

>
>







 







>
>

>
>







 







>
>
>
>
>
>
>
>
>
>







281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
...
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
...
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
.sp
\fB::cmdr::private\fR \fBcreate\fR \fIobj\fR \fIsuper\fR \fIname\fR \fIarguments\fR \fIaction\fR
.sp
\fB<private>\fR \fBcomplete-words\fR \fIparse\fR
.sp
\fB<private>\fR \fBdo\fR ?\fIword\fR\&.\&.\&.?
.sp
\fB<private>\fR \fBintercept\fR \fIcmd\fR
.sp
\fB<private>\fR \fBehandler\fR \fIcmd\fR
.sp
\fB<private>\fR \fBcustom-setup\fR \fIcmd\fR
.sp
\fB<private>\fR \fBfind\fR \fIpath\fR
.sp
\fB<private>\fR \fBhelp\fR ?\fIprefix\fR?
.sp
\fB<private>\fR \fBunknown\fR \fIm\fR ?\fIword\fR\&.\&.\&.?
.sp
................................................................................
filled container of parameters\&.
.RS
.TP
string \fIword\fR
The words of the command line to parse and match to parameters\&.
.RE
.TP
\fB<private>\fR \fBintercept\fR \fIcmd\fR
.TP
\fB<private>\fR \fBehandler\fR \fIcmd\fR
\fINote:\fR While the form \fBehandler\fR is still usable, it is
deprecated and will be removed in a future release\&.
This method specifies a command prefix to wrap around the parsing of
the command line for the private, and the execution of its action\&.
.RS
.TP
cmd-prefix \fIcmd\fR
A command prefix taking a single argument, a script\&. The command
prefix has to execute this script in its caller's context\&. The script
................................................................................
will parse words for the private,m and perform its action\&. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i\&.e\&. in
an interactive shell run by the framework)\&.
.RE
.TP
\fB<private>\fR \fBcustom-setup\fR \fIcmd\fR
This method specifies a command prefix which will be run all the
regular setup of an officer from its specification is done, to perform
customizations\&.
.sp
The \fB<private>\fR here ignores such calls\&.
.sp
The method exists only to avoid having to special-case code the
places propagating these commands down the hierarchy\&.
.TP
\fB<private>\fR \fBfind\fR \fIpath\fR
This method returns the instance command of the sub-ordinate with the
given \fIpath\fR of names\&. An error is thrown if such a sub-ordinate
does not exist, i\&.e\&. whenever \fIpath\fR is not empty, as a private
has no sub-ordinates, ever\&.
.sp
Note, as implied above, an empty \fIpath\fR is allowed and

Added embedded/man/files/cmdr_table.n.







































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
'\"
'\" Generated from file 'cmdr_table\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2013-2016 Andreas Kupries
'\" Copyright (c) 2013-2016 Documentation, Andreas Kupries
'\"
.TH "cmdr::table" n 0\&.1 doc "Cmdr, a framework for command line parsing and dispatch"
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
.\" .AP type name in/out ?indent?
.\"	Start paragraph describing an argument to a library procedure.
.\"	type is type of argument (int, etc.), in/out is either "in", "out",
.\"	or "in/out" to describe whether procedure reads or modifies arg,
.\"	and indent is equivalent to second arg of .IP (shouldn't ever be
.\"	needed;  use .AS below instead)
.\"
.\" .AS ?type? ?name?
.\"	Give maximum sizes of arguments for setting tab stops.  Type and
.\"	name are examples of largest possible arguments that will be passed
.\"	to .AP later.  If args are omitted, default tab stops are used.
.\"
.\" .BS
.\"	Start box enclosure.  From here until next .BE, everything will be
.\"	enclosed in one large box.
.\"
.\" .BE
.\"	End of box enclosure.
.\"
.\" .CS
.\"	Begin code excerpt.
.\"
.\" .CE
.\"	End code excerpt.
.\"
.\" .VS ?version? ?br?
.\"	Begin vertical sidebar, for use in marking newly-changed parts
.\"	of man pages.  The first argument is ignored and used for recording
.\"	the version when the .VS was added, so that the sidebars can be
.\"	found and removed when they reach a certain age.  If another argument
.\"	is present, then a line break is forced before starting the sidebar.
.\"
.\" .VE
.\"	End of vertical sidebar.
.\"
.\" .DS
.\"	Begin an indented unfilled display.
.\"
.\" .DE
.\"	End of indented unfilled display.
.\"
.\" .SO ?manpage?
.\"	Start of list of standard options for a Tk widget. The manpage
.\"	argument defines where to look up the standard options; if
.\"	omitted, defaults to "options". The options follow on successive
.\"	lines, in three columns separated by tabs.
.\"
.\" .SE
.\"	End of list of standard options for a Tk widget.
.\"
.\" .OP cmdName dbName dbClass
.\"	Start of description of a specific option.  cmdName gives the
.\"	option's name as specified in the class command, dbName gives
.\"	the option's name in the option database, and dbClass gives
.\"	the option's class in the option database.
.\"
.\" .UL arg1 arg2
.\"	Print arg1 underlined, then print arg2 normally.
.\"
.\" .QW arg1 ?arg2?
.\"	Print arg1 in quotes, then arg2 normally (for trailing punctuation).
.\"
.\" .PQ arg1 ?arg2?
.\"	Print an open parenthesis, arg1 in quotes, then arg2 normally
.\"	(for trailing punctuation) and then a closing parenthesis.
.\"
.\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
.\"	# Start an argument description
.de AP
.ie !"\\$4"" .TP \\$4
.el \{\
.   ie !"\\$2"" .TP \\n()Cu
.   el          .TP 15
.\}
.ta \\n()Au \\n()Bu
.ie !"\\$3"" \{\
\&\\$1 \\fI\\$2\\fP (\\$3)
.\".b
.\}
.el \{\
.br
.ie !"\\$2"" \{\
\&\\$1	\\fI\\$2\\fP
.\}
.el \{\
\&\\fI\\$1\\fP
.\}
.\}
..
.\"	# define tabbing values for .AP
.de AS
.nr )A 10n
.if !"\\$1"" .nr )A \\w'\\$1'u+3n
.nr )B \\n()Au+15n
.\"
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
.nr )C \\n()Bu+\\w'(in/out)'u+2n
..
.AS Tcl_Interp Tcl_CreateInterp in/out
.\"	# BS - start boxed text
.\"	# ^y = starting y location
.\"	# ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
.\"	# BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
.\"	Draw four-sided box normally, but don't draw top of
.\"	box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
.\"	# VS - start vertical sidebar
.\"	# ^Y = starting y location
.\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
.de VS
.if !"\\$2"" .br
.mk ^Y
.ie n 'mc \s12\(br\s0
.el .nr ^v 1u
..
.\"	# VE - end of vertical sidebar
.de VE
.ie n 'mc
.el \{\
.ev 2
.nf
.ti 0
.mk ^t
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
.sp -1
.fi
.ev
.\}
.nr ^v 0
..
.\"	# Special macro to handle page bottom:  finish off current
.\"	# box/sidebar if in box/sidebar mode, then invoked standard
.\"	# page bottom macro.
.de ^B
.ev 2
'ti 0
'nf
.mk ^t
.if \\n(^b \{\
.\"	Draw three-sided box if this is the box's first page,
.\"	draw two sides but no top otherwise.
.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
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.\}
.if \\n(^v \{\
.nr ^x \\n(^tu+1v-\\n(^Yu
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
.\}
.bp
'fi
.ev
.if \\n(^b \{\
.mk ^y
.nr ^b 2
.\}
.if \\n(^v \{\
.mk ^Y
.\}
..
.\"	# DS - begin display
.de DS
.RS
.nf
.sp
..
.\"	# DE - end display
.de DE
.fi
.RE
.sp
..
.\"	# SO - start of list of standard options
.de SO
'ie '\\$1'' .ds So \\fBoptions\\fR
'el .ds So \\fB\\$1\\fR
.SH "STANDARD OPTIONS"
.LP
.nf
.ta 5.5c 11c
.ft B
..
.\"	# SE - end of list of standard options
.de SE
.fi
.ft R
.LP
See the \\*(So manual entry for details on the standard options.
..
.\"	# OP - start of full description for a single option
.de OP
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
.\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
.\"	# CE - end code excerpt
.de CE
.fi
.RE
..
.\"	# UL - underline word
.de UL
\\$1\l'|0\(ul'\\$2
..
.\"	# QW - apply quotation marks to word
.de QW
.ie '\\*(lq'"' ``\\$1''\\$2
.\"" fix emacs highlighting
.el \\*(lq\\$1\\*(rq\\$2
..
.\"	# PQ - apply parens and quotation marks to word
.de PQ
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3
.\"" fix emacs highlighting
.el (\\*(lq\\$1\\*(rq\\$2)\\$3
..
.\"	# QR - quoted range
.de QR
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3
.\"" fix emacs highlighting
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3
..
.\"	# MT - "empty" string
.de MT
.QW ""
..
.BS
.SH NAME
cmdr::table \- Cmdr - Simple Table creation
.SH SYNOPSIS
package require \fBcmdr::util \fR
.sp
\fB::cmdr::table\fR \fBgeneral\fR \fIvar\fR \fIheaders\fR \fIscript\fR
.sp
\fB::cmdr::table\fR \fBdict\fR \fIvar\fR \fIscript\fR
.sp
\fB::cmdr::table\fR \fBborders\fR ?\fIenable\fR?
.sp
\fB::cmdr::table\fR \fBshow\fR ?\fIcmd\fR\&.\&.\&.?
.sp
\fBt\fR \fBborders\fR ?\fIenable\fR?
.sp
\fBt\fR \fBheaders\fR ?\fIenable\fR?
.sp
\fBt\fR \fBstyle\fR ?\fIstyle\fR?
.sp
\fBt\fR \fBadd\fR \fIword\fR\&.\&.\&.
.sp
\fBt\fR \fB+\fR \fIword\fR\&.\&.\&.
.sp
\fBt\fR \fB+=\fR \fIword\fR\&.\&.\&.
.sp
\fBt\fR \fB<<\fR \fIword\fR\&.\&.\&.
.sp
\fBt\fR \fB<=\fR \fIword\fR\&.\&.\&.
.sp
\fBt\fR \fBshow*\fR ?\fIcmd\fR?
.sp
\fBt\fR \fBshow\fR ?\fIcmd\fR?
.sp
.BE
.SH DESCRIPTION
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP
For availability please read \fICmdr - How To Get The Sources\fR\&.
.PP
This package provides convenience commands for the easy creation of
simple tables\&.
.SH API
.TP
\fB::cmdr::table\fR \fBgeneral\fR \fIvar\fR \fIheaders\fR \fIscript\fR
This command creates a new table with the words found in the list of
\fIheaders\fR as the top row\&.
The \fIscript\fR is run in the calling context to configure and
populate the table\&.
The table's object command is stored in the named \fIvar\fR for access
by the \fIscript\fR\&.
The result of the command is the table's object command\&.
.RS
.TP
varname \fIvar\fR
The name of the variable in the calling scope the new table's object
command will be stored into\&.
.TP
list \fIheaders\fR
The list of words to user as column headers\&.
.TP
string \fIscript\fR
The tcl script to be run to configure and populate the table\&.
.RE
.TP
\fB::cmdr::table\fR \fBdict\fR \fIvar\fR \fIscript\fR
This command creates a new table intended for the display of a Tcl
dictionary\&.
It will have two columns titled \fBKey\fR and \fBValue\fR\&.
The \fIscript\fR is run in the calling context to configure and
populate the table\&.
The table's object command is stored in the named \fIvar\fR for access
by the \fIscript\fR\&.
The result of the command is the table's object command\&.
.RS
.TP
varname \fIvar\fR
The name of the variable in the calling scope the new table's object
command will be stored into\&.
.TP
string \fIscript\fR
The tcl script to be run to configure and populate the table\&.
.RE
.TP
\fB::cmdr::table\fR \fBborders\fR ?\fIenable\fR?
This command configures the global \fIborder\fR setting, which
indicates the (non)use of borders by the tables of this package\&. Note
that changes to this setting influence only the tables created after
the change\&. Existing tables are not modified\&.
.sp
The result of the command is the new state of the setting\&.
.sp
If the command is called without an argument it simply returns the
current state of the setting, without making changes\&.
.sp
The default value for the setting is \fByes\fR\&.
Individual tables can override the global settings via their
\fBborders\fR method, see \fBTable API\fR\&.
.RS
.TP
boolean \fIenable\fR
The new value of the setting\&. Optional\&.
.RE
.TP
\fB::cmdr::table\fR \fBshow\fR ?\fIcmd\fR\&.\&.\&.?
This command configures the global \fIshow\fR setting, which is the
command prefix to use to print a table, if the table is not given a
specific command to use\&. Note that changes to this setting influence
only the tables created after the change\&. Existing tables are not
modified\&.
.sp
The result of the command is the new state of the setting
.sp
If the command is called without any arguments it simply
returns the current state of the setting, without making changes\&.
.sp
The default value for the setting is \fBputs\fR\&.
.RS
.TP
word \fIcmd\fR
The command prefix to use for printing a table, as varargs\&.
The prefix will be invoked with a single argument, the string
representation of the table\&.
.RE
.PP
.SH "TABLE API"
This section lists the methods available for configuration and
population of the tables created by this package\&.
.TP
\fBt\fR \fBborders\fR ?\fIenable\fR?
This is the table-level \fIborders\fR setting\&. On creation a table
inherits the global setting (See \fB::cmdr::table borders\fR)\&. If
that is not to suit then this method can be used to override it\&.
.sp
The result of the method is the new state of the setting\&. When
called without argument no change is made and the result is the
current state of the setting\&.
.TP
\fBt\fR \fBheaders\fR ?\fIenable\fR?
This method controls the visibility of the header row\&.  By default
general tables have the header row visisble, while for dict tables the
header is suppressed\&. This method allows the user to override these
defaults\&.
.sp
The result of the method is the new state of the setting\&. When
called without argument no change is made and the result is the
current state of the setting\&.
.TP
\fBt\fR \fBstyle\fR ?\fIstyle\fR?
This method allows the user to force the use of a completely custom
style\&.
Please see the documentation for the Tcllib package \fBreport\fR
on how to define table styles\&.
.sp
The package defines four styles of its own, all using the
common prefix \fBcmdr/table/\fR in their names\&.
When no custom style is set the table chooses between these based on
its \fIborders\fR and \fIheaders\fR settings\&.
.sp
The result of the method is the new state of the setting\&. When
called without argument then no change is made and the result is the
current state of the setting\&.
.sp
To revert from a custom style to the automatic choice invoke
this method with the empty string as the name of the style\&.
.TP
\fBt\fR \fBadd\fR \fIword\fR\&.\&.\&.
.TP
\fBt\fR \fB+\fR \fIword\fR\&.\&.\&.
.TP
\fBt\fR \fB+=\fR \fIword\fR\&.\&.\&.
.TP
\fBt\fR \fB<<\fR \fIword\fR\&.\&.\&.
.TP
\fBt\fR \fB<=\fR \fIword\fR\&.\&.\&.
This method adds a new row to the table, containing the given words\&.
If less words than headers are specified the row is padded with empty columns\&.
If too many words are specified the superfluous words are ignored\&.
.sp
The result of the method is the empty string\&.
.TP
\fBt\fR \fBshow*\fR ?\fIcmd\fR?
This method formats the table into a string and then invokes the
command prefix \fIcmd\fR to print that string\&. The command prefix is
run at the global namespace and level\&. If the \fIcmd\fR is not
specified the global \fIshow\fR setting is used instead\&.
.sp
The result of the method is the empty string\&.
.TP
\fBt\fR \fBshow\fR ?\fIcmd\fR?
This is a variant of method \fBshow*\fR above which not only prints
the table as above, but also destroys it\&.
.PP
.SH "BUGS, IDEAS, FEEDBACK"
Both the package(s) and this documentation will undoubtedly contain
bugs and other problems\&.
Please report such at
\fICmdr Tickets\fR [https:/core\&.tcl\&.tk/akupries/cmdr]\&.
.PP
Please also report any ideas you may have for enhancements of
either package(s) and/or documentation\&.
.SH KEYWORDS
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
.SH COPYRIGHT
.nf
Copyright (c) 2013-2016 Andreas Kupries
Copyright (c) 2013-2016 Documentation, Andreas Kupries

.fi

Changes to embedded/man/index.n.

348
349
350
351
352
353
354



355
356
357
358
359
360
361
...
504
505
506
507
508
509
510



511
512
513
514
515
516
517
...
660
661
662
663
664
665
666



667
668
669
670
671
672
673
...
816
817
818
819
820
821
822



823
824
825
826
827
828
829
...
972
973
974
975
976
977
978



979
980
981
982
983
984
985
....
1128
1129
1130
1131
1132
1133
1134



1135
1136
1137
1138
1139
1140
1141
....
1284
1285
1286
1287
1288
1289
1290



1291
1292
1293
1294
1295
1296
1297
....
1440
1441
1442
1443
1444
1445
1446



1447
1448
1449
1450
1451
1452
1453
....
1596
1597
1598
1599
1600
1601
1602



1603
1604
1605
1606
1607
1608
1609
....
1752
1753
1754
1755
1756
1757
1758



1759
1760
1761
1762
1763
1764
1765
....
1908
1909
1910
1911
1912
1913
1914



1915
1916
1917
1918
1919
1920
1921
....
2064
2065
2066
2067
2068
2069
2070



2071
2072
2073
2074
2075
2076
2077
....
2220
2221
2222
2223
2224
2225
2226



2227
2228
2229
2230
2231
2232
2233
....
2376
2377
2378
2379
2380
2381
2382



2383
2384
2385
2386
2387
2388
2389
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private



.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
...
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
...
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
...
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
...
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
....
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
....
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
....
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
....
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
....
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
....
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
....
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
....
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
....
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP
................................................................................
cmdr::pager
.TP
\fBfiles/cmdr_parameter\&.n\fR
cmdr::parameter
.TP
\fBfiles/cmdr_private\&.n\fR
cmdr::private
.TP
\fBfiles/cmdr_table\&.n\fR
cmdr::table
.TP
\fBfiles/cmdr_tty\&.n\fR
cmdr::tty
.TP
\fBfiles/cmdr_util\&.n\fR
cmdr::util
.TP

Changes to embedded/man/toc.n.

347
348
349
350
351
352
353



354
355
356
357
358
359
360
.TP
\fBcmdr::parameter\fR
\fIfiles/cmdr_parameter\&.n\fR: Cmdr - (Partially internal) Command parameters
.TP
\fBcmdr::private\fR
\fIfiles/cmdr_private\&.n\fR: Cmdr - (Internal) Single command handling, options, and arguments
.TP



\fBcmdr::tty\fR
\fIfiles/cmdr_tty\&.n\fR: Cmdr - Check if stdin is a tty, i\&.e\&. terminal
.TP
\fBcmdr::util\fR
\fIfiles/cmdr_util\&.n\fR: Cmdr - (Internal) General Utilities
.TP
\fBcmdr::validate\fR







>
>
>







347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
.TP
\fBcmdr::parameter\fR
\fIfiles/cmdr_parameter\&.n\fR: Cmdr - (Partially internal) Command parameters
.TP
\fBcmdr::private\fR
\fIfiles/cmdr_private\&.n\fR: Cmdr - (Internal) Single command handling, options, and arguments
.TP
\fBcmdr::table\fR
\fIfiles/cmdr_table\&.n\fR: Cmdr - Simple Table creation
.TP
\fBcmdr::tty\fR
\fIfiles/cmdr_tty\&.n\fR: Cmdr - Check if stdin is a tty, i\&.e\&. terminal
.TP
\fBcmdr::util\fR
\fIfiles/cmdr_util\&.n\fR: Cmdr - (Internal) General Utilities
.TP
\fBcmdr::validate\fR

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

131
132
133
134
135
136
137
138
139

140

141
142
143
144
145
146
147
148
149
150
151
152
153
...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170


171


172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188

189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
...
219
220
221
222
223
224
225



226
227
228
229
230
231
232
233
234
235
236
237







238
239
240
241
242
243
244

245

246
247
248
249





250
251
252
253
254







































255
256
257
258
259
260
261
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This document provides an overview of the changes <b class="package"><a href="cmdr.html">cmdr</a></b>
underwent from version to version.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Changes</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Changes for version 1.2</a></h3>
<ol class="enumerated">
<li><p>Added many new standard validation types to package
       <b class="package"><a href="cmdr_validate.html">cmdr::validate</a></b>:</p>

<ol class="enumerated">

<li><p>Double</p></li>
<li><p>Percent</p></li>
<li><p>Posint (positive integers, &gt; 0)</p></li>
<li><p>Paths and channels</p>
<ol class="enumerated">
       
<li><p>Readable file</p></li>
<li><p>Writable file</p></li>
<li><p>Read/writable file</p></li>
<li><p>Readable directory</p></li>
<li><p>Read/writeable directory</p></li>
<li><p>readable path</p></li>
<li><p>Read/writable path</p></li>
................................................................................
<li><p>Readable path, as channel</p></li>
<li><p>Writable path, as channel</p></li>
<li><p>Read/writable path, as channel</p></li>
</ol>
</li>
<li><p>Date and time related:</p>
<ol class="enumerated">
       
<li><p>iso8601 date/time,</p></li>
<li><p>year</p></li>
<li><p>weekday,</p></li>
<li><p>hour:minute</p></li>
</ol>
</li>
</ol>
</li>
<li><p>Added more helper commands for validation failure messages to


       package <b class="package"><a href="cmdr_vcommon.html">cmdr::validate::common</a></b>.</p>


<ol class="enumerated">
       
<li><p><b class="cmd">fail-unknown-thing</b></p></li>
<li><p><b class="cmd">fail-unknown-thing-msg</b></p></li>
<li><p><b class="cmd">fail-unknown-simple</b></p></li>
<li><p><b class="cmd">fail-unknown-simple-msg</b></p></li>
<li><p><b class="cmd">fail-known-thing</b></p></li>
<li><p><b class="cmd">fail-known-thing-msg</b></p></li>
<li><p><b class="cmd">fail-known-simple</b></p></li>
<li><p><b class="cmd">fail-known-simple-msg</b></p></li>
</ol>
</li>
<li><p>Modified integer validation to have a proper internal
       representation: decimal. Octal, hex, etc. input is now
       normalized to this.</p></li>
<li><p>Various new supporting packages:</p>
<dl class="definitions">

<dt><b class="package"><a href="cmdr_tty.html">cmdr::tty</a></b></dt>
<dd><p>Test for terminal.</p></dd>
<dt><b class="package"><a href="cmdr_color.html">cmdr::color</a></b></dt>
<dd><p>Color management, ansi control sequences.</p></dd>
<dt><b class="package"><a href="cmdr_ask.html">cmdr::ask</a></b></dt>
<dd><p>User interaction commands.</p></dd>
<dt><b class="package"><a href="cmdr_pager.html">cmdr::pager</a></b></dt>
<dd><p>Text display with automatic invokation of
     	      		    a pager for tall output.</p></dd>
<dt><b class="package"><a href="cmdr_history.html">cmdr::history</a></b></dt>
<dd><p>Pluggable management of command history.</p></dd>
<dt><b class="package">cmdr::table</b></dt>
<dd><p>Table formatting, simplified interface to
      		            <a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/toc.html">Tcllib</a>'s
      		            <b class="package">struct::matrix</b> and
			    <b class="package">report</b> packages.</p></dd>
<dt><b class="package">cmdr::validate::valtype-support</b></dt>
<dd><p>Even more validation types.
     Wrappers around the validation commands provided by
       <a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/toc.html">Tcllib</a>:</p>
<ol class="enumerated">
       
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_amex.html">valtype::creditcard::amex</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_discover.html">valtype::creditcard::discover</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_mastercard.html">valtype::creditcard::mastercard</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_visa.html">valtype::creditcard::visa</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/ean13.html">valtype::gs1::ean13</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/iban.html">valtype::iban</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/imei.html">valtype::imei</a></p></li>
................................................................................
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/luhn.html">valtype::luhn</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/luhn5.html">valtype::luhn5</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/usnpi.html">valtype::usnpi</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/verhoeff.html">valtype::verhoeff</a></p></li>
</ol></dd>
</dl>
</li>



<li><p>Added support for per-officer options. The most common use case
       will likely be the declaration of global options in the root
       officer.</p>
<p>Related to this, a new common block <b class="const">*config*</b> is set to
       the active <b class="package">config</b> instance, which will be different
       from the defining instance, , for per-officer options. This
       gives the per-officer options access to the arguments (and
       options) of the current command, instead of only their own
       sibling options.</p></li>
<li><p>Added support for an option <b class="option">-extend</b> for common blocks,
       allowing their extension in a subordinate instead of just
       replacing the entire content.</p></li>







<li><p>Extended boolean options to allow the specification of negative
       aliases, i.e. representing the inverted option. See the DSL
       commands <b class="cmd">neg-alias</b> and <b class="cmd">!alias</b> in
       <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></li>
<li><p>Extended the DSL for options in general with the ability to set
       a label for the option argument so that the generated help can
       be more descriptive. The option name is used as fallback for

       options for which no such label was specified.

       See DSL command <b class="cmd">label</b> in
       <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></li>
<li><p>Extended officers to accept all unique command prefixes of
       their subordinates for dispatch.</p></li>





<li><p>Modified the help system to use the <b class="const">short</b> format for
       interior nodes of the command hierarchy by default.</p></li>
<li><p>Modified the help system to exclude auto-added commands from
       the output generated by format <b class="const">by-category</b>.</p></li>
<li><p>... A suite of bug fixes ... // TODO: list the details.</p></li>







































</ol>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Changes for version 1.1</a></h3>
<ol class="enumerated">
<li><p>Fixed broken requirement references in the meta data of packages
       <b class="package"><a href="cmdr_help_json.html">cmdr::help::json</a></b> and <b class="package"><a href="cmdr_help_sql.html">cmdr::help::sql</a></b>.</p></li>
<li><p>Fixed initialization issues in the help generator.</p></li>







<
|
>

>





|







 







|
|







|
>
>
|
>
>


<



<





<
<
<
|

>







|
|


|
|
|
|
<

|
|
|

|







 







>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
>
>
>
|
|
|
|
<
<
<
>
|
>
|
|
<
<
>
>
>
>
>
|
|
|
|
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







131
132
133
134
135
136
137

138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
...
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178

179
180
181

182
183
184
185
186



187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204

205
206
207
208
209
210
211
212
213
214
215
216
217
...
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251



252
253
254
255
256


257
258
259
260
261
262
263
264
265

266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This document provides an overview of the changes <b class="package"><a href="cmdr.html">cmdr</a></b>
underwent from version to version.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Changes</a></h2>
<div id="subsection1" class="subsection"><h3><a name="subsection1">Changes for version 1.2</a></h3>
<ol class="enumerated">

<li><p>Extended the package <b class="package"><a href="cmdr_validate.html">cmdr::validate</a></b> with many new
       standard validation types:</p>
<ol class="enumerated">
       
<li><p>Double</p></li>
<li><p>Percent</p></li>
<li><p>Posint (positive integers, &gt; 0)</p></li>
<li><p>Paths and channels</p>
<ol class="enumerated">
              
<li><p>Readable file</p></li>
<li><p>Writable file</p></li>
<li><p>Read/writable file</p></li>
<li><p>Readable directory</p></li>
<li><p>Read/writeable directory</p></li>
<li><p>readable path</p></li>
<li><p>Read/writable path</p></li>
................................................................................
<li><p>Readable path, as channel</p></li>
<li><p>Writable path, as channel</p></li>
<li><p>Read/writable path, as channel</p></li>
</ol>
</li>
<li><p>Date and time related:</p>
<ol class="enumerated">
              
<li><p>ISO-8601 date/time,</p></li>
<li><p>year</p></li>
<li><p>weekday,</p></li>
<li><p>hour:minute</p></li>
</ol>
</li>
</ol>
</li>
<li><p>In package <b class="package"><a href="cmdr_validate.html">cmdr::validate</a></b>, modified the integer
       validation type to have a proper internal representation:
       decimal. Input in octal, hex, etc. is now normalized to this.</p></li>
<li><p>Extended package <b class="package"><a href="cmdr_vcommon.html">cmdr::validate::common</a></b> with more
       helper commands for the generation of validation failure
       messages</p>
<ol class="enumerated">
       

<li><p><b class="cmd">fail-unknown-thing-msg</b></p></li>
<li><p><b class="cmd">fail-unknown-simple</b></p></li>
<li><p><b class="cmd">fail-unknown-simple-msg</b></p></li>

<li><p><b class="cmd">fail-known-thing-msg</b></p></li>
<li><p><b class="cmd">fail-known-simple</b></p></li>
<li><p><b class="cmd">fail-known-simple-msg</b></p></li>
</ol>
</li>



<li><p>Added various new supporting packages:</p>
<dl class="definitions">
       
<dt><b class="package"><a href="cmdr_tty.html">cmdr::tty</a></b></dt>
<dd><p>Test for terminal.</p></dd>
<dt><b class="package"><a href="cmdr_color.html">cmdr::color</a></b></dt>
<dd><p>Color management, ansi control sequences.</p></dd>
<dt><b class="package"><a href="cmdr_ask.html">cmdr::ask</a></b></dt>
<dd><p>User interaction commands.</p></dd>
<dt><b class="package"><a href="cmdr_pager.html">cmdr::pager</a></b></dt>
<dd><p>Text display with automatic invokation of a pager for tall
            output.</p></dd>
<dt><b class="package"><a href="cmdr_history.html">cmdr::history</a></b></dt>
<dd><p>Pluggable management of command history.</p></dd>
<dt><b class="package"><a href="cmdr_table.html">cmdr::table</a></b></dt>
<dd><p>Table formatting, a simplified interface to
            <a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/toc.html">Tcllib</a>'s
            <b class="package">struct::matrix</b> and <b class="package">report</b> packages.</p></dd>

<dt><b class="package">cmdr::validate::valtype-support</b></dt>
<dd><p>Even more validation types, now as wrappers around the
            validation commands provided by
            <a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/toc.html">Tcllib</a>:</p>
<ol class="enumerated">
            
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_amex.html">valtype::creditcard::amex</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_discover.html">valtype::creditcard::discover</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_mastercard.html">valtype::creditcard::mastercard</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/cc_visa.html">valtype::creditcard::visa</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/ean13.html">valtype::gs1::ean13</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/iban.html">valtype::iban</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/imei.html">valtype::imei</a></p></li>
................................................................................
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/luhn.html">valtype::luhn</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/luhn5.html">valtype::luhn5</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/usnpi.html">valtype::usnpi</a></p></li>
<li><p><a href="http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/valtype/verhoeff.html">valtype::verhoeff</a></p></li>
</ol></dd>
</dl>
</li>
<li><p>Extended package <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> with</p>
<ol class="enumerated">
       
<li><p>Support for per-officer options. The most common use
              case will likely be the declaration of global options in
              the root officer.</p>
<p>Related to this, a new common block <b class="const">*config*</b> is
              set to the active <b class="package">config</b> instance, which will
              be different from the defining instance, for per-officer
              options. This gives the per-officer options access to
              the arguments (and options) of the current command,
              instead of only their own sibling options.</p></li>
<li><p>Support for an option <b class="option">-extend</b> for common
              blocks, allowing their extension in a subordinate
              instead of just replacing the entire content.</p></li>
<li><p>Support to accept all unique command prefixes of an
              officer's subordinates for dispatch.</p></li>
</ol>
</li>
<li><p>Extended package <b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b> with</p>
<ol class="enumerated">
       
<li><p>Support for the specification of negative aliases for
              boolean options, i.e. representing the inverted option.</p>
<p>See the DSL commands <b class="cmd">neg-alias</b> and <b class="cmd">!alias</b> in
              <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></li>



<li><p>Support for option labeling, for use in the generated
              help, to make it more descriptive. Options for which no
              label is specified will use their name as fallback.</p>
<p>See DSL command <b class="cmd">label</b> in
              <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></li>


</ol>
</li>
<li><p>Help system changes</p>
<ol class="enumerated">
       
<li><p>Modified it to use the <b class="const">short</b> format for interior
              nodes of the command hierarchy by default.</p></li>
<li><p>Modified it to exclude auto-added commands from the
              output generated by format <b class="const">by-category</b>.</p></li>

<li><p>Modified the format <b class="const">full</b> to show the option
       	      arguments for those which have such. See also the
       	      extension of package <b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b> with
       	      support for option labels, this is what is used here.</p></li>
<li><p>Modified it to declare a standard global option
              <b class="option">--help</b> (with aliases <b class="option">-h</b> and
              <b class="option">-?</b>). Using the option invokes the standard help
              (command) on the current command, if any, or the global
              help if there is no command.</p></li>
<li><p>Modified to use a minimum width of 10 characters for
       	      descriptions. If the user narrowed the terminal this far
       	      then having the text either cut off at the right edge,
       	      or wrapped around is not worse then the help trying to
       	      wrap the sentence with word boundaries, etc. Also,
       	      trying to use negative width threw Tcl errors.</p></li>
</ol>
</li>
<li><p>Fixed the handling of common block <b class="const">*all*</b> in package
       <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b>. While it was ok trapping and ignoring
       a missing definition of this block, trapping everything which
       could go wrong was not.</p>
<p><a href="http://core.tcl.tk/akupries/cmdr/info/9159f68bc35d9747">Details</a>.</p></li>
<li><p>Fixed a long-standing bug of package <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> in
       the forced calculation of parameter values in method
       <b class="method">Force</b>). Any error in the calculations left an internal
       flag set, causing future invokations to believe to be in a
       recursive call and thus do nothing.</p>
<p>While this had no effect on regular operation, i.e.
       with the application exiting after each command, in interactive
       mode this misbehaviour disabled all checks and validations for
       the command in question, and also retained old parameter
       values.</p>
<p><a href="http://core.tcl.tk/akupries/cmdr/info/f74095b252d4c9df">Details</a></p></li>
<li><p>Modified the formatting of <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> state when
       interactively entering it for a private. Parameter names now
       are shown as declared, and an additional flag character
       indicates if it is inherited from above, or not.</p></li>
<li><p>General fixes to testsuite, code comments, bogus variable
       names, typos in error messages, etc.</p></li>
</ol>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Changes for version 1.1</a></h3>
<ol class="enumerated">
<li><p>Fixed broken requirement references in the meta data of packages
       <b class="package"><a href="cmdr_help_json.html">cmdr::help::json</a></b> and <b class="package"><a href="cmdr_help_sql.html">cmdr::help::sql</a></b>.</p></li>
<li><p>Fixed initialization issues in the help generator.</p></li>

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

88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
    }
    UL.requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file 'cmdr_color.man' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2013-2016 Andreas Kupries   -- Copyright &copy; 2013-2016 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ cmdr::color.n
   -->
<body><div class="doctools">
<hr> [







|







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
    }
    UL.requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file 'cmdr_color.man~' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2013-2016 Andreas Kupries   -- Copyright &copy; 2013-2016 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ cmdr::color.n
   -->
<body><div class="doctools">
<hr> [

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

148
149
150
151
152
153
154


155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
on first call) to provide the necessary in-memory structures.</p>
<p>The DSL commands map to instance methods as shown below:</p>
<dl class="definitions">
<dt><b class="cmd">alias</b></dt>
<dd><p><b class="method">Alias</b></p></dd>
<dt><b class="cmd">common</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">set</b></p></dd>


<dt><b class="cmd">default</b></dt>
<dd><p><b class="method">Default</b></p></dd>
<dt><b class="cmd">description</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">description:</b></p></dd>
<dt><b class="cmd">ehandler</b></dt>
<dd><p><b class="method">ehandler</b></p></dd>
<dt><b class="cmd">shandler</b></dt>
<dd><p><b class="method">shandler</b></p></dd>
<dt><b class="cmd">officer</b></dt>
<dd><p><b class="method">Officer</b>, forward to <b class="method">DefineAction</b></p></dd>
<dt><b class="cmd">private</b></dt>
<dd><p><b class="method">Private</b>, forward to <b class="method">DefineAction</b></p></dd>
<dt><b class="cmd">undocumented</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">undocumented</b></p></dd>
</dl>







>
>





|
|
|







148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
on first call) to provide the necessary in-memory structures.</p>
<p>The DSL commands map to instance methods as shown below:</p>
<dl class="definitions">
<dt><b class="cmd">alias</b></dt>
<dd><p><b class="method">Alias</b></p></dd>
<dt><b class="cmd">common</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">set</b></p></dd>
<dt><b class="cmd">custom-setup</b></dt>
<dd><p><b class="method">custom-setup</b></p></dd>
<dt><b class="cmd">default</b></dt>
<dd><p><b class="method">Default</b></p></dd>
<dt><b class="cmd">description</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">description:</b></p></dd>
<dt><b class="cmd">ehandler</b></dt>
<dd><p>See <b class="cmd">intercept</b>. <em>Deprecated</em>.</p></dd>
<dt><b class="cmd">intercept</b></dt>
<dd><p><b class="method">intercept</b></p></dd>
<dt><b class="cmd">officer</b></dt>
<dd><p><b class="method">Officer</b>, forward to <b class="method">DefineAction</b></p></dd>
<dt><b class="cmd">private</b></dt>
<dd><p><b class="method">Private</b>, forward to <b class="method">DefineAction</b></p></dd>
<dt><b class="cmd">undocumented</b></dt>
<dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">undocumented</b></p></dd>
</dl>

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

126
127
128
129
130
131
132

133
134
135
136
137
138
139
140
141
142
143
144
...
227
228
229
230
231
232
233


234


235
236
237
238
239
240
241
242
...
250
251
252
253
254
255
256
257
258
259
260



261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd">alias</b> <i class="arg">name</i> <b class="const">=</b> <i class="arg">name'</i>...</a></li>
<li><a href="#2"><b class="cmd">alias</b> <i class="arg">name</i></a></li>
<li><a href="#3"><b class="cmd">common</b> <i class="arg">name</i> <b class="option">-extend</b> <b class="option">--</b> <i class="arg">text</i></a></li>
<li><a href="#4"><b class="cmd">default</b></a></li>
<li><a href="#5"><b class="cmd">description</b> <i class="arg">text</i></a></li>

<li><a href="#6"><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#7"><b class="cmd">shandler</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#8"><b class="cmd">officer</b> <i class="arg">name</i> <i class="arg">script</i></a></li>
<li><a href="#9"><b class="cmd">private</b> <i class="arg">name</i> <i class="arg">script</i> <i class="arg">cmdprefix</i></a></li>
<li><a href="#10"><b class="cmd">undocumented</b></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This document is for users of the cmdr framework. It introduces the
................................................................................
command to use at runtime.
This means that if during &quot;Dispatch&quot; phase the currently processed
word does not match any of the commands known to this <i class="term">officer</i>
this default is used. If no default is specified an error will be
thrown instead.</p></dd>
<dt><a name="5"><b class="cmd">description</b> <i class="arg">text</i></a></dt>
<dd><p>This command declares the help text of the <i class="term">officer</i>.</p></dd>


<dt><a name="6"><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></a></dt>


<dd><p>This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).</p>
<p>At runtime the framework will call the specified command prefix
with a single argument, a script whose execution is equivalent to the
phases <i class="term">Parsing</i>, <i class="term">Completion</i>, and <i class="term">Execution</i> of the
framework, as described in <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.
The handler <em>must</em> call this script, and can perform any
................................................................................
and/or actions may have set during their execution.
This is especially important if the interactive command line shells of
the framework are enabled. Without such a handler and its bespoke
cleanup code transient state <em>will</em> leak between multiple
commands run from such a shell, something which is definitely not
wanted.</p></li>
</ol></dd>
<dt><a name="7"><b class="cmd">shandler</b> <i class="arg">cmdprefix</i></a></dt>
<dd><p>This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).</p>



<p>At runtime the framework will call the specified command prefix
with a single argument, the command of the actor we wish to
initialize.
The command prefix is then allowed to modify that actor as it sees
fit. The common use case will be the extension of the object with
additional subordinates.
An example of this is the package <b class="package"><a href="cmdr_history.html">cmdr::history</a></b> which
provides a command <b class="cmd">cmdr::history::attach</b> to add the history
management commands to the actor in question.</p></dd>
<dt><a name="8"><b class="cmd">officer</b> <i class="arg">name</i> <i class="arg">script</i></a></dt>
<dd><p>This command creates a named subordinate <i class="term">officer</i> with its
specification <i class="arg">script</i> of officer commands as described here.</p></dd>
<dt><a name="9"><b class="cmd">private</b> <i class="arg">name</i> <i class="arg">script</i> <i class="arg">cmdprefix</i></a></dt>
<dd><p>This command creates a named subordinate <i class="term">private</i> with its
specification <i class="arg">script</i> of private commands
(See <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i>), and a command prefix to invoke
when it is chosen.</p>
<p>This command prefix is called with a single argument, the
<b class="package"><a href="cmdr_config.html">cmdr::config</a></b> instance holding the <i class="term">parameter</i>s of the
private.</p>
<p>For an example see section <i class="term">Simple backend</i>
of <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i>.</p></dd>
<dt><a name="10"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">officer</i> (and its subordinates) from
the generated help.
Note that subordinates reachable through aliases may be included,
under the alias name, if they are not explicitly excluded themselves.</p></dd>
</dl>
<p>Please continue reading with <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i>.</p>
</div>







>
|
|
|
|
|







 







>
>
|
>
>
|







 







|



>
>
>
|
|
<






|


|









|







126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
...
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
...
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270

271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd">alias</b> <i class="arg">name</i> <b class="const">=</b> <i class="arg">name'</i>...</a></li>
<li><a href="#2"><b class="cmd">alias</b> <i class="arg">name</i></a></li>
<li><a href="#3"><b class="cmd">common</b> <i class="arg">name</i> <b class="option">-extend</b> <b class="option">--</b> <i class="arg">text</i></a></li>
<li><a href="#4"><b class="cmd">default</b></a></li>
<li><a href="#5"><b class="cmd">description</b> <i class="arg">text</i></a></li>
<li><a href="#6"><b class="cmd">intercept</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#7"><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#8"><b class="cmd">custom-setup</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#9"><b class="cmd">officer</b> <i class="arg">name</i> <i class="arg">script</i></a></li>
<li><a href="#10"><b class="cmd">private</b> <i class="arg">name</i> <i class="arg">script</i> <i class="arg">cmdprefix</i></a></li>
<li><a href="#11"><b class="cmd">undocumented</b></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This document is for users of the cmdr framework. It introduces the
................................................................................
command to use at runtime.
This means that if during &quot;Dispatch&quot; phase the currently processed
word does not match any of the commands known to this <i class="term">officer</i>
this default is used. If no default is specified an error will be
thrown instead.</p></dd>
<dt><a name="5"><b class="cmd">description</b> <i class="arg">text</i></a></dt>
<dd><p>This command declares the help text of the <i class="term">officer</i>.</p></dd>
<dt><a name="6"><b class="cmd">intercept</b> <i class="arg">cmdprefix</i></a></dt>
<dd></dd>
<dt><a name="7"><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></a></dt>
<dd><p><em>Note:</em> While the form <b class="cmd">ehandler</b> is still usable, it is
deprecated and will be removed in a future release.
This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).</p>
<p>At runtime the framework will call the specified command prefix
with a single argument, a script whose execution is equivalent to the
phases <i class="term">Parsing</i>, <i class="term">Completion</i>, and <i class="term">Execution</i> of the
framework, as described in <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.
The handler <em>must</em> call this script, and can perform any
................................................................................
and/or actions may have set during their execution.
This is especially important if the interactive command line shells of
the framework are enabled. Without such a handler and its bespoke
cleanup code transient state <em>will</em> leak between multiple
commands run from such a shell, something which is definitely not
wanted.</p></li>
</ol></dd>
<dt><a name="8"><b class="cmd">custom-setup</b> <i class="arg">cmdprefix</i></a></dt>
<dd><p>This is an advanced command which should normally only be specified at
the top of the whole hierarchy (from which its value will
automatically propagate to all subordinates).</p>
<p>When called multiple times, the specified commands
accumulate. This makes it easy to specify several indepedent
customizations.</p>
<p>At runtime the framework will invoke all the specified commands
with a single argument, the command of the actor to initialize.

The command prefix is then allowed to modify that actor as it sees
fit. The common use case will be the extension of the object with
additional subordinates.
An example of this is the package <b class="package"><a href="cmdr_history.html">cmdr::history</a></b> which
provides a command <b class="cmd">cmdr::history::attach</b> to add the history
management commands to the actor in question.</p></dd>
<dt><a name="9"><b class="cmd">officer</b> <i class="arg">name</i> <i class="arg">script</i></a></dt>
<dd><p>This command creates a named subordinate <i class="term">officer</i> with its
specification <i class="arg">script</i> of officer commands as described here.</p></dd>
<dt><a name="10"><b class="cmd">private</b> <i class="arg">name</i> <i class="arg">script</i> <i class="arg">cmdprefix</i></a></dt>
<dd><p>This command creates a named subordinate <i class="term">private</i> with its
specification <i class="arg">script</i> of private commands
(See <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i>), and a command prefix to invoke
when it is chosen.</p>
<p>This command prefix is called with a single argument, the
<b class="package"><a href="cmdr_config.html">cmdr::config</a></b> instance holding the <i class="term">parameter</i>s of the
private.</p>
<p>For an example see section <i class="term">Simple backend</i>
of <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i>.</p></dd>
<dt><a name="11"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">officer</i> (and its subordinates) from
the generated help.
Note that subordinates reachable through aliases may be included,
under the alias name, if they are not explicitly excluded themselves.</p></dd>
</dl>
<p>Please continue reading with <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i>.</p>
</div>

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

150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
...
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
<li><a href="#14"><b class="cmd">immediate</b></a></li>
<li><a href="#15"><b class="cmd">validate</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#16"><b class="cmd">presence</b></a></li>
<li><a href="#17"><b class="cmd">when-complete</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#18"><b class="cmd">when-set</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#19"><b class="cmd">stop!</b></a></li>
<li><a href="#20"><b class="cmd">touch</b> <i class="arg">name</i> <i class="arg">value</i></a></li>
<li><a href="#21"><b class="cmd">touch</b> <i class="arg">name</i> <i class="arg">value</i></a></li>
<li><a href="#22"><b class="cmd">disallow</b> <i class="arg">name</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
................................................................................
<p>clause then ensures an error when interactive entry gets disabled,
either global, or for the specific command.</p></dd>
<dt><a name="20"><b class="cmd">touch</b> <i class="arg">name</i> <i class="arg">value</i></a></dt>
<dd><p>The returned callback sets the <i class="arg">name</i>d sibling parameter to the
specified <i class="arg">value</i>. A simple method of communication between
parameters of a command.</p>
<p>Useful for use with <b class="cmd">when-set</b> and/or <b class="cmd">when-complete</b></p></dd>
<dt><a name="21"><b class="cmd">touch</b> <i class="arg">name</i> <i class="arg">value</i></a></dt>
<dd><p>The returned callback sets the <i class="arg">name</i>d sibling parameter to the
specified <i class="arg">value</i>, if and only if that parameter exists. A simple
method of communication between parameters of a command, where the
sibling may not exists, depending on usage context.</p>
<p>Useful for use with <b class="cmd">when-set</b> and/or <b class="cmd">when-complete</b></p></dd>
<dt><a name="22"><b class="cmd">disallow</b> <i class="arg">name</i></a></dt>
<dd><p>This command simplifies the use of the parameter's <b class="method">lock</b>







|







 







|







150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
...
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
<li><a href="#14"><b class="cmd">immediate</b></a></li>
<li><a href="#15"><b class="cmd">validate</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#16"><b class="cmd">presence</b></a></li>
<li><a href="#17"><b class="cmd">when-complete</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#18"><b class="cmd">when-set</b> <i class="arg">cmdprefix</i></a></li>
<li><a href="#19"><b class="cmd">stop!</b></a></li>
<li><a href="#20"><b class="cmd">touch</b> <i class="arg">name</i> <i class="arg">value</i></a></li>
<li><a href="#21"><b class="cmd">touch?</b> <i class="arg">name</i> <i class="arg">value</i></a></li>
<li><a href="#22"><b class="cmd">disallow</b> <i class="arg">name</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
................................................................................
<p>clause then ensures an error when interactive entry gets disabled,
either global, or for the specific command.</p></dd>
<dt><a name="20"><b class="cmd">touch</b> <i class="arg">name</i> <i class="arg">value</i></a></dt>
<dd><p>The returned callback sets the <i class="arg">name</i>d sibling parameter to the
specified <i class="arg">value</i>. A simple method of communication between
parameters of a command.</p>
<p>Useful for use with <b class="cmd">when-set</b> and/or <b class="cmd">when-complete</b></p></dd>
<dt><a name="21"><b class="cmd">touch?</b> <i class="arg">name</i> <i class="arg">value</i></a></dt>
<dd><p>The returned callback sets the <i class="arg">name</i>d sibling parameter to the
specified <i class="arg">value</i>, if and only if that parameter exists. A simple
method of communication between parameters of a command, where the
sibling may not exists, depending on usage context.</p>
<p>Useful for use with <b class="cmd">when-set</b> and/or <b class="cmd">when-complete</b></p></dd>
<dt><a name="22"><b class="cmd">disallow</b> <i class="arg">name</i></a></dt>
<dd><p>This command simplifies the use of the parameter's <b class="method">lock</b>

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

155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
...
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<p>After attachment the actor will accept the following 3 commands:</p>
<pre class="example">
    history list ?n?  - Show last n history entries. Defaults to all.
    history clear     - Drop all history entries
    history limit ?n? - Limit history to 'n' entries (n &gt;= 0). Unlimited for n &lt; 0.
</pre>
<p>Under most circumstances the attachment is handled through the
<b class="cmd">shandler</b> method of officers. See <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b>, and
the <span class="sectref"><a href="#section3">Example</a></span> for more information.</p></dd>
<dt><a name="2"><b class="cmd">::cmdr::history</b> <b class="method">save-to</b> <i class="arg">path</i></a></dt>
<dd><p>When invoked this command sets the package-wide history save file used
by the commands to the <i class="arg">path</i>.</p>
<p>The result of the command is the empty string.</p></dd>
<dt><a name="3"><b class="cmd">::cmdr::history</b> <b class="method">initial-limit</b> <i class="arg">limit</i></a></dt>
<dd><p>When invoked this command sets the package-wide limit on history size
................................................................................
<p>Below an example on how to activate history for an officer.
The example was taken from the <b class="cmd">fx</b> application extending the
<b class="cmd">fossil</b> DVCS.</p>
<pre class="example">
cmdr history initial-limit 20
cmdr history save-to       ~/.fx_history
cmdr create fx::fx [file tail $::argv0] {
    shandler ::cmdr::history::attach
    [...]
}
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>Both the package(s) and this documentation will undoubtedly contain
bugs and other problems.







|







 







|







155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
...
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<p>After attachment the actor will accept the following 3 commands:</p>
<pre class="example">
    history list ?n?  - Show last n history entries. Defaults to all.
    history clear     - Drop all history entries
    history limit ?n? - Limit history to 'n' entries (n &gt;= 0). Unlimited for n &lt; 0.
</pre>
<p>Under most circumstances the attachment is handled through the
method <b class="cmd">custom-setup</b> of officers. See <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b>, and
the <span class="sectref"><a href="#section3">Example</a></span> for more information.</p></dd>
<dt><a name="2"><b class="cmd">::cmdr::history</b> <b class="method">save-to</b> <i class="arg">path</i></a></dt>
<dd><p>When invoked this command sets the package-wide history save file used
by the commands to the <i class="arg">path</i>.</p>
<p>The result of the command is the empty string.</p></dd>
<dt><a name="3"><b class="cmd">::cmdr::history</b> <b class="method">initial-limit</b> <i class="arg">limit</i></a></dt>
<dd><p>When invoked this command sets the package-wide limit on history size
................................................................................
<p>Below an example on how to activate history for an officer.
The example was taken from the <b class="cmd">fx</b> application extending the
<b class="cmd">fossil</b> DVCS.</p>
<pre class="example">
cmdr history initial-limit 20
cmdr history save-to       ~/.fx_history
cmdr create fx::fx [file tail $::argv0] {
    custom-setup ::cmdr::history::attach
    [...]
}
</pre>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>Both the package(s) and this documentation will undoubtedly contain
bugs and other problems.

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

133
134
135
136
137
138
139

140

141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
...
245
246
247
248
249
250
251


252


253
254
255
256
257
258
259
260
261
262
263
264


















265
266
267
268
269
270
271
272
273
274
275
276
...
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
<li><a href="#3"><b class="cmd">&lt;officer&gt;</b> <b class="method">children</b></a></li>
<li><a href="#4"><b class="cmd">&lt;officer&gt;</b> <b class="method">complete</b> <i class="arg">line</i></a></li>
<li><a href="#5"><b class="cmd">&lt;officer&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></li>
<li><a href="#6"><b class="cmd">&lt;officer&gt;</b> <b class="method">continued</b> <i class="arg">line</i></a></li>
<li><a href="#7"><b class="cmd">&lt;officer&gt;</b> <b class="method">default</b></a></li>
<li><a href="#8"><b class="cmd">&lt;officer&gt;</b> <b class="method">dispatch</b> <i class="arg">cmd</i></a></li>
<li><a href="#9"><b class="cmd">&lt;officer&gt;</b> <b class="method">do</b> <span class="opt">?<i class="arg">word</i>...?</span></a></li>

<li><a href="#10"><b class="cmd">&lt;officer&gt;</b> <b class="method">ehandler</b> <i class="arg">cmd</i></a></li>

<li><a href="#11"><b class="cmd">&lt;officer&gt;</b> <b class="method">exit</b></a></li>
<li><a href="#12"><b class="cmd">&lt;officer&gt;</b> <b class="method">extend</b> <i class="arg">path</i> <i class="arg">arguments</i> <i class="arg">action</i></a></li>
<li><a href="#13"><b class="cmd">&lt;officer&gt;</b> <b class="method">find</b> <i class="arg">path</i></a></li>
<li><a href="#14"><b class="cmd">&lt;officer&gt;</b> <b class="method">has</b> <i class="arg">name</i></a></li>
<li><a href="#15"><b class="cmd">&lt;officer&gt;</b> <b class="method">hasdefault</b></a></li>
<li><a href="#16"><b class="cmd">&lt;officer&gt;</b> <b class="method">help</b> <span class="opt">?<i class="arg">prefix</i>?</span></a></li>
<li><a href="#17"><b class="cmd">&lt;officer&gt;</b> <b class="method">known</b></a></li>
<li><a href="#18"><b class="cmd">&lt;officer&gt;</b> <b class="method">learn</b> <i class="arg">script</i></a></li>
<li><a href="#19"><b class="cmd">&lt;officer&gt;</b> <b class="method">lookup</b> <i class="arg">name</i></a></li>
<li><a href="#20"><b class="cmd">&lt;officer&gt;</b> <b class="method">prompt1</b></a></li>
<li><a href="#21"><b class="cmd">&lt;officer&gt;</b> <b class="method">prompt2</b></a></li>
<li><a href="#22"><b class="cmd">&lt;officer&gt;</b> <b class="method">report</b> <i class="arg">what</i> <i class="arg">data</i></a></li>
<li><a href="#23"><b class="cmd">&lt;officer&gt;</b> <b class="method">shell-exit</b> <i class="arg">config</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This package implements <em>officers</em>, the inner nodes of command
................................................................................
to the sub-ordinates of the officer. When done without error it
recursively invokes the chosen sub-ordinate to continue processing.</p>
<p>This represents the &quot;Dispatch&quot; phase of command line processing.</p>
<dl class="arguments">
<dt>string <i class="arg">word</i></dt>
<dd><p>The words of the command line to parse and match to parameters.</p></dd>
</dl></dd>


<dt><a name="10"><b class="cmd">&lt;officer&gt;</b> <b class="method">ehandler</b> <i class="arg">cmd</i></a></dt>


<dd><p>This method specifies a command prefix to wrap around the parsing of
the command line for the officer, and the execution of its action.</p>
<dl class="arguments">
<dt>cmd-prefix <i class="arg">cmd</i></dt>
<dd><p>A command prefix taking a single argument, a script. The command
prefix has to execute this script in its caller's context. The script
will parse words for the officer,m and perform its action. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i.e. in
an interactive shell run by the framework).</p></dd>
</dl></dd>


















<dt><a name="11"><b class="cmd">&lt;officer&gt;</b> <b class="method">exit</b></a></dt>
<dd><p>This hook-method for the main shell returns a boolean value indicating
whether the main shell was stopped and has to exit (<b class="const">true</b>), or
not (<b class="const">false</b>).</p></dd>
<dt><a name="12"><b class="cmd">&lt;officer&gt;</b> <b class="method">extend</b> <i class="arg">path</i> <i class="arg">arguments</i> <i class="arg">action</i></a></dt>
<dd><p>A convenience method to create a &quot;private&quot; command underneath this
officer, with the command name <i class="arg">path</i> (a list of names). Any
intermediate officers are created as needed. An error is thrown if any
of the intermediates already exist as a (non-extensible) private, or
if the last command already exists.</p>
<p>The arguments after the <i class="arg">path</i> match the constructor of
privates in number and semantics.</p>
................................................................................
<dt>cmd-prefix <i class="arg">action</i></dt>
<dd><p>The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the
hidden <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> container holding the private's
parameters. The result of the action, if there is any, is ignored by
the framework.</p></dd>
</dl></dd>
<dt><a name="13"><b class="cmd">&lt;officer&gt;</b> <b class="method">find</b> <i class="arg">path</i></a></dt>
<dd><p>This method returns the instance command of the sub-ordinate with the
given <i class="arg">path</i> (a list) of names. An error is thrown if such a sub-ordinate
does not exist. This is an extension of <b class="method">lookup</b> to paths of names.</p>
<p>An empty <i class="arg">path</i> is allowed and refers to the officer itself.</p>
<dl class="arguments">
<dt>string <i class="arg">path</i></dt>
<dd><p>The path of names to the sub-ordinate to look for.</p></dd>
</dl></dd>
<dt><a name="14"><b class="cmd">&lt;officer&gt;</b> <b class="method">has</b> <i class="arg">name</i></a></dt>
<dd><p>This method returns a boolean value indicating if this officer has a
sub-ordinate of the given <i class="arg">name</i> (<b class="const">true</b>), or not
(<b class="const">false</b>). See also method <b class="method">lookup</b>.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The name of the sub-ordinate to look for.</p></dd>
</dl></dd>
<dt><a name="15"><b class="cmd">&lt;officer&gt;</b> <b class="method">hasdefault</b></a></dt>
<dd><p>This method returns a boolean value indicating if this officer has a
default sub-ordinate (<b class="const">true</b>), or not (<b class="const">false</b>). See also
method <b class="method">default</b>.</p></dd>
<dt><a name="16"><b class="cmd">&lt;officer&gt;</b> <b class="method">help</b> <span class="opt">?<i class="arg">prefix</i>?</span></a></dt>
<dd><p>This method returns the help information for the officer and its
subordinates. The <i class="arg">prefix</i>, if specified provides the name of the
officer within the help data. It defaults to the empty string.
The result of the command is a structure of the form
described in section <span class="sectref"><a href="#section4">Help Information</a></span>.</p>
<dl class="arguments">
<dt>string <i class="arg">prefix</i></dt>
<dd><p>The name to use for the officer within the generated help.</p></dd>
</dl></dd>
<dt><a name="17"><b class="cmd">&lt;officer&gt;</b> <b class="method">known</b></a></dt>
<dd><p>This method returns a list containing the names of the subordinate
actors managed by this officer.
See also method <b class="method">children</b> which returns a list of instance
commands.
See also method <b class="method">lookup</b> to map names to instance commands.</p></dd>
<dt><a name="18"><b class="cmd">&lt;officer&gt;</b> <b class="method">learn</b> <i class="arg">script</i></a></dt>
<dd><p>This method takes a regular specification script and uses it to extend
the set of subordinates known to this officer. This is the same type
of script as used during construction, except here we dynamically
extend the officer.</p>
<dl class="arguments">
<dt>script <i class="arg">actions</i></dt>
<dd><p>The specification of the officer's additional subordinates.
Please read <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i> for the details.</p></dd>
</dl></dd>
<dt><a name="19"><b class="cmd">&lt;officer&gt;</b> <b class="method">lookup</b> <i class="arg">name</i></a></dt>
<dd><p>This method returns the instance command of the sub-ordinate with the
given <i class="arg">name</i>. An error is thrown if such a sub-ordinate does not
exist. See also method <b class="method">has</b>.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The name of the sub-ordinate to look for.</p></dd>
</dl></dd>
<dt><a name="20"><b class="cmd">&lt;officer&gt;</b> <b class="method">prompt1</b></a></dt>
<dd><p>This hook-method for the main shell returns the primary prompt string
to use.</p></dd>
<dt><a name="21"><b class="cmd">&lt;officer&gt;</b> <b class="method">prompt2</b></a></dt>
<dd><p>This hook-method for the main shell returns the secondary prompt
string for use within a continuation. As the main shell does not
support continuation lines it should not be invoked ever, and thus
always throws an error should it be invoked.</p></dd>
<dt><a name="22"><b class="cmd">&lt;officer&gt;</b> <b class="method">report</b> <i class="arg">what</i> <i class="arg">data</i></a></dt>
<dd><p>This hook-method for the main shell is responsible for the reporting
of the command results.</p>
<p>Its result is the empty string.</p>
<dl class="arguments">
<dt>enum <i class="arg">what</i></dt>
<dd><p>The result code of the command, one of <b class="const">ok</b>, or <b class="const">fail</b>.</p></dd>
<dt>any <i class="arg">data</i></dt>
<dd><p>The result of the command, or an error message in case of failure.</p></dd>
</dl></dd>
<dt><a name="23"><b class="cmd">&lt;officer&gt;</b> <b class="method">shell-exit</b> <i class="arg">config</i></a></dt>
<dd><p>This is the backend for a private ending the main shell,
be it automatically created by the pacge, or by a user.</p>
<p>The argument is the <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>
instance holding the parameters. The method does not
expect any and ignore it.</p></dd>
</dl>
</div>







>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|







 







>
>
|
>
>
|











>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|



|







 







|








|







|



|









|





|









|







|


|




|









|







133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
...
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
...
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
<li><a href="#3"><b class="cmd">&lt;officer&gt;</b> <b class="method">children</b></a></li>
<li><a href="#4"><b class="cmd">&lt;officer&gt;</b> <b class="method">complete</b> <i class="arg">line</i></a></li>
<li><a href="#5"><b class="cmd">&lt;officer&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></li>
<li><a href="#6"><b class="cmd">&lt;officer&gt;</b> <b class="method">continued</b> <i class="arg">line</i></a></li>
<li><a href="#7"><b class="cmd">&lt;officer&gt;</b> <b class="method">default</b></a></li>
<li><a href="#8"><b class="cmd">&lt;officer&gt;</b> <b class="method">dispatch</b> <i class="arg">cmd</i></a></li>
<li><a href="#9"><b class="cmd">&lt;officer&gt;</b> <b class="method">do</b> <span class="opt">?<i class="arg">word</i>...?</span></a></li>
<li><a href="#10"><b class="cmd">&lt;officer&gt;</b> <b class="method">intercept</b> <i class="arg">cmd</i></a></li>
<li><a href="#11"><b class="cmd">&lt;officer&gt;</b> <b class="method">ehandler</b> <i class="arg">cmd</i></a></li>
<li><a href="#12"><b class="cmd">&lt;officer&gt;</b> <b class="method">custom-setup</b> <i class="arg">cmd</i></a></li>
<li><a href="#13"><b class="cmd">&lt;officer&gt;</b> <b class="method">exit</b></a></li>
<li><a href="#14"><b class="cmd">&lt;officer&gt;</b> <b class="method">extend</b> <i class="arg">path</i> <i class="arg">arguments</i> <i class="arg">action</i></a></li>
<li><a href="#15"><b class="cmd">&lt;officer&gt;</b> <b class="method">find</b> <i class="arg">path</i></a></li>
<li><a href="#16"><b class="cmd">&lt;officer&gt;</b> <b class="method">has</b> <i class="arg">name</i></a></li>
<li><a href="#17"><b class="cmd">&lt;officer&gt;</b> <b class="method">hasdefault</b></a></li>
<li><a href="#18"><b class="cmd">&lt;officer&gt;</b> <b class="method">help</b> <span class="opt">?<i class="arg">prefix</i>?</span></a></li>
<li><a href="#19"><b class="cmd">&lt;officer&gt;</b> <b class="method">known</b></a></li>
<li><a href="#20"><b class="cmd">&lt;officer&gt;</b> <b class="method">learn</b> <i class="arg">script</i></a></li>
<li><a href="#21"><b class="cmd">&lt;officer&gt;</b> <b class="method">lookup</b> <i class="arg">name</i></a></li>
<li><a href="#22"><b class="cmd">&lt;officer&gt;</b> <b class="method">prompt1</b></a></li>
<li><a href="#23"><b class="cmd">&lt;officer&gt;</b> <b class="method">prompt2</b></a></li>
<li><a href="#24"><b class="cmd">&lt;officer&gt;</b> <b class="method">report</b> <i class="arg">what</i> <i class="arg">data</i></a></li>
<li><a href="#25"><b class="cmd">&lt;officer&gt;</b> <b class="method">shell-exit</b> <i class="arg">config</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This package implements <em>officers</em>, the inner nodes of command
................................................................................
to the sub-ordinates of the officer. When done without error it
recursively invokes the chosen sub-ordinate to continue processing.</p>
<p>This represents the &quot;Dispatch&quot; phase of command line processing.</p>
<dl class="arguments">
<dt>string <i class="arg">word</i></dt>
<dd><p>The words of the command line to parse and match to parameters.</p></dd>
</dl></dd>
<dt><a name="10"><b class="cmd">&lt;officer&gt;</b> <b class="method">intercept</b> <i class="arg">cmd</i></a></dt>
<dd></dd>
<dt><a name="11"><b class="cmd">&lt;officer&gt;</b> <b class="method">ehandler</b> <i class="arg">cmd</i></a></dt>
<dd><p><em>Note:</em> While the form <b class="method">ehandler</b> is still usable, it is
deprecated and will be removed in a future release.
This method specifies a command prefix to wrap around the parsing of
the command line for the officer, and the execution of its action.</p>
<dl class="arguments">
<dt>cmd-prefix <i class="arg">cmd</i></dt>
<dd><p>A command prefix taking a single argument, a script. The command
prefix has to execute this script in its caller's context. The script
will parse words for the officer,m and perform its action. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i.e. in
an interactive shell run by the framework).</p></dd>
</dl></dd>
<dt><a name="12"><b class="cmd">&lt;officer&gt;</b> <b class="method">custom-setup</b> <i class="arg">cmd</i></a></dt>
<dd><p>This method specifies a command prefix which will be run all the
regular setup of the officer from its specification is done, to
perform customizations.</p>
<p>An example of this can be seen in the package
<b class="package"><a href="cmdr_history.html">cmdr::history</a></b>. It provides a command
<b class="cmd">cmdr::history::attach</b> to add the history management commands to
the actor in question, suitable as argument to this method.</p>
<p>When called multiple times, the specified commands
accumulate. This makes it easy to specify several indepedent
customizations.</p>
<dl class="arguments">
<dt>cmd-prefix <i class="arg">cmd</i></dt>
<dd><p>A command prefix taking a single argument, the instance command of an
<b class="package">cmd::actor</b>. The command prefix has full access to this actor
and can modify it as it sees fit. The common use case will be the
extension of the actor with additional subordinates.</p></dd>
</dl></dd>
<dt><a name="13"><b class="cmd">&lt;officer&gt;</b> <b class="method">exit</b></a></dt>
<dd><p>This hook-method for the main shell returns a boolean value indicating
whether the main shell was stopped and has to exit (<b class="const">true</b>), or
not (<b class="const">false</b>).</p></dd>
<dt><a name="14"><b class="cmd">&lt;officer&gt;</b> <b class="method">extend</b> <i class="arg">path</i> <i class="arg">arguments</i> <i class="arg">action</i></a></dt>
<dd><p>A convenience method to create a &quot;private&quot; command underneath this
officer, with the command name <i class="arg">path</i> (a list of names). Any
intermediate officers are created as needed. An error is thrown if any
of the intermediates already exist as a (non-extensible) private, or
if the last command already exists.</p>
<p>The arguments after the <i class="arg">path</i> match the constructor of
privates in number and semantics.</p>
................................................................................
<dt>cmd-prefix <i class="arg">action</i></dt>
<dd><p>The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the
hidden <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> container holding the private's
parameters. The result of the action, if there is any, is ignored by
the framework.</p></dd>
</dl></dd>
<dt><a name="15"><b class="cmd">&lt;officer&gt;</b> <b class="method">find</b> <i class="arg">path</i></a></dt>
<dd><p>This method returns the instance command of the sub-ordinate with the
given <i class="arg">path</i> (a list) of names. An error is thrown if such a sub-ordinate
does not exist. This is an extension of <b class="method">lookup</b> to paths of names.</p>
<p>An empty <i class="arg">path</i> is allowed and refers to the officer itself.</p>
<dl class="arguments">
<dt>string <i class="arg">path</i></dt>
<dd><p>The path of names to the sub-ordinate to look for.</p></dd>
</dl></dd>
<dt><a name="16"><b class="cmd">&lt;officer&gt;</b> <b class="method">has</b> <i class="arg">name</i></a></dt>
<dd><p>This method returns a boolean value indicating if this officer has a
sub-ordinate of the given <i class="arg">name</i> (<b class="const">true</b>), or not
(<b class="const">false</b>). See also method <b class="method">lookup</b>.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The name of the sub-ordinate to look for.</p></dd>
</dl></dd>
<dt><a name="17"><b class="cmd">&lt;officer&gt;</b> <b class="method">hasdefault</b></a></dt>
<dd><p>This method returns a boolean value indicating if this officer has a
default sub-ordinate (<b class="const">true</b>), or not (<b class="const">false</b>). See also
method <b class="method">default</b>.</p></dd>
<dt><a name="18"><b class="cmd">&lt;officer&gt;</b> <b class="method">help</b> <span class="opt">?<i class="arg">prefix</i>?</span></a></dt>
<dd><p>This method returns the help information for the officer and its
subordinates. The <i class="arg">prefix</i>, if specified provides the name of the
officer within the help data. It defaults to the empty string.
The result of the command is a structure of the form
described in section <span class="sectref"><a href="#section4">Help Information</a></span>.</p>
<dl class="arguments">
<dt>string <i class="arg">prefix</i></dt>
<dd><p>The name to use for the officer within the generated help.</p></dd>
</dl></dd>
<dt><a name="19"><b class="cmd">&lt;officer&gt;</b> <b class="method">known</b></a></dt>
<dd><p>This method returns a list containing the names of the subordinate
actors managed by this officer.
See also method <b class="method">children</b> which returns a list of instance
commands.
See also method <b class="method">lookup</b> to map names to instance commands.</p></dd>
<dt><a name="20"><b class="cmd">&lt;officer&gt;</b> <b class="method">learn</b> <i class="arg">script</i></a></dt>
<dd><p>This method takes a regular specification script and uses it to extend
the set of subordinates known to this officer. This is the same type
of script as used during construction, except here we dynamically
extend the officer.</p>
<dl class="arguments">
<dt>script <i class="arg">actions</i></dt>
<dd><p>The specification of the officer's additional subordinates.
Please read <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i> for the details.</p></dd>
</dl></dd>
<dt><a name="21"><b class="cmd">&lt;officer&gt;</b> <b class="method">lookup</b> <i class="arg">name</i></a></dt>
<dd><p>This method returns the instance command of the sub-ordinate with the
given <i class="arg">name</i>. An error is thrown if such a sub-ordinate does not
exist. See also method <b class="method">has</b>.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The name of the sub-ordinate to look for.</p></dd>
</dl></dd>
<dt><a name="22"><b class="cmd">&lt;officer&gt;</b> <b class="method">prompt1</b></a></dt>
<dd><p>This hook-method for the main shell returns the primary prompt string
to use.</p></dd>
<dt><a name="23"><b class="cmd">&lt;officer&gt;</b> <b class="method">prompt2</b></a></dt>
<dd><p>This hook-method for the main shell returns the secondary prompt
string for use within a continuation. As the main shell does not
support continuation lines it should not be invoked ever, and thus
always throws an error should it be invoked.</p></dd>
<dt><a name="24"><b class="cmd">&lt;officer&gt;</b> <b class="method">report</b> <i class="arg">what</i> <i class="arg">data</i></a></dt>
<dd><p>This hook-method for the main shell is responsible for the reporting
of the command results.</p>
<p>Its result is the empty string.</p>
<dl class="arguments">
<dt>enum <i class="arg">what</i></dt>
<dd><p>The result code of the command, one of <b class="const">ok</b>, or <b class="const">fail</b>.</p></dd>
<dt>any <i class="arg">data</i></dt>
<dd><p>The result of the command, or an error message in case of failure.</p></dd>
</dl></dd>
<dt><a name="25"><b class="cmd">&lt;officer&gt;</b> <b class="method">shell-exit</b> <i class="arg">config</i></a></dt>
<dd><p>This is the backend for a private ending the main shell,
be it automatically created by the pacge, or by a user.</p>
<p>The argument is the <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>
instance holding the parameters. The method does not
expect any and ignore it.</p></dd>
</dl>
</div>

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

128
129
130
131
132
133
134

135

136
137
138
139
140
141
142
143
144
145
...
206
207
208
209
210
211
212


213


214
215
216
217
218
219
220
221
222
223
224
225







226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
<li>package require <b class="pkgname">cmdr::private</b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::cmdr::private</b> <b class="method">new</b> <i class="arg">super</i> <i class="arg">name</i> <i class="arg">arguments</i> <i class="arg">action</i></a></li>
<li><a href="#2"><b class="cmd">::cmdr::private</b> <b class="method">create</b> <i class="arg">obj</i> <i class="arg">super</i> <i class="arg">name</i> <i class="arg">arguments</i> <i class="arg">action</i></a></li>
<li><a href="#3"><b class="cmd">&lt;private&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></li>
<li><a href="#4"><b class="cmd">&lt;private&gt;</b> <b class="method">do</b> <span class="opt">?<i class="arg">word</i>...?</span></a></li>

<li><a href="#5"><b class="cmd">&lt;private&gt;</b> <b class="method">ehandler</b> <i class="arg">cmd</i></a></li>

<li><a href="#6"><b class="cmd">&lt;private&gt;</b> <b class="method">find</b> <i class="arg">path</i></a></li>
<li><a href="#7"><b class="cmd">&lt;private&gt;</b> <b class="method">help</b> <span class="opt">?<i class="arg">prefix</i>?</span></a></li>
<li><a href="#8"><b class="cmd">&lt;private&gt;</b> <b class="method">unknown</b> <i class="arg">m</i> <span class="opt">?<i class="arg">word</i>...?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This package implements <em>privates</em>, the leaves of command
................................................................................
to the parameters of the private, be they arguments, or options. When
done without error it invokes the action of the private with the
filled container of parameters.</p>
<dl class="arguments">
<dt>string <i class="arg">word</i></dt>
<dd><p>The words of the command line to parse and match to parameters.</p></dd>
</dl></dd>


<dt><a name="5"><b class="cmd">&lt;private&gt;</b> <b class="method">ehandler</b> <i class="arg">cmd</i></a></dt>


<dd><p>This method specifies a command prefix to wrap around the parsing of
the command line for the private, and the execution of its action.</p>
<dl class="arguments">
<dt>cmd-prefix <i class="arg">cmd</i></dt>
<dd><p>A command prefix taking a single argument, a script. The command
prefix has to execute this script in its caller's context. The script
will parse words for the private,m and perform its action. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i.e. in
an interactive shell run by the framework).</p></dd>
</dl></dd>







<dt><a name="6"><b class="cmd">&lt;private&gt;</b> <b class="method">find</b> <i class="arg">path</i></a></dt>
<dd><p>This method returns the instance command of the sub-ordinate with the
given <i class="arg">path</i> of names. An error is thrown if such a sub-ordinate
does not exist, i.e. whenever <i class="arg">path</i> is not empty, as a private
has no sub-ordinates, ever.</p>
<p>Note, as implied above, an empty <i class="arg">path</i> is allowed and
refers to the private itself.</p>
<p>See also method <b class="method">find</b> of <b class="package">cdmr::officer</b> for the
high-end of the recursion which may end in this method.</p>
<dl class="arguments">
<dt>string <i class="arg">path</i></dt>
<dd><p>The path of names to the sub-ordinate to look for.</p></dd>
</dl></dd>
<dt><a name="7"><b class="cmd">&lt;private&gt;</b> <b class="method">help</b> <span class="opt">?<i class="arg">prefix</i>?</span></a></dt>
<dd><p>This method returns the help information for the private and its
parameters. The <i class="arg">prefix</i>, if specified provides the name of the
private within the help data. It defaults to the empty string.
The result of the command is a structure of the form
described in section <span class="sectref"><a href="#section4">Help Information</a></span>.</p>
<dl class="arguments">
<dt>string <i class="arg">prefix</i></dt>
<dd><p>The name to use for the private within the generated help.</p></dd>
</dl></dd>
<dt><a name="8"><b class="cmd">&lt;private&gt;</b> <b class="method">unknown</b> <i class="arg">m</i> <span class="opt">?<i class="arg">word</i>...?</span></a></dt>
<dd><p>This method overrides the standard behaviour for unknown methods.
Instead of throwing an error they are routed to the hidden container
of the private's parameters, of class <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>.</p>
<dl class="arguments">
<dt>string <i class="arg">m</i></dt>
<dd><p>The name of the unknown method.</p></dd>
<dt>string <i class="arg">word</i></dt>







>
|
>
|
|
|







 







>
>
|
>
>
|











>
>
>
>
>
>
>
|












|









|







128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
...
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<li>package require <b class="pkgname">cmdr::private</b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::cmdr::private</b> <b class="method">new</b> <i class="arg">super</i> <i class="arg">name</i> <i class="arg">arguments</i> <i class="arg">action</i></a></li>
<li><a href="#2"><b class="cmd">::cmdr::private</b> <b class="method">create</b> <i class="arg">obj</i> <i class="arg">super</i> <i class="arg">name</i> <i class="arg">arguments</i> <i class="arg">action</i></a></li>
<li><a href="#3"><b class="cmd">&lt;private&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></li>
<li><a href="#4"><b class="cmd">&lt;private&gt;</b> <b class="method">do</b> <span class="opt">?<i class="arg">word</i>...?</span></a></li>
<li><a href="#5"><b class="cmd">&lt;private&gt;</b> <b class="method">intercept</b> <i class="arg">cmd</i></a></li>
<li><a href="#6"><b class="cmd">&lt;private&gt;</b> <b class="method">ehandler</b> <i class="arg">cmd</i></a></li>
<li><a href="#7"><b class="cmd">&lt;private&gt;</b> <b class="method">custom-setup</b> <i class="arg">cmd</i></a></li>
<li><a href="#8"><b class="cmd">&lt;private&gt;</b> <b class="method">find</b> <i class="arg">path</i></a></li>
<li><a href="#9"><b class="cmd">&lt;private&gt;</b> <b class="method">help</b> <span class="opt">?<i class="arg">prefix</i>?</span></a></li>
<li><a href="#10"><b class="cmd">&lt;private&gt;</b> <b class="method">unknown</b> <i class="arg">m</i> <span class="opt">?<i class="arg">word</i>...?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This package implements <em>privates</em>, the leaves of command
................................................................................
to the parameters of the private, be they arguments, or options. When
done without error it invokes the action of the private with the
filled container of parameters.</p>
<dl class="arguments">
<dt>string <i class="arg">word</i></dt>
<dd><p>The words of the command line to parse and match to parameters.</p></dd>
</dl></dd>
<dt><a name="5"><b class="cmd">&lt;private&gt;</b> <b class="method">intercept</b> <i class="arg">cmd</i></a></dt>
<dd></dd>
<dt><a name="6"><b class="cmd">&lt;private&gt;</b> <b class="method">ehandler</b> <i class="arg">cmd</i></a></dt>
<dd><p><em>Note:</em> While the form <b class="method">ehandler</b> is still usable, it is
deprecated and will be removed in a future release.
This method specifies a command prefix to wrap around the parsing of
the command line for the private, and the execution of its action.</p>
<dl class="arguments">
<dt>cmd-prefix <i class="arg">cmd</i></dt>
<dd><p>A command prefix taking a single argument, a script. The command
prefix has to execute this script in its caller's context. The script
will parse words for the private,m and perform its action. The command
prefix then has the responsbility to perform any custom cleanup action
required by the application using the framework to prevent leakage of
data between multiple commands executed one after the other (i.e. in
an interactive shell run by the framework).</p></dd>
</dl></dd>
<dt><a name="7"><b class="cmd">&lt;private&gt;</b> <b class="method">custom-setup</b> <i class="arg">cmd</i></a></dt>
<dd><p>This method specifies a command prefix which will be run all the
regular setup of an officer from its specification is done, to perform
customizations.</p>
<p>The <b class="cmd">&lt;private&gt;</b> here ignores such calls.</p>
<p>The method exists only to avoid having to special-case code the
places propagating these commands down the hierarchy.</p></dd>
<dt><a name="8"><b class="cmd">&lt;private&gt;</b> <b class="method">find</b> <i class="arg">path</i></a></dt>
<dd><p>This method returns the instance command of the sub-ordinate with the
given <i class="arg">path</i> of names. An error is thrown if such a sub-ordinate
does not exist, i.e. whenever <i class="arg">path</i> is not empty, as a private
has no sub-ordinates, ever.</p>
<p>Note, as implied above, an empty <i class="arg">path</i> is allowed and
refers to the private itself.</p>
<p>See also method <b class="method">find</b> of <b class="package">cdmr::officer</b> for the
high-end of the recursion which may end in this method.</p>
<dl class="arguments">
<dt>string <i class="arg">path</i></dt>
<dd><p>The path of names to the sub-ordinate to look for.</p></dd>
</dl></dd>
<dt><a name="9"><b class="cmd">&lt;private&gt;</b> <b class="method">help</b> <span class="opt">?<i class="arg">prefix</i>?</span></a></dt>
<dd><p>This method returns the help information for the private and its
parameters. The <i class="arg">prefix</i>, if specified provides the name of the
private within the help data. It defaults to the empty string.
The result of the command is a structure of the form
described in section <span class="sectref"><a href="#section4">Help Information</a></span>.</p>
<dl class="arguments">
<dt>string <i class="arg">prefix</i></dt>
<dd><p>The name to use for the private within the generated help.</p></dd>
</dl></dd>
<dt><a name="10"><b class="cmd">&lt;private&gt;</b> <b class="method">unknown</b> <i class="arg">m</i> <span class="opt">?<i class="arg">word</i>...?</span></a></dt>
<dd><p>This method overrides the standard behaviour for unknown methods.
Instead of throwing an error they are routed to the hidden container
of the private's parameters, of class <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>.</p>
<dl class="arguments">
<dt>string <i class="arg">m</i></dt>
<dd><p>The name of the unknown method.</p></dd>
<dt>string <i class="arg">word</i></dt>

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











































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293

<html><head>
<title>cmdr::table - Cmdr, a framework for command line parsing and dispatch</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.toc,UL.toc UL, UL.toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.section, LI.subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.requirements LI, UL.syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<! -- Generated from file 'cmdr_table.man' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2013-2016 Andreas Kupries   -- Copyright &copy; 2013-2016 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ cmdr::table.n
   -->
<body><div class="doctools">
<hr> [
   <a href="../../../../../../home">Home</a>
| <a href="../../toc.html">Main Table Of Contents</a>
| <a href="../toc.html">Table Of Contents</a>
| <a href="../../index.html">Keyword Index</a>
 ] <hr>
<h1 class="title">cmdr::table(n) 0.1 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr::table - Cmdr - Simple Table creation</p>
</div>
<div id="toc" class="section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="toc">
<li class="section"><a href="#toc">Table Of Contents</a></li>
<li class="section"><a href="#synopsis">Synopsis</a></li>
<li class="section"><a href="#section1">Description</a></li>
<li class="section"><a href="#section2">API</a></li>
<li class="section"><a href="#section3">Table API</a></li>
<li class="section"><a href="#section4">Bugs, Ideas, Feedback</a></li>
<li class="section"><a href="#keywords">Keywords</a></li>
<li class="section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="requirements">
<li>package require <b class="pkgname">cmdr::util</b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::cmdr::table</b> <b class="method">general</b> <i class="arg">var</i> <i class="arg">headers</i> <i class="arg">script</i></a></li>
<li><a href="#2"><b class="cmd">::cmdr::table</b> <b class="method">dict</b> <i class="arg">var</i> <i class="arg">script</i></a></li>
<li><a href="#3"><b class="cmd">::cmdr::table</b> <b class="method">borders</b> <span class="opt">?<i class="arg">enable</i>?</span></a></li>
<li><a href="#4"><b class="cmd">::cmdr::table</b> <b class="method">show</b> <span class="opt">?<i class="arg">cmd</i>...?</span></a></li>
<li><a href="#5"><b class="variable">t</b> <b class="method">borders</b> <span class="opt">?<i class="arg">enable</i>?</span></a></li>
<li><a href="#6"><b class="variable">t</b> <b class="method">headers</b> <span class="opt">?<i class="arg">enable</i>?</span></a></li>
<li><a href="#7"><b class="variable">t</b> <b class="method">style</b> <span class="opt">?<i class="arg">style</i>?</span></a></li>
<li><a href="#8"><b class="variable">t</b> <b class="method">add</b> <i class="arg">word</i>...</a></li>
<li><a href="#9"><b class="variable">t</b> <b class="method">+</b> <i class="arg">word</i>...</a></li>
<li><a href="#10"><b class="variable">t</b> <b class="method">+=</b> <i class="arg">word</i>...</a></li>
<li><a href="#11"><b class="variable">t</b> <b class="method">&lt;&lt;</b> <i class="arg">word</i>...</a></li>
<li><a href="#12"><b class="variable">t</b> <b class="method">&lt;=</b> <i class="arg">word</i>...</a></li>
<li><a href="#13"><b class="variable">t</b> <b class="method">show*</b> <span class="opt">?<i class="arg">cmd</i>?</span></a></li>
<li><a href="#14"><b class="variable">t</b> <b class="method">show</b> <span class="opt">?<i class="arg">cmd</i>?</span></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This package provides convenience commands for the easy creation of
simple tables.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">API</a></h2>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::cmdr::table</b> <b class="method">general</b> <i class="arg">var</i> <i class="arg">headers</i> <i class="arg">script</i></a></dt>
<dd><p>This command creates a new table with the words found in the list of
<i class="arg">headers</i> as the top row.
The <i class="arg">script</i> is run in the calling context to configure and
populate the table.
The table's object command is stored in the named <i class="arg">var</i> for access
by the <i class="arg">script</i>.
The result of the command is the table's object command.</p>
<dl class="arguments">
<dt>varname <i class="arg">var</i></dt>
<dd><p>The name of the variable in the calling scope the new table's object
command will be stored into.</p></dd>
<dt>list <i class="arg">headers</i></dt>
<dd><p>The list of words to user as column headers.</p></dd>
<dt>string <i class="arg">script</i></dt>
<dd><p>The tcl script to be run to configure and populate the table.</p></dd>
</dl></dd>
<dt><a name="2"><b class="cmd">::cmdr::table</b> <b class="method">dict</b> <i class="arg">var</i> <i class="arg">script</i></a></dt>
<dd><p>This command creates a new table intended for the display of a Tcl
dictionary.
It will have two columns titled <b class="const">Key</b> and <b class="const">Value</b>.
The <i class="arg">script</i> is run in the calling context to configure and
populate the table.
The table's object command is stored in the named <i class="arg">var</i> for access
by the <i class="arg">script</i>.
The result of the command is the table's object command.</p>
<dl class="arguments">
<dt>varname <i class="arg">var</i></dt>
<dd><p>The name of the variable in the calling scope the new table's object
command will be stored into.</p></dd>
<dt>string <i class="arg">script</i></dt>
<dd><p>The tcl script to be run to configure and populate the table.</p></dd>
</dl></dd>
<dt><a name="3"><b class="cmd">::cmdr::table</b> <b class="method">borders</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
<dd><p>This command configures the global <i class="term">border</i> setting, which
indicates the (non)use of borders by the tables of this package. Note
that changes to this setting influence only the tables created after
the change. Existing tables are not modified.</p>
<p>The result of the command is the new state of the setting.</p>
<p>If the command is called without an argument it simply returns the
current state of the setting, without making changes.</p>
<p>The default value for the setting is <b class="const">yes</b>.
Individual tables can override the global settings via their
<b class="method">borders</b> method, see <span class="sectref"><a href="#section3">Table API</a></span>.</p>
<dl class="arguments">
<dt>boolean <i class="arg">enable</i></dt>
<dd><p>The new value of the setting. Optional.</p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">::cmdr::table</b> <b class="method">show</b> <span class="opt">?<i class="arg">cmd</i>...?</span></a></dt>
<dd><p>This command configures the global <i class="term">show</i> setting, which is the
command prefix to use to print a table, if the table is not given a
specific command to use. Note that changes to this setting influence
only the tables created after the change. Existing tables are not
modified.</p>
<p>The result of the command is the new state of the setting</p>
<p>If the command is called without any arguments it simply
returns the current state of the setting, without making changes.</p>
<p>The default value for the setting is <b class="const">puts</b>.</p>
<dl class="arguments">
<dt>word <i class="arg">cmd</i></dt>
<dd><p>The command prefix to use for printing a table, as varargs.
The prefix will be invoked with a single argument, the string
representation of the table.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Table API</a></h2>
<p>This section lists the methods available for configuration and
population of the tables created by this package.</p>
<dl class="definitions">
<dt><a name="5"><b class="variable">t</b> <b class="method">borders</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
<dd><p>This is the table-level <i class="term">borders</i> setting. On creation a table
inherits the global setting (See <b class="cmd">::cmdr::table borders</b>). If
that is not to suit then this method can be used to override it.</p>
<p>The result of the method is the new state of the setting. When
called without argument no change is made and the result is the
current state of the setting.</p></dd>
<dt><a name="6"><b class="variable">t</b> <b class="method">headers</b> <span class="opt">?<i class="arg">enable</i>?</span></a></dt>
<dd><p>This method controls the visibility of the header row.  By default
general tables have the header row visisble, while for dict tables the
header is suppressed. This method allows the user to override these
defaults.</p>
<p>The result of the method is the new state of the setting. When
called without argument no change is made and the result is the
current state of the setting.</p></dd>
<dt><a name="7"><b class="variable">t</b> <b class="method">style</b> <span class="opt">?<i class="arg">style</i>?</span></a></dt>
<dd><p>This method allows the user to force the use of a completely custom
style.
Please see the documentation for the Tcllib package <b class="package">report</b>
on how to define table styles.</p>
<p>The package defines four styles of its own, all using the
common prefix <b class="const">cmdr/table/</b> in their names.
When no custom style is set the table chooses between these based on
its <i class="term">borders</i> and <i class="term">headers</i> settings.</p>
<p>The result of the method is the new state of the setting. When
called without argument then no change is made and the result is the
current state of the setting.</p>
<p>To revert from a custom style to the automatic choice invoke
this method with the empty string as the name of the style.</p></dd>
<dt><a name="8"><b class="variable">t</b> <b class="method">add</b> <i class="arg">word</i>...</a></dt>
<dd></dd>
<dt><a name="9"><b class="variable">t</b> <b class="method">+</b> <i class="arg">word</i>...</a></dt>
<dd></dd>
<dt><a name="10"><b class="variable">t</b> <b class="method">+=</b> <i class="arg">word</i>...</a></dt>
<dd></dd>
<dt><a name="11"><b class="variable">t</b> <b class="method">&lt;&lt;</b> <i class="arg">word</i>...</a></dt>
<dd></dd>
<dt><a name="12"><b class="variable">t</b> <b class="method">&lt;=</b> <i class="arg">word</i>...</a></dt>
<dd><p>This method adds a new row to the table, containing the given words.
If less words than headers are specified the row is padded with empty columns.
If too many words are specified the superfluous words are ignored.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="13"><b class="variable">t</b> <b class="method">show*</b> <span class="opt">?<i class="arg">cmd</i>?</span></a></dt>
<dd><p>This method formats the table into a string and then invokes the
command prefix <i class="arg">cmd</i> to print that string. The command prefix is
run at the global namespace and level. If the <i class="arg">cmd</i> is not
specified the global <i class="term">show</i> setting is used instead.</p>
<p>The result of the method is the empty string.</p></dd>
<dt><a name="14"><b class="variable">t</b> <b class="method">show</b> <span class="opt">?<i class="arg">cmd</i>?</span></a></dt>
<dd><p>This is a variant of method <b class="method">show*</b> above which not only prints
the table as above, but also destroys it.</p></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Bugs, Ideas, Feedback</a></h2>
<p>Both the package(s) and this documentation will undoubtedly contain
bugs and other problems.
Please report such at
<a href="https:/core.tcl.tk/akupries/cmdr">Cmdr Tickets</a>.</p>
<p>Please also report any ideas you may have for enhancements of
either package(s) and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<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>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2013-2016 Andreas Kupries<br>
Copyright &copy; 2013-2016 Documentation, Andreas Kupries</p>
</div>
</div></body></html>

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

114
115
116
117
118
119
120




121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
<td class="#tocright">Cmdr - (Partially internal) Command parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_private.html">cmdr::private</a></td>
<td class="#tocright">Cmdr - (Internal) Single command handling, options, and arguments</td>
</tr>
<tr class="#toceven" >




<td class="#tocleft" ><a href="files/cmdr_tty.html">cmdr::tty</a></td>
<td class="#tocright">Cmdr - Check if stdin is a tty, i.e. terminal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_util.html">cmdr::util</a></td>
<td class="#tocright">Cmdr - (Internal) General Utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_validate.html">cmdr::validate</a></td>
<td class="#tocright">Cmdr - Standard validation types for parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vcommon.html">cmdr::validate::common</a></td>
<td class="#tocright">Cmdr - Utilities for Validation Types</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_date.html">cmdr::validate::date</a></td>
<td class="#tocright">Cmdr - Validation type for dates</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_posint.html">cmdr::validate::posint</a></td>
<td class="#tocright">Cmdr - Validation type for positive integers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_time.html">cmdr::validate::time</a></td>
<td class="#tocright">Cmdr - Validation type for times (to the second)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_time_minute.html">cmdr::validate::time::minute</a></td>
<td class="#tocright">Cmdr - Validation type for times to the minute</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_amex.html">cmdr::validate::valtype::cc::amex</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::amex</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_discover.html">cmdr::validate::valtype::cc::discover</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::discover</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_mastercard.html">cmdr::validate::valtype::cc::mastercard</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::mastercard</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_visa.html">cmdr::validate::valtype::cc::visa</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::visa</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_ean13.html">cmdr::validate::valtype::gs1::ean13</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::gs1::ean13</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_iban.html">cmdr::validate::valtype::iban</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::iban</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_imei.html">cmdr::validate::valtype::imei</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::imei</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_isbn.html">cmdr::validate::valtype::isbn</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::isbn</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_luhn.html">cmdr::validate::valtype::luhn</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::luhn</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_luhn5.html">cmdr::validate::valtype::luhn5</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::luhn5</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_usnpi.html">cmdr::validate::valtype::usnpi</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::usnpi</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_verhoeff.html">cmdr::validate::valtype::verhoeff</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::verhoeff</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_weekday.html">cmdr::validate::weekday</a></td>
<td class="#tocright">Cmdr - Validation type for weekday names</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_year.html">cmdr::validate::year</a></td>
<td class="#tocright">Cmdr - Validation type for years</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_dev_completion.html">cmdr_dev~completion</a></td>
<td class="#tocright">Cmdr - Internals of command line completion</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_dev_dsl.html">cmdr_dev~dsl</a></td>
<td class="#tocright">Cmdr - Internals of DSL handling</td>
</tr>
</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|





114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<td class="#tocright">Cmdr - (Partially internal) Command parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_private.html">cmdr::private</a></td>
<td class="#tocright">Cmdr - (Internal) Single command handling, options, and arguments</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_table.html">cmdr::table</a></td>
<td class="#tocright">Cmdr - Simple Table creation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_tty.html">cmdr::tty</a></td>
<td class="#tocright">Cmdr - Check if stdin is a tty, i.e. terminal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_util.html">cmdr::util</a></td>
<td class="#tocright">Cmdr - (Internal) General Utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_validate.html">cmdr::validate</a></td>
<td class="#tocright">Cmdr - Standard validation types for parameters</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vcommon.html">cmdr::validate::common</a></td>
<td class="#tocright">Cmdr - Utilities for Validation Types</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_date.html">cmdr::validate::date</a></td>
<td class="#tocright">Cmdr - Validation type for dates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_posint.html">cmdr::validate::posint</a></td>
<td class="#tocright">Cmdr - Validation type for positive integers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_time.html">cmdr::validate::time</a></td>
<td class="#tocright">Cmdr - Validation type for times (to the second)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_time_minute.html">cmdr::validate::time::minute</a></td>
<td class="#tocright">Cmdr - Validation type for times to the minute</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_amex.html">cmdr::validate::valtype::cc::amex</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::amex</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_discover.html">cmdr::validate::valtype::cc::discover</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::discover</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_mastercard.html">cmdr::validate::valtype::cc::mastercard</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::mastercard</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_visa.html">cmdr::validate::valtype::cc::visa</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::visa</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_ean13.html">cmdr::validate::valtype::gs1::ean13</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::gs1::ean13</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_iban.html">cmdr::validate::valtype::iban</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::iban</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_imei.html">cmdr::validate::valtype::imei</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::imei</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_isbn.html">cmdr::validate::valtype::isbn</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::isbn</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_luhn.html">cmdr::validate::valtype::luhn</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::luhn</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_luhn5.html">cmdr::validate::valtype::luhn5</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::luhn5</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_usnpi.html">cmdr::validate::valtype::usnpi</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::usnpi</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_verhoeff.html">cmdr::validate::valtype::verhoeff</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::verhoeff</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vt_weekday.html">cmdr::validate::weekday</a></td>
<td class="#tocright">Cmdr - Validation type for weekday names</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vt_year.html">cmdr::validate::year</a></td>
<td class="#tocright">Cmdr - Validation type for years</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_dev_completion.html">cmdr_dev~completion</a></td>
<td class="#tocright">Cmdr - Internals of command line completion</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_dev_dsl.html">cmdr_dev~dsl</a></td>
<td class="#tocright">Cmdr - Internals of DSL handling</td>
</tr>
</table>
</dl><hr></body></html>

Changes to embedded/www/index.html.

18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<hr><table class="#idx" width="100%">
<tr class="#idxheader"><th colspan="2">
<a name="c1">Keywords: A</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key4"> arguments </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c2">Keywords: C</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key5"> command hierarchy </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key9"> command line completion </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key11"> command line handling </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key13"> command tree </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c3">Keywords: E</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key0"> editing command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c4">Keywords: H</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key8"> help for command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key6"> hierarchy of commands </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c5">Keywords: I</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key3"> interactive command shell </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c6">Keywords: O</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key1"> optional arguments </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key2"> options </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c7">Keywords: P</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key12"> parameters </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key10"> processing command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c8">Keywords: T</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key7"> tree of commands </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
</table>
</body></html>







|







|




|




|




|







|







|




|







|







|




|







|




|







|



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<hr><table class="#idx" width="100%">
<tr class="#idxheader"><th colspan="2">
<a name="c1">Keywords: A</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key4"> arguments </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c2">Keywords: C</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key5"> command hierarchy </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key9"> command line completion </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key11"> command line handling </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key13"> command tree </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c3">Keywords: E</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key0"> editing command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c4">Keywords: H</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key8"> help for command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key6"> hierarchy of commands </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c5">Keywords: I</a>
</th></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key3"> interactive command shell </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c6">Keywords: O</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key1"> optional arguments </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key2"> options </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c7">Keywords: P</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key12"> parameters </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxeven" valign=top>
<td class="#idxleft" width="35%"><a name="key10"> processing command line </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
<tr class="#idxheader"><th colspan="2">
<a name="c8">Keywords: T</a>
</th></tr>
<tr class="#idxodd" valign=top>
<td class="#idxleft" width="35%"><a name="key7"> tree of commands </a></td>
<td class="#idxright" width="65%">
<a href="doc/files/cmdr.html"> cmdr </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr-changes </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_dsl.html"> cmdr-spec-dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> &#183; <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> &#183; <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> &#183; <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> &#183; <a href="doc/files/cmdr_ask.html"> cmdr::ask </a> &#183; <a href="doc/files/cmdr_color.html"> cmdr::color </a> &#183; <a href="doc/files/cmdr_config.html"> cmdr::config </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_help_tcl.html"> cmdr::help::tcl </a> &#183; <a href="doc/files/cmdr_history.html"> cmdr::history </a> &#183; <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_pager.html"> cmdr::pager </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_table.html"> cmdr::table </a> &#183; <a href="doc/files/cmdr_tty.html"> cmdr::tty </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_vt_date.html"> cmdr::validate::date </a> &#183; <a href="doc/files/cmdr_vt_posint.html"> cmdr::validate::posint </a> &#183; <a href="doc/files/cmdr_vt_time.html"> cmdr::validate::time </a> &#183; <a href="doc/files/cmdr_vt_time_minute.html"> cmdr::validate::time::minute </a> &#183; <a href="doc/files/cmdr_vt_amex.html"> cmdr::validate::valtype::cc::amex </a> &#183; <a href="doc/files/cmdr_vt_discover.html"> cmdr::validate::valtype::cc::discover </a> &#183; <a href="doc/files/cmdr_vt_mastercard.html"> cmdr::validate::valtype::cc::mastercard </a> &#183; <a href="doc/files/cmdr_vt_visa.html"> cmdr::validate::valtype::cc::visa </a> &#183; <a href="doc/files/cmdr_vt_ean13.html"> cmdr::validate::valtype::gs1::ean13 </a> &#183; <a href="doc/files/cmdr_vt_iban.html"> cmdr::validate::valtype::iban </a> &#183; <a href="doc/files/cmdr_vt_imei.html"> cmdr::validate::valtype::imei </a> &#183; <a href="doc/files/cmdr_vt_isbn.html"> cmdr::validate::valtype::isbn </a> &#183; <a href="doc/files/cmdr_vt_luhn.html"> cmdr::validate::valtype::luhn </a> &#183; <a href="doc/files/cmdr_vt_luhn5.html"> cmdr::validate::valtype::luhn5 </a> &#183; <a href="doc/files/cmdr_vt_usnpi.html"> cmdr::validate::valtype::usnpi </a> &#183; <a href="doc/files/cmdr_vt_verhoeff.html"> cmdr::validate::valtype::verhoeff </a> &#183; <a href="doc/files/cmdr_vt_weekday.html"> cmdr::validate::weekday </a> &#183; <a href="doc/files/cmdr_vt_year.html"> cmdr::validate::year </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> &#183; <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a>
</td></tr>
</table>
</body></html>

Changes to embedded/www/toc.html.

114
115
116
117
118
119
120




121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
<td class="#tocright">Cmdr - (Partially internal) Command parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_private.html">cmdr::private</a></td>
<td class="#tocright">Cmdr - (Internal) Single command handling, options, and arguments</td>
</tr>
<tr class="#toceven" >




<td class="#tocleft" ><a href="doc/files/cmdr_tty.html">cmdr::tty</a></td>
<td class="#tocright">Cmdr - Check if stdin is a tty, i.e. terminal</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_util.html">cmdr::util</a></td>
<td class="#tocright">Cmdr - (Internal) General Utilities</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_validate.html">cmdr::validate</a></td>
<td class="#tocright">Cmdr - Standard validation types for parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vcommon.html">cmdr::validate::common</a></td>
<td class="#tocright">Cmdr - Utilities for Validation Types</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_date.html">cmdr::validate::date</a></td>
<td class="#tocright">Cmdr - Validation type for dates</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_posint.html">cmdr::validate::posint</a></td>
<td class="#tocright">Cmdr - Validation type for positive integers</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_time.html">cmdr::validate::time</a></td>
<td class="#tocright">Cmdr - Validation type for times (to the second)</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_time_minute.html">cmdr::validate::time::minute</a></td>
<td class="#tocright">Cmdr - Validation type for times to the minute</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_amex.html">cmdr::validate::valtype::cc::amex</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::amex</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_discover.html">cmdr::validate::valtype::cc::discover</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::discover</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_mastercard.html">cmdr::validate::valtype::cc::mastercard</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::mastercard</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_visa.html">cmdr::validate::valtype::cc::visa</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::visa</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_ean13.html">cmdr::validate::valtype::gs1::ean13</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::gs1::ean13</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_iban.html">cmdr::validate::valtype::iban</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::iban</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_imei.html">cmdr::validate::valtype::imei</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::imei</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_isbn.html">cmdr::validate::valtype::isbn</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::isbn</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_luhn.html">cmdr::validate::valtype::luhn</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::luhn</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_luhn5.html">cmdr::validate::valtype::luhn5</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::luhn5</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_usnpi.html">cmdr::validate::valtype::usnpi</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::usnpi</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_verhoeff.html">cmdr::validate::valtype::verhoeff</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::verhoeff</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_weekday.html">cmdr::validate::weekday</a></td>
<td class="#tocright">Cmdr - Validation type for weekday names</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_year.html">cmdr::validate::year</a></td>
<td class="#tocright">Cmdr - Validation type for years</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_dev_completion.html">cmdr_dev~completion</a></td>
<td class="#tocright">Cmdr - Internals of command line completion</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_dev_dsl.html">cmdr_dev~dsl</a></td>
<td class="#tocright">Cmdr - Internals of DSL handling</td>
</tr>
</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|



|





114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<td class="#tocright">Cmdr - (Partially internal) Command parameters</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_private.html">cmdr::private</a></td>
<td class="#tocright">Cmdr - (Internal) Single command handling, options, and arguments</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_table.html">cmdr::table</a></td>
<td class="#tocright">Cmdr - Simple Table creation</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_tty.html">cmdr::tty</a></td>
<td class="#tocright">Cmdr - Check if stdin is a tty, i.e. terminal</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_util.html">cmdr::util</a></td>
<td class="#tocright">Cmdr - (Internal) General Utilities</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_validate.html">cmdr::validate</a></td>
<td class="#tocright">Cmdr - Standard validation types for parameters</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vcommon.html">cmdr::validate::common</a></td>
<td class="#tocright">Cmdr - Utilities for Validation Types</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_date.html">cmdr::validate::date</a></td>
<td class="#tocright">Cmdr - Validation type for dates</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_posint.html">cmdr::validate::posint</a></td>
<td class="#tocright">Cmdr - Validation type for positive integers</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_time.html">cmdr::validate::time</a></td>
<td class="#tocright">Cmdr - Validation type for times (to the second)</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_time_minute.html">cmdr::validate::time::minute</a></td>
<td class="#tocright">Cmdr - Validation type for times to the minute</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_amex.html">cmdr::validate::valtype::cc::amex</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::amex</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_discover.html">cmdr::validate::valtype::cc::discover</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::discover</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_mastercard.html">cmdr::validate::valtype::cc::mastercard</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::mastercard</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_visa.html">cmdr::validate::valtype::cc::visa</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::cc::visa</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_ean13.html">cmdr::validate::valtype::gs1::ean13</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::gs1::ean13</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_iban.html">cmdr::validate::valtype::iban</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::iban</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_imei.html">cmdr::validate::valtype::imei</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::imei</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_isbn.html">cmdr::validate::valtype::isbn</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::isbn</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_luhn.html">cmdr::validate::valtype::luhn</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::luhn</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_luhn5.html">cmdr::validate::valtype::luhn5</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::luhn5</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_usnpi.html">cmdr::validate::valtype::usnpi</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::usnpi</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_verhoeff.html">cmdr::validate::valtype::verhoeff</a></td>
<td class="#tocright">Cmdr - Validation type facade for Tcllib valtype::verhoeff</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_weekday.html">cmdr::validate::weekday</a></td>
<td class="#tocright">Cmdr - Validation type for weekday names</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vt_year.html">cmdr::validate::year</a></td>
<td class="#tocright">Cmdr - Validation type for years</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_development.html">cmdr_development</a></td>
<td class="#tocright">Cmdr - The Developer's Guide</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_dev_completion.html">cmdr_dev~completion</a></td>
<td class="#tocright">Cmdr - Internals of command line completion</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_dev_dsl.html">cmdr_dev~dsl</a></td>
<td class="#tocright">Cmdr - Internals of DSL handling</td>
</tr>
</table>
</dl><hr></body></html>

Changes to help/help.tcl.

33
34
35
36
37
38
39

40
41
42
43
44
45
46
..
86
87
88
89
90
91
92

93

94
95
96
97
98
99
100
package require cmdr::pager

# # ## ### ##### ######## ############# #####################

debug define cmdr/help
debug level  cmdr/help
debug prefix cmdr/help {[debug caller] | }


# # ## ### ##### ######## ############# #####################
## Definition

namespace eval ::cmdr {
    namespace export help
    namespace ensemble create
................................................................................
	    alias h
	    alias ?
	    presence
	    when-set [lambda {p x} {
		# Invoke the help command which will be generated and
		# inserted below.
		set root [$p config context root]

		if {[$root exists *prefix*]} {

		    # Invoke help for the current command.
		    $root do help {*}[$root get *prefix*]
		} else {
		    # Invoke global help.
		    $root do help
		}
		# Prevent any other processing.







>







 







>

>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
..
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package require cmdr::pager

# # ## ### ##### ######## ############# #####################

debug define cmdr/help
debug level  cmdr/help
debug prefix cmdr/help {[debug caller] | }
debug prefix cmdr/help/short {| }

# # ## ### ##### ######## ############# #####################
## Definition

namespace eval ::cmdr {
    namespace export help
    namespace ensemble create
................................................................................
	    alias h
	    alias ?
	    presence
	    when-set [lambda {p x} {
		# Invoke the help command which will be generated and
		# inserted below.
		set root [$p config context root]

		if {[$root exists *prefix*]} {
		    debug.cmdr/help/short {/prefix $root ([$root get *prefix*])}
		    # Invoke help for the current command.
		    $root do help {*}[$root get *prefix*]
		} else {
		    # Invoke global help.
		    $root do help
		}
		# Prevent any other processing.

Changes to utilities/history.tcl.

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
...
137
138
139
140
141
142
143
144
145

146
147
148
149
150
151
152
    debug.cmdr/history {}
    variable limit $new
    return
}

proc ::cmdr::history::attach {actor} {
    debug.cmdr/history {}
    # cmdr shandler to use.
    # The actor is the officer to extend.

    # (***) Detect recursive entry through the extend statements
    # below. Use this to make 'history list' the default of the whole
    # history officer. And, of course, prevent infinite recursion.
    # Lastly, not leastly, add help describing the entire ensemble.

................................................................................
	} {
	    optional
	    default 0
	    validate integer
	}
    } ::cmdr::history::Show
    # This recurses into 'attach' through the automatic inheritance of
    # the shandler. See (***) above for the code intercepting the
    # recursion and preventing it from becoming infinite.


    $actor extend {history clear} {
	section Introspection {Command history}
	description {
	    Clear the saved history.
	}
    } ::cmdr::history::Clear







|







 







|
|
>







78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
...
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
    debug.cmdr/history {}
    variable limit $new
    return
}

proc ::cmdr::history::attach {actor} {
    debug.cmdr/history {}
    # For use by cmdr's custom-setup command.
    # The actor is the officer to extend.

    # (***) Detect recursive entry through the extend statements
    # below. Use this to make 'history list' the default of the whole
    # history officer. And, of course, prevent infinite recursion.
    # Lastly, not leastly, add help describing the entire ensemble.

................................................................................
	} {
	    optional
	    default 0
	    validate integer
	}
    } ::cmdr::history::Show
    # This recurses into 'attach' through the automatic inheritance of
    # the custom-setup hooks. See (***) above for the code
    # intercepting the recursion and preventing it from becoming
    # infinite.

    $actor extend {history clear} {
	section Introspection {Command history}
	description {
	    Clear the saved history.
	}
    } ::cmdr::history::Clear