cmdr
Check-in [3359a9b2c8]
Not logged in

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

Overview
Comment:Fixed help docs. Completed sequence figures, command-completion docs.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:3359a9b2c807455f3e22563cc2ada3164da4913a
User & Date: aku 2013-11-28 04:16:25
Context
2013-11-28
05:23
Moved document labeling (for toc, and sorting it) into definition. Tweaked labels to put internals at the end, intro and such at the top. Regenerated embedded docs. check-in: 15ea908829 user: aku tags: trunk
04:16
Fixed help docs. Completed sequence figures, command-completion docs. check-in: 3359a9b2c8 user: aku tags: trunk
2013-11-27
19:23
Extended information about help formats and how to write them. Documented the DSL "section" command. check-in: f30dbe0098 user: andreask tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to doc/cmdr_actor.man.

6
7
8
9
10
11
12
13



14
15
16
17
18
19
20
[titledesc [vset TITLE_ACTOR]]
[description]
[include parts/welcome.inc]

This internal package implements the base class containing functionality
common to [package cmdr::officer] and [package cmdr::private].

--TODO-- Describe the common parts (common blocks, super chain, completion support, DSL support)




[comment @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]
[section {Class API}]

The class API is not public. It is used internally by the framework
when parsing a command hierarchy specification to create the necessary
command instances.







|
>
>
>







6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[titledesc [vset TITLE_ACTOR]]
[description]
[include parts/welcome.inc]

This internal package implements the base class containing functionality
common to [package cmdr::officer] and [package cmdr::private].

[comment {
    @EDIT describe the common parts -- common blocks, super chain
    @EDIT describe the common parts -- completion support, DSL support
}]

[comment @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]
[section {Class API}]

The class API is not public. It is used internally by the framework
when parsing a command hierarchy specification to create the necessary
command instances.

Changes to doc/cmdr_help.man.

44
45
46
47
48
49
50
51
52
53
54
55
56
[list_end]
[list_end]

[section {Format Notes}]

The format [const by-category] looks for and uses the block
[const *category-order*] for when the user wishes to override the
natural order of used for the toplevel sections.

[para] This block has to be defined in the root of the command hierarchy.

[include parts/feedback.inc]
[manpage_end]







|





44
45
46
47
48
49
50
51
52
53
54
55
56
[list_end]
[list_end]

[section {Format Notes}]

The format [const by-category] looks for and uses the block
[const *category-order*] for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections.

[para] This block has to be defined in the root of the command hierarchy.

[include parts/feedback.inc]
[manpage_end]

Changes to doc/cmdr_helpformats.man.

54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
With the exception of [const by-category] the standard formats do not
use this argument. By providing it the format has access to the
toplevel common blocks, allowing for the transfer of custom
information from the specifiction to the format.

[para] [const by-category] for example looks for and uses the block
[const *category-order*] for when the user wishes to override the
natural order of used for the toplevel sections.

[arg_def integer width]
The number of columns to format the help towards.

[arg_def dictionary help]
A dictonary holding the help information to format. For more details
see section [sectref {Help Dictionary}].







|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
With the exception of [const by-category] the standard formats do not
use this argument. By providing it the format has access to the
toplevel common blocks, allowing for the transfer of custom
information from the specifiction to the format.

[para] [const by-category] for example looks for and uses the block
[const *category-order*] for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections.

[arg_def integer width]
The number of columns to format the help towards.

[arg_def dictionary help]
A dictonary holding the help information to format. For more details
see section [sectref {Help Dictionary}].

Changes to doc/cmdr_officer.man.

183
184
185
186
187
188
189
190
191
192
193
194
195
196
197

[list_begin arguments]
[arg_def script path]
The list of names specifying the route from this officer to the new
private. The last element is the name of the private command, while
the preceding names specify the intermediate officers.

[comment {--- TODO place into text block for inclusion --- see private - constructor}]
[arg_def script arguments]
The specification of the private's parameters.
Please read [term [vset TITLE_DSL_PARAMETER]] for the details.

[arg_def cmd-prefix action]
The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the







<







183
184
185
186
187
188
189

190
191
192
193
194
195
196

[list_begin arguments]
[arg_def script path]
The list of names specifying the route from this officer to the new
private. The last element is the name of the private command, while
the preceding names specify the intermediate officers.


[arg_def script arguments]
The specification of the private's parameters.
Please read [term [vset TITLE_DSL_PARAMETER]] for the details.

[arg_def cmd-prefix action]
The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the

Changes to doc/cmdr_parameter.man.

80
81
82
83
84
85
86

87


88
89
90
91
92
93
94

Most of the instance API is not public.

[para] It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it.


--TODO-- mark the methods which are public -- and/or write a separate document?



[list_begin definitions]
[comment {- - -- --- ----- -------- -------------}]
[call [cmd <parameter>] [method accept] [arg x]]

This method validates the string value [arg x]
against the validation type of the parameter and returns a







>
|
>
>







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

Most of the instance API is not public.

[para] It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it.

[comment {
    @EDIT mark the methods which are public
    @EDIT and/or write a separate document?
}]

[list_begin definitions]
[comment {- - -- --- ----- -------- -------------}]
[call [cmd <parameter>] [method accept] [arg x]]

This method validates the string value [arg x]
against the validation type of the parameter and returns a

Changes to doc/cmdr_private.man.

41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[list_begin arguments]
[arg_def object super]
The instance command of the actor (officer actually) which contains the new private.

[arg_def string name]
The user-visible name of the command.

[comment {--- TODO place into text block for inclusion --- see officer - extend}]
[arg_def script arguments]
The specification of the private's parameters.
Please read [term [vset TITLE_DSL_PRIVATE]] for the details.

[arg_def cmd-prefix action]
The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the
hidden [package cmdr::config] container holding the private's
parameters. The result of the action, if there is any, is ignored by
the framework.







<


|







41
42
43
44
45
46
47

48
49
50
51
52
53
54
55
56
57
[list_begin arguments]
[arg_def object super]
The instance command of the actor (officer actually) which contains the new private.

[arg_def string name]
The user-visible name of the command.


[arg_def script arguments]
The specification of the private's parameters.
Please read [term [vset TITLE_DSL_PARAMETER]] for the details.

[arg_def cmd-prefix action]
The command prefix to invoke when this private is selected for
execution.  It takes a single argument, the instance command of the
hidden [package cmdr::config] container holding the private's
parameters. The result of the action, if there is any, is ignored by
the framework.

Changes to doc/cmdr_vtypes.man.

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

[section Background]

Validation types are [vset PTITLE]'s answer to the necessity of moving
between the string and internal representations of
[package cmdr::parameter] instances.

Given a string representation they either return the associated
internal representation or raise an error, signaling that the input
was illegal. This part of their work, the verification of the legality
of the input string gave them their name.

[para] The general concept of [term {validation types}] was taken from
package [package snit], and modified to suit [vset PTITLE].

Where [package snit]'s types expect only a single method to validate
the input we expect all types to support an ensemble of [emph four]
methods.

One for the basic validation and transformation of the string, another
for the release of any internal representation so generated, plus two
more for delivery of a default representation and support for command
line completion.

The details (method names, signatures, etc.) can be found in section
[sectref API] below.

[para] As an example the implementation of the standard boolean
validation type is shown in section [sectref Example].








|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







16
17
18
19
20
21
22
23















24
25
26
27
28
29
30

[section Background]

Validation types are [vset PTITLE]'s answer to the necessity of moving
between the string and internal representations of
[package cmdr::parameter] instances.

[include parts/vtypes_general.inc]
















The details (method names, signatures, etc.) can be found in section
[sectref API] below.

[para] As an example the implementation of the standard boolean
validation type is shown in section [sectref Example].

Changes to doc/figures/architecture.png.

cannot compute difference between binary files

Changes to doc/figures/dsl_umlsequence.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
# -*- tcl -*- tcl.tk//DSL diagram//EN//1.0
## ====================================================================
## UML sequence diagram DSL, assembly level.

# Should have a grid parameter the others are based on.

set boxheight [10 mm]
set boxwidth  [30 mm]
set movelength [10 mm]


proc actor {code n {w {}}} {
    global $code

    if {$w eq ""} {
	upvar 1 boxwidth bw
	set w $bw
    }
    box "$n" width $w
    group { down ; line }
    move to [by [5 mm] e]
    set $code [last line end]
    return
}

proc skip {code} {
    global $code
    group { down ; line from [set $code] }
    set $code [last line end]
    return
}








proc action {code args} {
    global $code a$code
    box fillcolor white {*}$args with north at [set $code] width [3 mm] height [10 mm]
    set $code [last box south]
    set a$code [last box]
    return






|
|

>


|
>






|










>
>
>
>
>
>
>







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
# -*- tcl -*- tcl.tk//DSL diagram//EN//1.0
## ====================================================================
## UML sequence diagram DSL, assembly level.

# Should have a grid parameter the others are based on.

set boxheight  [10 mm]
set boxwidth   [30 mm]
set movelength [10 mm]
set actorstep  [5 mm]

proc actor {code n {w {}}} {
    global $code 
    variable actorstep
    if {$w eq ""} {
	upvar 1 boxwidth bw
	set w $bw
    }
    box "$n" width $w
    group { down ; line }
    move to [by $actorstep e]
    set $code [last line end]
    return
}

proc skip {code} {
    global $code
    group { down ; line from [set $code] }
    set $code [last line end]
    return
}

proc skip-> {code} {
    global $code
    group { down ; line -> from [set $code] }
    set $code [last line end]
    return
}

proc action {code args} {
    global $code a$code
    box fillcolor white {*}$args with north at [set $code] width [3 mm] height [10 mm]
    set $code [last box south]
    set a$code [last box]
    return

Changes to doc/figures/erd.png.

cannot compute difference between binary files

Changes to doc/figures/main-shell.dia.

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
# -*- tcl -*- tcl.tk//DSL diagram//EN//1.0
## DSL for uml sequences. Draft.

source [file join [file dirname [file normalize [info script]]] dsl_umlsequence.inc]

## ====================================================================

actor kn "known"            [20 mm]
actor kv "kinetcl::Valid"
actor cb "BASE"             [20 mm]
actor cv "kinetcl_validate" [35 mm]
actor cf "framesync"        [25 mm]
actor co "context"          [20 mm]

action  cf
label   cf can-sync-with(node)
action  cv
call-up cf cv "invoke"
action  kv
call-up cv kv "invoke"
action  kn
call-up kv kn "dict exists"

action kn
action kv
return-down kn kv true

skip   cb
action cb
call-down kv cb "@mark"

skip co
action co
call-down cb co "save handle"

action co
action cb
return-up co cb ""
action kv
return-up cb kv ""

action kv
action cv dashed fillcolor {}
action cv dashed fillcolor {}
action cv
return-down kv cv "TCL_OK"
action co
call-down cv co "get handle"
action co
action cv
return-up co cv "handle"

action cv
action cf dashed fillcolor {}
action cf dashed fillcolor {}
action cf dashed fillcolor {}
action cf dashed fillcolor {}
action cf
return-down cv cf "TCL_OK, handle"

# sync heights...

skip co
skip cb
skip cb
skip cb
skip kv
skip kv
skip kn
skip kn
skip kn
skip kn
stop co
stop cb
stop cf
stop cv
stop kv
stop kn

# close timelines

line \
    from [$kn by [10 mm] w] \
    to   [$co by [10 mm] e]

# outside annotation ... need symbolic locations.

set p [[0.5 between [2nd box ne] [3rd box nw]] by [5 mm] n]
line dashed \
    from $p \
    to   [[$p | $cb] by [5 mm] down]
text text C   with w at [last line start]
text text Tcl with e at [last line start]




|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
<
<
<
<
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







# -*- tcl -*- tcl.tk//DSL diagram//EN//1.0
## DSL for uml sequences. Draft.

source [file join [file dirname [file normalize [info script]]] dsl_umlsequence.inc]

set actorstep [10 mm]

## ====================================================================

actor repl    REPL
actor off     officer
actor act     officer/actor
actor pri     private
actor para    parameter
actor vt      "validation type"

action repl
action off
action act
skip   pri
skip   para
skip   vt

call-down repl off complete(line)
call-down off  act parse-line(buffer)

action repl
action off
action act
skip   pri
skip   para
skip   vt

return-up act off state

action repl
skip-> off
skip   act
skip   pri
skip   para
skip   vt

action repl
action off
skip   act
skip   pri
skip   para
skip   vt

label off  complete-words(state)

action repl
action off
skip   act
action pri
action para
action vt

call-down off  pri  complete-words(state)
call-down pri  para complete-words(state)
call-down para vt   complete(p,word)

action repl
action off
skip   act
action pri
action para
action vt

return-up vt   para completions
return-up para pri  completions
return-up pri  off  completions
return-up off  repl completions

stop repl
stop off
stop act
stop pri
stop para
stop vt

# close timelines

line \
    from [$repl by [10 mm] w] \
    to   [$vt   by [10 mm] e]







Added doc/figures/main-shell.png.

cannot compute difference between binary files

Changes to doc/figures/mini-shell.dia.

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
# -*- tcl -*- tcl.tk//DSL diagram//EN//1.0
## DSL for uml sequences. Draft.

source [file join [file dirname [file normalize [info script]]] dsl_umlsequence.inc]

## ====================================================================

actor kn "known"            [20 mm]
actor kv "kinetcl::Valid"
actor cb "BASE"             [20 mm]
actor cv "kinetcl_validate" [35 mm]
actor cf "framesync"        [25 mm]
actor co "context"          [20 mm]

action  cf
label   cf can-sync-with(node)
action  cv
call-up cf cv "invoke"
action  kv
call-up cv kv "invoke"
action  kn
call-up kv kn "dict exists"

action kn
action kv
return-down kn kv true

skip   cb
action cb
call-down kv cb "@mark"

skip co
action co
call-down cb co "save handle"

action co
action cb
return-up co cb ""
action kv
return-up cb kv ""

action kv
action cv dashed fillcolor {}
action cv dashed fillcolor {}
action cv
return-down kv cv "TCL_OK"
action co
call-down cv co "get handle"
action co
action cv
return-up co cv "handle"

action cv
action cf dashed fillcolor {}
action cf dashed fillcolor {}
action cf dashed fillcolor {}
action cf dashed fillcolor {}
action cf
return-down cv cf "TCL_OK, handle"

# sync heights...

skip co
skip cb
skip cb
skip cb
skip kv
skip kv
skip kn
skip kn
skip kn
skip kn
stop co
stop cb
stop cf
stop cv
stop kv
stop kn

# close timelines

line \
    from [$kn by [10 mm] w] \
    to   [$co by [10 mm] e]

# outside annotation ... need symbolic locations.

set p [[0.5 between [2nd box ne] [3rd box nw]] by [5 mm] n]
line dashed \
    from $p \
    to   [[$p | $cb] by [5 mm] down]
text text C   with w at [last line start]
text text Tcl with e at [last line start]




|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
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

















# -*- tcl -*- tcl.tk//DSL diagram//EN//1.0
## DSL for uml sequences. Draft.

source [file join [file dirname [file normalize [info script]]] dsl_umlsequence.inc]

set actorstep [10 mm]

## ====================================================================

actor repl "REPL"
actor cfg  "config"
actor ctx  "context"
actor para "parameter"
actor vt   "validation type"

action repl
action cfg
action ctx
skip   para
skip   vt

call-down repl cfg complete(line)
call-down cfg  ctx parse-line(buffer)

action repl
action ctx
action cfg
skip   para
skip   vt

return-up ctx cfg state

action repl
skip-> cfg
skip   ctx
skip   para
skip   vt

action repl
action cfg
skip   ctx
skip   para
skip   vt

label cfg  complete-repl(state)

action repl
action cfg
skip   ctx
action para
action vt

call-down cfg  para complete-words(state)
call-down para vt   complete(p,word)

action repl
action cfg
skip   ctx
action para
action vt

return-up vt   para completions
return-up para cfg  completions
return-up cfg  repl completions

stop repl
stop cfg
stop ctx
stop para
stop vt

# # close timelines

line \
    from [$repl by [10 mm] w] \
    to   [$vt   by [10 mm] e]

















Added doc/figures/mini-shell.png.

cannot compute difference between binary files

Changes to doc/figures/pkg_dependencies.png.

cannot compute difference between binary files

Changes to doc/parts/completion_main.inc.

17
18
19
20
21
22
23
24


25
26
27
28
29
30
31
32
..
98
99
100
101
102
103
104
105
106
107
108
[para] It may additional accept a hard-wired command [cmd .exit],
depending on the parse state (see flag [const doexit]).


[comment ==============================================================]
[subsection {Sequencing and Rules}]

This section is in essence the textual description of an UML sequence


diagram.

[para] Note that the state structure used by this code and referenced
in the text is explained in section [sectref {Parse State}].

[list_begin enumerated]

[enum] The main shell's core read-eval-print-loop calls on the
................................................................................
may govern the current word. Completion is done as the union of the
completion done by the individual parameters.

[para] Note that the automaton and its results can be precomputed,
this happens in the internal method [method CompletionGraph].

[list_end]

[list_end]

[comment { @EDIT: --- todo --- sequence diagram main shell completion }]







|
>
>
|







 







<

<
<
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
...
100
101
102
103
104
105
106

107


[para] It may additional accept a hard-wired command [cmd .exit],
depending on the parse state (see flag [const doexit]).


[comment ==============================================================]
[subsection {Sequencing and Rules}]

[para][image main-shell]

[para] This rest of this section is a textual description of the UML
sequence diagram shown above.

[para] Note that the state structure used by this code and referenced
in the text is explained in section [sectref {Parse State}].

[list_begin enumerated]

[enum] The main shell's core read-eval-print-loop calls on the
................................................................................
may govern the current word. Completion is done as the union of the
completion done by the individual parameters.

[para] Note that the automaton and its results can be precomputed,
this happens in the internal method [method CompletionGraph].

[list_end]

[list_end]


Changes to doc/parts/completion_mini.inc.

22
23
24
25
26
27
28
29


30
31
32
33
34
35
36
37
..
75
76
77
78
79
80
81
82
83
84
argument. Their names all start with a [const .]. They are, in
alphabetical order, [const .cancel], [const .exit], [const .help]
[const .ok], and [const .run].

[comment ==============================================================]
[subsection {Sequencing and Rules}]

This section is in essence the textual description of an UML sequence


diagram.

[para] Note that the state structure used by this code and referenced
in the text is explained in section [sectref {Parse State}].

[list_begin enumerated]

[enum] The mini shell's core read-eval-print-loop calls on the
................................................................................
presence option, which does not take an argument.

[para] The hardwired commands fall here implicitly under unknown
parameter.

[list_end]
[list_end]

[comment { @EDIT: --- todo --- sequence diagram mini shell completion }]








|
>
>
|







 







<
<
<
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
..
77
78
79
80
81
82
83



argument. Their names all start with a [const .]. They are, in
alphabetical order, [const .cancel], [const .exit], [const .help]
[const .ok], and [const .run].

[comment ==============================================================]
[subsection {Sequencing and Rules}]

[para][image mini-shell]

[para] This rest of this section is a textual description of the UML
sequence diagram shown above.

[para] Note that the state structure used by this code and referenced
in the text is explained in section [sectref {Parse State}].

[list_begin enumerated]

[enum] The mini shell's core read-eval-print-loop calls on the
................................................................................
presence option, which does not take an argument.

[para] The hardwired commands fall here implicitly under unknown
parameter.

[list_end]
[list_end]



Changes to doc/parts/dsl_officer.inc.

146
147
148
149
150
151
152

153

154
155
156
157
158
159
160
161
162
163
164
(See [term [vset TITLE_DSL_PRIVATE]]), and a command prefix to invoke
when it is chosen.

[para] This command prefix is called with a single argument, the
[package cmdr::config] instance holding the [term parameter]s of the
private.


@EDIT --TODO--(ref:backend-example-code)--


[comment {- - -- --- ----- -------- -------------}]
[call [cmd undocumented]]

This command excludes the [term officer] (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.

[list_end]







>
|
>











146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
(See [term [vset TITLE_DSL_PRIVATE]]), and a command prefix to invoke
when it is chosen.

[para] This command prefix is called with a single argument, the
[package cmdr::config] instance holding the [term parameter]s of the
private.

[comment {
    @EDIT --TODO--(ref:backend-example-code)--
}]

[comment {- - -- --- ----- -------- -------------}]
[call [cmd undocumented]]

This command excludes the [term officer] (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.

[list_end]

Changes to doc/parts/dsl_para_validation.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

[para] The answer to the necessity of moving between the [term string]
and [term {internal representations}] described in the previous
section are the [term {validation types}].

Given a [term {string representation}] they either return the
associated [term {internal representation}] or raise an error,
signaling that the string was illegal. This part of their work, the
verification of the legality of the input string gave them their name.

[comment {--TODO--(textblock shared with cmdr-vtypes.man)}]
[para] The general concept of [term {validation types}] was taken from
[package snit], and modified to suit [vset PTITLE].

Where snit's types expect only a single method to validate the input
[vset PTITLE] expects all types to support an ensemble of [emph four]
methods, one for the basic validation and transformation of the input,
another for the release of any internal representation so generated,
plus delivery of a default representation and support for command line
completion.

[list_begin definitions]

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

This command specifies a [term {validation type}] for the





|
<
<
<
<
<
<
<
<
<
<
<
<
<
<







1
2
3
4
5
6














7
8
9
10
11
12
13

[para] The answer to the necessity of moving between the [term string]
and [term {internal representations}] described in the previous
section are the [term {validation types}].

[include vtypes_general.inc]















[list_begin definitions]

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

This command specifies a [term {validation type}] for the

Added doc/parts/vtypes_general.inc.



































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Given a [term {string representation}] they either return the
associated [term {internal representation}] or raise an error,
signaling that the string was illegal. This part of their work, the
verification of the legality of the input string gave them their name.

[para] The general concept of [term {validation types}] was taken from
[package snit], and modified to suit [vset PTITLE].

Where snit's types expect only a single method to validate the input
[vset PTITLE] expects all types to support an ensemble of [emph four]
methods.

One for the basic validation and transformation of the input, another
for the release of any internal representation so generated, plus two
more for delivery of a default representation and support for command
line completion.

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

299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
...
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
...
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
...
449
450
451
452
453
454
455



456
457
458
459
460
461
462
463
464
465
466
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP
For availability please read \fICmdr - How To Get The Sources\fR\&.
.PP
This internal package implements the base class containing functionality
common to \fBcmdr::officer\fR and \fBcmdr::private\fR\&.
--TODO-- Describe the common parts (common blocks, super chain, completion support, DSL support)
.SH "CLASS API"
The class API is not public\&. It is used internally by the framework
when parsing a command hierarchy specification to create the necessary
command instances\&.
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework
................................................................................
Most of the instance API is not public\&.
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework
has no need for it\&.
.TP
\fB<actor>\fR \fBcompletions\fR \fIparse\fR \fIcmdlist\fR



This method is given the completion state \fIparse\fR of a partial
command line and a list of completions at the end of the line\&. It
returns a list of strings which are the valid completions of the whole
line, properly quoted\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.
.sp
-- TODO -- Describe the state fields and their meaning\&.
.TP
list \fIcmdlist\fR
List of valid completions\&.
.RE
.TP
\fB<actor>\fR \fBdescription\fR
This accessor method returns the human-readable description of the
................................................................................
The name of the common block to extend\&.
.TP
any \fIdata\fR
The data to add to the block\&.
.RE
.TP
\fB<actor>\fR \fBmatch\fR \fIparse\fR \fIcmdlist\fR



This method is given the completion state \fIparse\fR of a partial
command line and a list of possible completions\&. The result is a list
of valid completions, filtered against the current word in the command
line\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.
.sp
-- TODO -- Describe the state fields and their meaning\&.
.TP
list \fIcmdlist\fR
List of possible completions\&.
.RE
.TP
\fB<actor>\fR \fBname\fR
This accessor method returns the name of the actor\&.
................................................................................
.RS
.TP
string \fIname\fR
The name to remember\&.
.RE
.TP
\fB<actor>\fR \fBparse-line\fR \fIline\fR



This method is the main helper to begin command completion\&. Given the
entered command \fIline\fR it parses it into words and returns a parse
structure as is taken by all other methods taking part in command
completion\&.
.RS
.TP
string \fIline\fR
The command line\&.
.RE
.TP
\fB<actor>\fR \fBroot\fR







<







 







>
>
>
|
|
|
|





<
<







 







>
>
>
|
|
|
<





<
<







 







>
>
>
|
|
|
|







299
300
301
302
303
304
305

306
307
308
309
310
311
312
...
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
...
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
...
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
.PP
Welcome to the Cmdr project, written by Andreas Kupries\&.
.PP
For availability please read \fICmdr - How To Get The Sources\fR\&.
.PP
This internal package implements the base class containing functionality
common to \fBcmdr::officer\fR and \fBcmdr::private\fR\&.

.SH "CLASS API"
The class API is not public\&. It is used internally by the framework
when parsing a command hierarchy specification to create the necessary
command instances\&.
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework
................................................................................
Most of the instance API is not public\&.
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework
has no need for it\&.
.TP
\fB<actor>\fR \fBcompletions\fR \fIparse\fR \fIcmdlist\fR
This method is part of command line completion\&. For the details of
its workings please read \fICmdr - Internals of command line completion\fR\&.
.sp
Given the completion state \fIparse\fR of a partial command
line and a list of completions at the end of the line it returns a
list of strings which are the valid completions of the whole line,
properly quoted\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.


.TP
list \fIcmdlist\fR
List of valid completions\&.
.RE
.TP
\fB<actor>\fR \fBdescription\fR
This accessor method returns the human-readable description of the
................................................................................
The name of the common block to extend\&.
.TP
any \fIdata\fR
The data to add to the block\&.
.RE
.TP
\fB<actor>\fR \fBmatch\fR \fIparse\fR \fIcmdlist\fR
This method is part of command line completion\&. For the details of
its workings please read \fICmdr - Internals of command line completion\fR\&.
.sp
Given the completion state \fIparse\fR of a partial command
line and a list of possible completions it returns a list of valid
completions, filtered against the current word in the command line\&.

.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.


.TP
list \fIcmdlist\fR
List of possible completions\&.
.RE
.TP
\fB<actor>\fR \fBname\fR
This accessor method returns the name of the actor\&.
................................................................................
.RS
.TP
string \fIname\fR
The name to remember\&.
.RE
.TP
\fB<actor>\fR \fBparse-line\fR \fIline\fR
This method is part of command line completion\&. For the details of
its workings please read \fICmdr - Internals of command line completion\fR\&.
.sp
Is the main helper to begin command completion\&. Given the
entered command \fIline\fR it parses it into words and returns a
parse structure as is taken by all other methods taking part in
command completion\&.
.RS
.TP
string \fIline\fR
The command line\&.
.RE
.TP
\fB<actor>\fR \fBroot\fR

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

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
.RE
.TP
\fB<config>\fR \fBarguments\fR
This method returns a list of parameter names,
for the parameters which are arguments\&.
.TP
\fB<config>\fR \fBcomplete\fR \fIline\fR
This hook-method for the mini-shell is responsible




for computing the set of completions for the
entered \fIline\fR\&.
.RS
.TP
string \fIline\fR
The command line to complete\&.
.RE
.TP
\fB<config>\fR \fBcomplete-repl\fR \fIparse\fR




This internal method is used by the hook-method \fBcomplete\fR
for the mini-shell, see above\&. It is given the completion
state \fIparse\fR of a partial command line and returns a
list of strings which are the valid completions at this point\&.

.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.
.sp
-- TODO -- Describe the state fields and their meaning\&.
.RE
.TP
\fB<config>\fR \fBcomplete-words\fR \fIparse\fR




This method is given the completion state \fIparse\fR of a partial
command line and returns a list of strings which are the valid
completions at this point\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.
.sp
-- TODO -- Describe the state fields and their meaning\&.
.RE
.TP
\fB<config>\fR \fBcontinued\fR \fIline\fR
This hook-method for the mini-shell is responsible for the detection
of a continuation-line in the entered command \fIline\fR\&. It always
returns the boolean value \fBfalse\fR as the mini-shell does not
support continuation lines\&.







|
>
>
>
>
|
|







>
>
>
>
|
<
|
|
>





<
<



>
>
>
>
|
|






<
<







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
.RE
.TP
\fB<config>\fR \fBarguments\fR
This method returns a list of parameter names,
for the parameters which are arguments\&.
.TP
\fB<config>\fR \fBcomplete\fR \fIline\fR
This method is part of the mini shell command line
completion\&. For the details of its workings please read
\fICmdr - Internals of command line completion\fR\&.
.sp
This hook-method, the entrypoint for the repl
is responsible for computing the set of completions
for the entered \fIline\fR\&.
.RS
.TP
string \fIline\fR
The command line to complete\&.
.RE
.TP
\fB<config>\fR \fBcomplete-repl\fR \fIparse\fR
This internal method is part of the mini shell command line
completion\&. For the details of its workings please read
\fICmdr - Internals of command line completion\fR\&.
.sp
It is used by the hook-method \fBcomplete\fR (see above)\&.

Given the completion state \fIparse\fR of a partial command
line it returns a list of strings which are the valid
completions at this point\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.


.RE
.TP
\fB<config>\fR \fBcomplete-words\fR \fIparse\fR
This method is part of the main shell command line
completion\&. For the details of its workings please read
\fICmdr - Internals of command line completion\fR\&.
.sp
Given the completion state \fIparse\fR of a partial
command line it returns a list of strings which are the valid
completions at this point\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.


.RE
.TP
\fB<config>\fR \fBcontinued\fR \fIline\fR
This hook-method for the mini-shell is responsible for the detection
of a continuation-line in the entered command \fIline\fR\&. It always
returns the boolean value \fBfalse\fR as the mini-shell does not
support continuation lines\&.

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

401
402
403
404
405
406
407
408

409



410
411
412
413
414
415
416
...
497
498
499
500
501
502
503
504

505



506
507
508
509
510
511
512
.PP
To this end this shell accepts the names of all subordinate
commands known to the officer as commands\&.
.PP
It may additional accept a hard-wired command \fB\&.exit\fR,
depending on the parse state (see flag \fBdoexit\fR)\&.
.SS "SEQUENCING AND RULES"
This section is in essence the textual description of an UML sequence

diagram\&.



.PP
Note that the state structure used by this code and referenced
in the text is explained in section \fBParse State\fR\&.
.IP [1]
The main shell's core read-eval-print-loop calls on the
instance method \fBcomplete\fR for command-line completion,
providing the text of the buffer to complete at the end)\&.
................................................................................
The sole exception to this are \fIpresence options\fR which do not
take any argument\&.
.PP
Similarly none of the hardwired commands take an
argument\&. Their names all start with a \fB\&.\fR\&. They are, in
alphabetical order, \fB\&.cancel\fR, \fB\&.exit\fR, \fB\&.help\fR \fB\&.ok\fR, and \fB\&.run\fR\&.
.SS "SEQUENCING AND RULES"
This section is in essence the textual description of an UML sequence

diagram\&.



.PP
Note that the state structure used by this code and referenced
in the text is explained in section \fBParse State\fR\&.
.IP [1]
The mini shell's core read-eval-print-loop calls on the
instance method \fBcomplete\fR for command-line completion,
providing the text of the buffer to complete at the end)\&.







<
>
|
>
>
>







 







<
>
|
>
>
>







401
402
403
404
405
406
407

408
409
410
411
412
413
414
415
416
417
418
419
...
500
501
502
503
504
505
506

507
508
509
510
511
512
513
514
515
516
517
518
.PP
To this end this shell accepts the names of all subordinate
commands known to the officer as commands\&.
.PP
It may additional accept a hard-wired command \fB\&.exit\fR,
depending on the parse state (see flag \fBdoexit\fR)\&.
.SS "SEQUENCING AND RULES"

.PP
IMAGE: main-shell
.PP
This rest of this section is a textual description of the UML
sequence diagram shown above\&.
.PP
Note that the state structure used by this code and referenced
in the text is explained in section \fBParse State\fR\&.
.IP [1]
The main shell's core read-eval-print-loop calls on the
instance method \fBcomplete\fR for command-line completion,
providing the text of the buffer to complete at the end)\&.
................................................................................
The sole exception to this are \fIpresence options\fR which do not
take any argument\&.
.PP
Similarly none of the hardwired commands take an
argument\&. Their names all start with a \fB\&.\fR\&. They are, in
alphabetical order, \fB\&.cancel\fR, \fB\&.exit\fR, \fB\&.help\fR \fB\&.ok\fR, and \fB\&.run\fR\&.
.SS "SEQUENCING AND RULES"

.PP
IMAGE: mini-shell
.PP
This rest of this section is a textual description of the UML
sequence diagram shown above\&.
.PP
Note that the state structure used by this code and referenced
in the text is explained in section \fBParse State\fR\&.
.IP [1]
The mini shell's core read-eval-print-loop calls on the
instance method \fBcomplete\fR for command-line completion,
providing the text of the buffer to complete at the end)\&.

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

409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
specification \fIscript\fR of private commands
(See \fICmdr - Private Specification Language\fR), and a command prefix to invoke
when it is chosen\&.
.sp
This command prefix is called with a single argument, the
\fBcmdr::config\fR instance holding the \fIparameter\fRs of the
private\&.
--TODO--(ref:backend-example-code)--
.TP
\fBundocumented\fR
This command excludes the \fIofficer\fR (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\&.
.PP







<







409
410
411
412
413
414
415

416
417
418
419
420
421
422
specification \fIscript\fR of private commands
(See \fICmdr - Private Specification Language\fR), and a command prefix to invoke
when it is chosen\&.
.sp
This command prefix is called with a single argument, the
\fBcmdr::config\fR instance holding the \fIparameter\fRs of the
private\&.

.TP
\fBundocumented\fR
This command excludes the \fIofficer\fR (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\&.
.PP

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

531
532
533
534
535
536
537

538
539
540
541
542
543
544
545
546
547
548
signaling that the string was illegal\&. This part of their work, the
verification of the legality of the input string gave them their name\&.
.PP
The general concept of \fIvalidation types\fR was taken from
\fBsnit\fR, and modified to suit Cmdr\&.
Where snit's types expect only a single method to validate the input
Cmdr expects all types to support an ensemble of \fIfour\fR

methods, one for the basic validation and transformation of the input,
another for the release of any internal representation so generated,
plus delivery of a default representation and support for command line
completion\&.
.TP
\fBvalidate\fR \fIcmdprefix\fR
This command specifies a \fIvalidation type\fR for the
\fIparameter\fR, in the form of a command prefix (or the name of one
of the builtin types, see package \fBcmdr::validate\fR)\&.
The set of methods this callback has to support, their signatures,
etc\&. are all explained in \fICmdr - Writing custom validation types\fR\&. This document







>
|
|
|
|







531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
signaling that the string was illegal\&. This part of their work, the
verification of the legality of the input string gave them their name\&.
.PP
The general concept of \fIvalidation types\fR was taken from
\fBsnit\fR, and modified to suit Cmdr\&.
Where snit's types expect only a single method to validate the input
Cmdr expects all types to support an ensemble of \fIfour\fR
methods\&.
One for the basic validation and transformation of the input, another
for the release of any internal representation so generated, plus two
more for delivery of a default representation and support for command
line completion\&.
.TP
\fBvalidate\fR \fIcmdprefix\fR
This command specifies a \fIvalidation type\fR for the
\fIparameter\fR, in the form of a command prefix (or the name of one
of the builtin types, see package \fBcmdr::validate\fR)\&.
The set of methods this callback has to support, their signatures,
etc\&. are all explained in \fICmdr - Writing custom validation types\fR\&. This document

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

247
248
249
250
251
252
253


254
255
256
257
258
259
260
...
306
307
308
309
310
311
312













313
314
315
316
317
318
319
\fBdescription\fR \fItext\fR
.sp
\fBinput\fR \fIname\fR \fIhelp\fR \fIscript\fR
.sp
\fBinteractive\fR
.sp
\fBoption\fR \fIname\fR \fIhelp\fR \fIscript\fR


.sp
\fBstate\fR \fIname\fR \fIhelp\fR \fIscript\fR
.sp
\fBundocumented\fR
.sp
\fBuse\fR \fIname\fR
.sp
................................................................................
.TP
\fBoption\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds an \fIoption\fR (i\&.e\&. named) \fIparameter\fR to
the \fIprivate\fR, with description \fIhelp\fR and its specification
\fIscript\fR of parameter commands as described in
\fICmdr - Parameter Specification Language\fR\&.
.TP













\fBstate\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds a \fIstate\fR (i\&.e\&. hidden) \fIparameter\fR to the
\fIprivate\fR, with description \fIhelp\fR and its specification
\fIscript\fR of parameter commands as described in
\fICmdr - Parameter Specification Language\fR\&.
.TP
\fBundocumented\fR







>
>







 







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







247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
...
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
\fBdescription\fR \fItext\fR
.sp
\fBinput\fR \fIname\fR \fIhelp\fR \fIscript\fR
.sp
\fBinteractive\fR
.sp
\fBoption\fR \fIname\fR \fIhelp\fR \fIscript\fR
.sp
\fBsection\fR \fIword\fR\&.\&.\&.
.sp
\fBstate\fR \fIname\fR \fIhelp\fR \fIscript\fR
.sp
\fBundocumented\fR
.sp
\fBuse\fR \fIname\fR
.sp
................................................................................
.TP
\fBoption\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds an \fIoption\fR (i\&.e\&. named) \fIparameter\fR to
the \fIprivate\fR, with description \fIhelp\fR and its specification
\fIscript\fR of parameter commands as described in
\fICmdr - Parameter Specification Language\fR\&.
.TP
\fBsection\fR \fIword\fR\&.\&.\&.
This command places the \fIprivate\fR into a help section/category,
for use by the standard help format \fIby-category\fR
(See \fICmdr - (Internal) Utilities for help text formatting and setup\fR)\&.
.sp
The section/category is specified as a list of words, each
denoting part of the path to the section\&. This means that the last
word is the section of the private, with the preceding words the
sections it is nested in\&.
.sp
Multiple calls are possible and accumulate\&. In other words,
the private can be placed in more than one section/category\&.
.TP
\fBstate\fR \fIname\fR \fIhelp\fR \fIscript\fR
This command adds a \fIstate\fR (i\&.e\&. hidden) \fIparameter\fR to the
\fIprivate\fR, with description \fIhelp\fR and its specification
\fIscript\fR of parameter commands as described in
\fICmdr - Parameter Specification Language\fR\&.
.TP
\fBundocumented\fR

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

252
253
254
255
256
257
258







259

260
261
262
263
264
265
266
...
278
279
280
281
282
283
284






285
286
287
288
289
290
291
.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 internal package implements the four standard help formats







\fBfull\fR, \fBshort\fR, \fBlist\fR, and \fBby-category\fR\&.

.PP
It provides a single utility command used by the other parts of
the framework to add a \fBhelp\fR command to any
\fBcmdr::actor\fR requiring such\&.
.SH API
.TP
\fB::cmdr::help\fR \fBauto\fR \fIactor\fR
................................................................................
terminal\&.
.RS
.TP
\fBcmdr::actor\fR \fIactor\fR
The \fBcmdr::actor\fR instance to be extended with \fBhelp\fR\&.
.RE
.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







>
>
>
>
>
>
>
|
>







 







>
>
>
>
>
>







252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
...
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
.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 internal package implements the four standard help formats
.IP [1]
\fBfull\fR,
.IP [2]
\fBshort\fR,
.IP [3]
\fBlist\fR, and
.IP [4]
\fBby-category\fR\&.
.PP
.PP
It provides a single utility command used by the other parts of
the framework to add a \fBhelp\fR command to any
\fBcmdr::actor\fR requiring such\&.
.SH API
.TP
\fB::cmdr::help\fR \fBauto\fR \fIactor\fR
................................................................................
terminal\&.
.RS
.TP
\fBcmdr::actor\fR \fIactor\fR
The \fBcmdr::actor\fR instance to be extended with \fBhelp\fR\&.
.RE
.PP
.SH "FORMAT NOTES"
The format \fBby-category\fR looks for and uses the block
\fB*category-order*\fR for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections\&.
.PP
This block has to be defined in the root of the command hierarchy\&.
.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

Added embedded/man/files/cmdr_helpformats.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
'\"
'\" Generated from file 'cmdr_helpformats\&.man' by tcllib/doctools with format 'nroff'
'\" Copyright (c) 2013 Andreas Kupries
'\" Copyright (c) 2013 Documentation, Andreas Kupries
'\"
'\" The 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
'\"	Start of list of standard options for a Tk widget.  The
'\"	options follow on successive lines, in four 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.
'\"
'\" RCS: @(#) $Id: man.macros,v 1.1 2009/01/30 04:56:47 andreas_kupries Exp $
'\"
'\"	# 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
.SH "STANDARD OPTIONS"
.LP
.nf
.ta 4c 8c 12c
.ft B
..
'\"	# SE - end of list of standard options
.de SE
.fi
.ft R
.LP
See the \\fBoptions\\fR 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
..
.de UL
\\$1\l'|0\(ul'\\$2
..
.TH "cmdr_helpformats" n 0 doc "Cmdr, a framework for command line parsing and dispatch"
.BS
.SH NAME
cmdr_helpformats \- Cmdr - Writing custom help formats
.SH SYNOPSIS
package require \fBcmdr::help \fR
.sp
\fB::cmdr::help::format::<foo>\fR \fIroot\fR \fIwidth\fR \fIhelp\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 document describes the API expected of \fIhelp formats\fR
to make them usable within the Cmdr framework, and how to
write a custom help format\&.
.PP
Readers interested in the standard help formats of the
framework should read \fICmdr - (Internal) Utilities for help text formatting and setup\fR\&.
.SH BACKGROUND
Help formats are Cmdr's way of converting in-memory
information about a command hierarchy into something usable for human
consumption and obviating the need for writing separate documentation,
which may easily get out of sync with the specification\&.
.PP
The system was made extensible for while the standard formats
listed in \fICmdr - (Internal) Utilities for help text formatting and setup\fR should cover the common cases, and
the json format of \fICmdr - Formatting help as JSON object\fR is a general export,
it is always possible to run into unprediced non-standard situations
not covered as is\&.
.SH API
For the framework to automatically pick up a new help format
\fBfoo\fR the package implementing it has to specify a single
command \fB::cmdr::help::format::<\fBfoo\fR>\fR, and this package has
to be loaded before the command hierarchy you want to use it for is
specified\&.
.PP
In more detail:
.TP
\fB::cmdr::help::format::<foo>\fR \fIroot\fR \fIwidth\fR \fIhelp\fR
This command, having access to the root actor of a command hierarchy,
the number of columns to format the help towards, and a help data
structure itself, has to return a string, the formatted help generated
from the arguments\&.
.RS
.TP
cmdr::officer \fIroot\fR
The root officer of the command hierarchy\&.
With the exception of \fBby-category\fR the standard formats do not
use this argument\&. By providing it the format has access to the
toplevel common blocks, allowing for the transfer of custom
information from the specifiction to the format\&.
.sp
\fBby-category\fR for example looks for and uses the block
\fB*category-order*\fR for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections\&.
.TP
integer \fIwidth\fR
The number of columns to format the help towards\&.
.TP
dictionary \fIhelp\fR
A dictonary holding the help information to format\&. For more details
see section \fBHelp Dictionary\fR\&.
.RE
.PP
.SH "HELP DICTIONARY"
The help information generated by various places of the framework
is a dictionary containing the following keys:
.TP
arguments
A list of strings, the names of the command arguments, in order\&.
These names are keys into the \fBparameters\fR sub-dictionary\&.
.TP
desc
The command's description, i\&.e\&. help text\&.
.TP
opt2para
A dictionary mapping option flags to option names\&.
These names are keys into the \fBparameters\fR sub-dictionary\&.
.TP
options
A dictionary mapping option names to their descriptions\&.
.TP
parameters
A dictionary mapping parameter names to their definition\&.
Each definition is a dictionary containing the keys below\&.
See also package \fBcmdr::parameter\fR\&.
.RS
.TP
cmdline
Output of method \fBcmdline\fR\&.
.TP
code
Output of method \fBcode\fR\&.
.TP
default
Output of method \fBdefault\fR\&.
.TP
defered
Output of method \fBdefered\fR\&.
.TP
description
Output of method \fBdescription\fR\&.
.TP
documented
Output of method \fBdocumented\fR\&.
.TP
flags
A dictionary mapping flag names to flag
types, i\&.e\&. \fBprimary\fR, \fBalias\fR,
or \fBinverted\fR\&.
.TP
generator
Output of method \fBgenerator\fR\&.
.TP
interactive
Output of method \fBinteractive\fR\&.
.TP
isbool
Output of method \fBisbool\fR\&.
.TP
label
Output of method \fBlabel\fR\&.
.TP
list
Output of method \fBlist\fR\&.
.TP
ordered
Output of method \fBordered\fR\&.
.TP
presence
Output of method \fBpresence\fR\&.
.TP
prompt
Output of method \fBprompt\fR\&.
.TP
required
Output of method \fBrequired\fR\&.
.TP
threshold
Output of method \fBthreshold\fR\&.
.TP
type
Output of method \fBtype\fR\&.
.TP
validator
Output of method \fBvalidator\fR\&.
.RE
.TP
sections
A list of sections the command belongs to\&.
Each section name is a list itself, the path of the section and sub-sections\&.
.TP
states
A list of strings, the names of the command's hidden state parameters\&.
These names are keys into the \fBparameters\fR sub-dictionary\&.
.PP
.SH EXAMPLE
As an example the implementation of the standard help format
\fBlist\fR is shown here\&.
.CS


# Entrypoint
proc ::cmdr::help::format::list {root width help} {
    set result {}
    dict for {cmd desc} $help {
	lappend result [List $width $cmd $desc]
    }
    return [join $result \\n]
}

# Main work procedure for commands
proc ::cmdr::help::format::List {width name command} {
    dict with command {} ; # -> desc, options, arguments, parameters

    # Short line\&.
    lappend lines  [string trimright  "    [join $name] [HasOptions $options][Arguments $arguments $parameters]"]
    return [join $lines \\n]
}

# Support procedures
proc ::cmdr::help::format::HasOptions {options} {
    if {[dict size $options]} {
	return "\\[OPTIONS\\] "
    } else {
	return {}
    }
}

proc ::cmdr::help::format::Arguments {arguments parameters} {
    set result {}
    foreach a $arguments {
	set v [dict get $parameters $a]
	dict with v {} ; # -> code, desc, label
	switch -exact -- $code {
	    +  { set text "<$label>" }
	    ?  { set text "\\[<${label}>\\]" }
	    +* { set text "<${label}>\&.\&.\&." }
	    ?* { set text "\\[<${label}>\&.\&.\&.\\]" }
	}
	lappend result $text
    }
    return [join $result]
}

.CE
.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 Andreas Kupries
Copyright (c) 2013 Documentation, Andreas Kupries

.fi

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

472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
.SH "VALIDATION TYPES"
Everything said in the public document \fICmdr - Writing custom validation types\fR
applies to the standard validation types of the framework (as listed
in \fICmdr - Standard validation types for parameters\fR) as well\&.
.SH "HELP FORMATS"
Everything said in the public document \fICmdr - Writing custom help formats\fR
applies to the standard help formats of the framework (as listed in
\fICmdr - Standard help formats of the framework\fR) as well\&.
.SH "COMMAND LINE COMPLETION"
The document \fICmdr - Internals of command line completion\fR describes the inner
workings of the command line completion provided by the framework\&.
.SH "RELATED DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the project\fR
.IP [2]







|







472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
.SH "VALIDATION TYPES"
Everything said in the public document \fICmdr - Writing custom validation types\fR
applies to the standard validation types of the framework (as listed
in \fICmdr - Standard validation types for parameters\fR) as well\&.
.SH "HELP FORMATS"
Everything said in the public document \fICmdr - Writing custom help formats\fR
applies to the standard help formats of the framework (as listed in
\fICmdr - (Internal) Utilities for help text formatting and setup\fR) as well\&.
.SH "COMMAND LINE COMPLETION"
The document \fICmdr - Internals of command line completion\fR describes the inner
workings of the command line completion provided by the framework\&.
.SH "RELATED DOCUMENTS"
.IP [1]
\fICmdr - Introduction to the project\fR
.IP [2]

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

353
354
355
356
357
358
359




360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
.RS
.TP
string \fIline\fR
The command line to complete\&.
.RE
.TP
\fB<officer>\fR \fBcomplete-words\fR \fIparse\fR




This method is given the completion state \fIparse\fR of a partial
command line and returns a list of strings which are the valid
completions at this point\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.
.sp
-- TODO -- Describe the state fields and their meaning\&.
.RE
.TP
\fB<officer>\fR \fBcontinued\fR \fIline\fR
This hook-method for the main shell is responsible for the detection
of a continuation-line in the entered command \fIline\fR\&. It always
returns the boolean value \fBfalse\fR as the main shell does not
support continuation lines\&.







>
>
>
>
|
|






<
<







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
.RS
.TP
string \fIline\fR
The command line to complete\&.
.RE
.TP
\fB<officer>\fR \fBcomplete-words\fR \fIparse\fR
This method is part of the main shell command line
completion\&. For the details of its workings please read
\fICmdr - Internals of command line completion\fR\&.
.sp
Given the completion state \fIparse\fR of a partial
command line it returns a list of strings which are the valid
completions at this point\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.


.RE
.TP
\fB<officer>\fR \fBcontinued\fR \fIline\fR
This hook-method for the main shell is responsible for the detection
of a continuation-line in the entered command \fIline\fR\&. It always
returns the boolean value \fBfalse\fR as the main shell does not
support continuation lines\&.

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

409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
...
452
453
454
455
456
457
458




459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
.PP
.SH "INSTANCE API"
Most of the instance API is not public\&.
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework
has no need for it\&.
--TODO-- mark the methods which are public -- and/or write a separate document?
.TP
\fB<parameter>\fR \fBaccept\fR \fIx\fR
This method validates the string value \fIx\fR
against the validation type of the parameter and returns a
boolean value indicating success (\fBtrue\fR), or not
(\fBfalse\fR)\&.
The internal representation of \fIx\fR is not kept but
................................................................................
required, list
.TP
\fB?*\fR
optional, list\&.
.RE
.TP
\fB<parameter>\fR \fBcomplete-words\fR \fIparse\fR




This method is given the completion state \fIparse\fR of a partial
command line and returns a list of strings which are the valid
completions at this point, for the parameter\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.
.sp
--TODO-- Describe the state fields and their meaning\&.
.RE
.TP
\fB<parameter>\fR \fBconfig\fR \fIword\&.\&.\&.\fR
This method either returns the \fBcmdr::config\fR instance
containing the parameter, or the result of applying the words to that config
instance\&. It is through this method that any script with access to a single
parameter instance of a private will have access to all its parameters\&.







<







 







>
>
>
>
|
|






<
<







409
410
411
412
413
414
415

416
417
418
419
420
421
422
...
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
.PP
.SH "INSTANCE API"
Most of the instance API is not public\&.
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework
has no need for it\&.

.TP
\fB<parameter>\fR \fBaccept\fR \fIx\fR
This method validates the string value \fIx\fR
against the validation type of the parameter and returns a
boolean value indicating success (\fBtrue\fR), or not
(\fBfalse\fR)\&.
The internal representation of \fIx\fR is not kept but
................................................................................
required, list
.TP
\fB?*\fR
optional, list\&.
.RE
.TP
\fB<parameter>\fR \fBcomplete-words\fR \fIparse\fR
This method is part of the main shell command line
completion\&. For the details of its workings please read
\fICmdr - Internals of command line completion\fR\&.
.sp
Given the completion state \fIparse\fR of a partial
command line it returns a list of strings which are the valid
completions at this point, for the parameter\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.


.RE
.TP
\fB<parameter>\fR \fBconfig\fR \fIword\&.\&.\&.\fR
This method either returns the \fBcmdr::config\fR instance
containing the parameter, or the result of applying the words to that config
instance\&. It is through this method that any script with access to a single
parameter instance of a private will have access to all its parameters\&.

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

296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
...
318
319
320
321
322
323
324




325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
The instance command of the actor (officer actually) which contains the new private\&.
.TP
string \fIname\fR
The user-visible name of the command\&.
.TP
script \fIarguments\fR
The specification of the private's parameters\&.
Please read \fICmdr - Private Specification Language\fR for the details\&.
.TP
cmd-prefix \fIaction\fR
The command prefix to invoke when this private is selected for
execution\&.  It takes a single argument, the instance command of the
hidden \fBcmdr::config\fR container holding the private's
parameters\&. The result of the action, if there is any, is ignored by
the framework\&.
................................................................................
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework
has no need for it, although they have indirect access through
parameters and their container\&.
.TP
\fB<private>\fR \fBcomplete-words\fR \fIparse\fR




This method is given the completion state \fIparse\fR of a partial
command line and returns a list of strings which are the valid
completions at this point\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.
.sp
-- TODO -- Describe the state fields and their meaning\&.
.RE
.TP
\fB<private>\fR \fBdo\fR ?\fIword\fR\&.\&.\&.?
This method parses the \fIword\fRs of the command line, matching them
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\&.







|







 







>
>
>
>
|
|






<
<







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
...
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
The instance command of the actor (officer actually) which contains the new private\&.
.TP
string \fIname\fR
The user-visible name of the command\&.
.TP
script \fIarguments\fR
The specification of the private's parameters\&.
Please read \fICmdr - Parameter Specification Language\fR for the details\&.
.TP
cmd-prefix \fIaction\fR
The command prefix to invoke when this private is selected for
execution\&.  It takes a single argument, the instance command of the
hidden \fBcmdr::config\fR container holding the private's
parameters\&. The result of the action, if there is any, is ignored by
the framework\&.
................................................................................
.PP
It is described here for use by developers maintaining,
modifying and extending the framework itself\&. A user of the framework
has no need for it, although they have indirect access through
parameters and their container\&.
.TP
\fB<private>\fR \fBcomplete-words\fR \fIparse\fR
This method is part of the main shell command line
completion\&. For the details of its workings please read
\fICmdr - Internals of command line completion\fR\&.
.sp
Given the completion state \fIparse\fR of a partial
command line it returns a list of strings which are the valid
completions at this point\&.
.RS
.TP
dict \fIparse\fR
A dictionary holding the current completion state of a partial command
line\&.


.RE
.TP
\fB<private>\fR \fBdo\fR ?\fIword\fR\&.\&.\&.?
This method parses the \fIword\fRs of the command line, matching them
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\&.

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

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
.PP
Readers interested in the standard validation types of the
framework should read \fICmdr - Standard validation types for parameters\fR\&.
.SH BACKGROUND
Validation types are Cmdr's answer to the necessity of moving
between the string and internal representations of
\fBcmdr::parameter\fR instances\&.
Given a string representation they either return the associated
internal representation or raise an error, signaling that the input
was illegal\&. This part of their work, the verification of the legality
of the input string gave them their name\&.
.PP
The general concept of \fIvalidation types\fR was taken from
package \fBsnit\fR, and modified to suit Cmdr\&.
Where \fBsnit\fR's types expect only a single method to validate
the input we expect all types to support an ensemble of \fIfour\fR
methods\&.
One for the basic validation and transformation of the string, another
for the release of any internal representation so generated, plus two
more for delivery of a default representation and support for command
line completion\&.
The details (method names, signatures, etc\&.) can be found in section
\fBAPI\fR below\&.
.PP
As an example the implementation of the standard boolean







|
|
|
|


|
|
|

|







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
.PP
Readers interested in the standard validation types of the
framework should read \fICmdr - Standard validation types for parameters\fR\&.
.SH BACKGROUND
Validation types are Cmdr's answer to the necessity of moving
between the string and internal representations of
\fBcmdr::parameter\fR instances\&.
Given a \fIstring representation\fR they either return the
associated \fIinternal representation\fR or raise an error,
signaling that the string was illegal\&. This part of their work, the
verification of the legality of the input string gave them their name\&.
.PP
The general concept of \fIvalidation types\fR was taken from
\fBsnit\fR, and modified to suit Cmdr\&.
Where snit's types expect only a single method to validate the input
Cmdr expects all types to support an ensemble of \fIfour\fR
methods\&.
One for the basic validation and transformation of the input, another
for the release of any internal representation so generated, plus two
more for delivery of a default representation and support for command
line completion\&.
The details (method names, signatures, etc\&.) can be found in section
\fBAPI\fR below\&.
.PP
As an example the implementation of the standard boolean

Changes to embedded/man/index.n.

296
297
298
299
300
301
302



303
304
305
306
307
308
309
...
371
372
373
374
375
376
377



378
379
380
381
382
383
384
...
446
447
448
449
450
451
452



453
454
455
456
457
458
459
...
521
522
523
524
525
526
527



528
529
530
531
532
533
534
...
596
597
598
599
600
601
602



603
604
605
606
607
608
609
...
671
672
673
674
675
676
677



678
679
680
681
682
683
684
...
746
747
748
749
750
751
752



753
754
755
756
757
758
759
...
821
822
823
824
825
826
827



828
829
830
831
832
833
834
...
896
897
898
899
900
901
902



903
904
905
906
907
908
909
...
971
972
973
974
975
976
977



978
979
980
981
982
983
984
....
1046
1047
1048
1049
1050
1051
1052



1053
1054
1055
1056
1057
1058
1059
....
1121
1122
1123
1124
1125
1126
1127



1128
1129
1130
1131
1132
1133
1134
....
1196
1197
1198
1199
1200
1201
1202



1203
1204
1205
1206
1207
1208
1209
....
1271
1272
1273
1274
1275
1276
1277



1278
1279
1280
1281
1282
1283
1284
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private



.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







 







>
>
>







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
...
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
...
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
...
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
...
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
...
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
...
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
...
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
...
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
...
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
....
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
....
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
....
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
....
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP
................................................................................
cmdr_dsl_officer
.TP
\fBfiles/cmdr_dsl_parameter\&.n\fR
cmdr_dsl_parameter
.TP
\fBfiles/cmdr_dsl_private\&.n\fR
cmdr_dsl_private
.TP
\fBfiles/cmdr_helpformats\&.n\fR
cmdr_helpformats
.TP
\fBfiles/cmdr_howto_get_sources\&.n\fR
cmdr_howto_get_sources
.TP
\fBfiles/cmdr_howto_installation\&.n\fR
cmdr_installation
.TP

Changes to embedded/man/toc.n.

295
296
297
298
299
300
301



302
303
304
305
306
307
308
.TP
\fBcmdr_dsl_parameter\fR
\fIfiles/cmdr_dsl_parameter\&.n\fR: Cmdr - Parameter Specification Language
.TP
\fBcmdr_dsl_private\fR
\fIfiles/cmdr_dsl_private\&.n\fR: Cmdr - Private Specification Language
.TP



\fBcmdr_howto_get_sources\fR
\fIfiles/cmdr_howto_get_sources\&.n\fR: Cmdr - How To Get The Sources
.TP
\fBcmdr_installation\fR
\fIfiles/cmdr_howto_installation\&.n\fR: Cmdr - The Installer's Guide
.TP
\fBcmdr_introduction\fR







>
>
>







295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
.TP
\fBcmdr_dsl_parameter\fR
\fIfiles/cmdr_dsl_parameter\&.n\fR: Cmdr - Parameter Specification Language
.TP
\fBcmdr_dsl_private\fR
\fIfiles/cmdr_dsl_private\&.n\fR: Cmdr - Private Specification Language
.TP
\fBcmdr_helpformats\fR
\fIfiles/cmdr_helpformats\&.n\fR: Cmdr - Writing custom help formats
.TP
\fBcmdr_howto_get_sources\fR
\fIfiles/cmdr_howto_get_sources\&.n\fR: Cmdr - How To Get The Sources
.TP
\fBcmdr_installation\fR
\fIfiles/cmdr_howto_installation\&.n\fR: Cmdr - The Installer's Guide
.TP
\fBcmdr_introduction\fR

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

155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
...
180
181
182
183
184
185
186


187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
...
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
</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 internal package implements the base class containing functionality
common to <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> and <b class="package"><a href="cmdr_private.html">cmdr::private</a></b>.
--TODO-- Describe the common parts (common blocks, super chain, completion support, DSL support)</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Class API</a></h2>
<p>The class API is not public. It is used internally by the framework
when parsing a command hierarchy specification to create the necessary
command instances.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
................................................................................
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>Most of the instance API is not public.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it.</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">&lt;actor&gt;</b> <b class="method">completions</b> <i class="arg">parse</i> <i class="arg">cmdlist</i></a></dt>


<dd><p>This method is given the completion state <i class="arg">parse</i> of a partial
command line and a list of completions at the end of the line. It
returns a list of strings which are the valid completions of the whole
line, properly quoted.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p>
<p>-- TODO -- Describe the state fields and their meaning.</p></dd>
<dt>list <i class="arg">cmdlist</i></dt>
<dd><p>List of valid completions.</p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">&lt;actor&gt;</b> <b class="method">description</b></a></dt>
<dd><p>This accessor method returns the human-readable description of the
actor.</p></dd>
<dt><a name="5"><b class="cmd">&lt;actor&gt;</b> <b class="method">description:</b> <i class="arg">text</i></a></dt>
................................................................................
<dl class="arguments">
<dt>string <i class="arg">key</i></dt>
<dd><p>The name of the common block to extend.</p></dd>
<dt>any <i class="arg">data</i></dt>
<dd><p>The data to add to the block.</p></dd>
</dl></dd>
<dt><a name="15"><b class="cmd">&lt;actor&gt;</b> <b class="method">match</b> <i class="arg">parse</i> <i class="arg">cmdlist</i></a></dt>


<dd><p>This method is given the completion state <i class="arg">parse</i> of a partial
command line and a list of possible completions. The result is a list
of valid completions, filtered against the current word in the command
line.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p>
<p>-- TODO -- Describe the state fields and their meaning.</p></dd>
<dt>list <i class="arg">cmdlist</i></dt>
<dd><p>List of possible completions.</p></dd>
</dl></dd>
<dt><a name="16"><b class="cmd">&lt;actor&gt;</b> <b class="method">name</b></a></dt>
<dd><p>This accessor method returns the name of the actor.</p></dd>
<dt><a name="17"><b class="cmd">&lt;actor&gt;</b> <b class="method">name:</b> <i class="arg">name</i></a></dt>
<dd><p>This method sets the name of the actor.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The name to remember.</p></dd>
</dl></dd>
<dt><a name="18"><b class="cmd">&lt;actor&gt;</b> <b class="method">parse-line</b> <i class="arg">line</i></a></dt>


<dd><p>This method is the main helper to begin command completion. Given the
entered command <i class="arg">line</i> it parses it into words and returns a parse
structure as is taken by all other methods taking part in command
completion.</p>
<dl class="arguments">
<dt>string <i class="arg">line</i></dt>
<dd><p>The command line.</p></dd>
</dl></dd>
<dt><a name="19"><b class="cmd">&lt;actor&gt;</b> <b class="method">root</b></a></dt>
<dd><p>This accessor method returns the root actor instance the actor belongs
to.</p></dd>







|
<







 







>
>
|
|
|
|



|
<







 







>
>
|
|
|
<



|
<












>
>
|
|
|
|







155
156
157
158
159
160
161
162

163
164
165
166
167
168
169
...
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

196
197
198
199
200
201
202
...
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
</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 internal package implements the base class containing functionality
common to <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> and <b class="package"><a href="cmdr_private.html">cmdr::private</a></b>.</p>

</div>
<div id="section2" class="section"><h2><a name="section2">Class API</a></h2>
<p>The class API is not public. It is used internally by the framework
when parsing a command hierarchy specification to create the necessary
command instances.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
................................................................................
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>Most of the instance API is not public.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it.</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">&lt;actor&gt;</b> <b class="method">completions</b> <i class="arg">parse</i> <i class="arg">cmdlist</i></a></dt>
<dd><p>This method is part of command line completion. For the details of
its workings please read <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Given the completion state <i class="arg">parse</i> of a partial command
line and a list of completions at the end of the line it returns a
list of strings which are the valid completions of the whole line,
properly quoted.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>

<dt>list <i class="arg">cmdlist</i></dt>
<dd><p>List of valid completions.</p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">&lt;actor&gt;</b> <b class="method">description</b></a></dt>
<dd><p>This accessor method returns the human-readable description of the
actor.</p></dd>
<dt><a name="5"><b class="cmd">&lt;actor&gt;</b> <b class="method">description:</b> <i class="arg">text</i></a></dt>
................................................................................
<dl class="arguments">
<dt>string <i class="arg">key</i></dt>
<dd><p>The name of the common block to extend.</p></dd>
<dt>any <i class="arg">data</i></dt>
<dd><p>The data to add to the block.</p></dd>
</dl></dd>
<dt><a name="15"><b class="cmd">&lt;actor&gt;</b> <b class="method">match</b> <i class="arg">parse</i> <i class="arg">cmdlist</i></a></dt>
<dd><p>This method is part of command line completion. For the details of
its workings please read <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Given the completion state <i class="arg">parse</i> of a partial command
line and a list of possible completions it returns a list of valid
completions, filtered against the current word in the command line.</p>

<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>

<dt>list <i class="arg">cmdlist</i></dt>
<dd><p>List of possible completions.</p></dd>
</dl></dd>
<dt><a name="16"><b class="cmd">&lt;actor&gt;</b> <b class="method">name</b></a></dt>
<dd><p>This accessor method returns the name of the actor.</p></dd>
<dt><a name="17"><b class="cmd">&lt;actor&gt;</b> <b class="method">name:</b> <i class="arg">name</i></a></dt>
<dd><p>This method sets the name of the actor.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The name to remember.</p></dd>
</dl></dd>
<dt><a name="18"><b class="cmd">&lt;actor&gt;</b> <b class="method">parse-line</b> <i class="arg">line</i></a></dt>
<dd><p>This method is part of command line completion. For the details of
its workings please read <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Is the main helper to begin command completion. Given the
entered command <i class="arg">line</i> it parses it into words and returns a
parse structure as is taken by all other methods taking part in
command completion.</p>
<dl class="arguments">
<dt>string <i class="arg">line</i></dt>
<dd><p>The command line.</p></dd>
</dl></dd>
<dt><a name="19"><b class="cmd">&lt;actor&gt;</b> <b class="method">root</b></a></dt>
<dd><p>This accessor method returns the root actor instance the actor belongs
to.</p></dd>

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

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
<dt>list <i class="arg">list</i></dt>
<dd></dd>
</dl></dd>
<dt><a name="6"><b class="cmd">&lt;config&gt;</b> <b class="method">arguments</b></a></dt>
<dd><p>This method returns a list of parameter names,
for the parameters which are arguments.</p></dd>
<dt><a name="7"><b class="cmd">&lt;config&gt;</b> <b class="method">complete</b> <i class="arg">line</i></a></dt>



<dd><p>This hook-method for the mini-shell is responsible
for computing the set of completions for the
entered <i class="arg">line</i>.</p>
<dl class="arguments">
<dt>string <i class="arg">line</i></dt>
<dd><p>The command line to complete.</p></dd>
</dl></dd>
<dt><a name="8"><b class="cmd">&lt;config&gt;</b> <b class="method">complete-repl</b> <i class="arg">parse</i></a></dt>



<dd><p>This internal method is used by the hook-method <b class="method">complete</b>
for the mini-shell, see above. It is given the completion
state <i class="arg">parse</i> of a partial command line and returns a

list of strings which are the valid completions at this point.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p>
<p>-- TODO -- Describe the state fields and their meaning.</p></dd>
</dl></dd>
<dt><a name="9"><b class="cmd">&lt;config&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></dt>



<dd><p>This method is given the completion state <i class="arg">parse</i> of a partial
command line and returns a list of strings which are the valid
completions at this point.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p>
<p>-- TODO -- Describe the state fields and their meaning.</p></dd>
</dl></dd>
<dt><a name="10"><b class="cmd">&lt;config&gt;</b> <b class="method">continued</b> <i class="arg">line</i></a></dt>
<dd><p>This hook-method for the mini-shell is responsible for the detection
of a continuation-line in the entered command <i class="arg">line</i>. It always
returns the boolean value <b class="const">false</b> as the mini-shell does not
support continuation lines.</p>
<dl class="arguments">







>
>
>
|
|
|





>
>
>
|
<
|
>
|



|
<


>
>
>
|
|




|
<







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
<dt>list <i class="arg">list</i></dt>
<dd></dd>
</dl></dd>
<dt><a name="6"><b class="cmd">&lt;config&gt;</b> <b class="method">arguments</b></a></dt>
<dd><p>This method returns a list of parameter names,
for the parameters which are arguments.</p></dd>
<dt><a name="7"><b class="cmd">&lt;config&gt;</b> <b class="method">complete</b> <i class="arg">line</i></a></dt>
<dd><p>This method is part of the mini shell command line
completion. For the details of its workings please read
<i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>This hook-method, the entrypoint for the repl
is responsible for computing the set of completions
for the entered <i class="arg">line</i>.</p>
<dl class="arguments">
<dt>string <i class="arg">line</i></dt>
<dd><p>The command line to complete.</p></dd>
</dl></dd>
<dt><a name="8"><b class="cmd">&lt;config&gt;</b> <b class="method">complete-repl</b> <i class="arg">parse</i></a></dt>
<dd><p>This internal method is part of the mini shell command line
completion. For the details of its workings please read
<i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>It is used by the hook-method <b class="method">complete</b> (see above).

Given the completion state <i class="arg">parse</i> of a partial command
line it returns a list of strings which are the valid
completions at this point.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>

</dl></dd>
<dt><a name="9"><b class="cmd">&lt;config&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></dt>
<dd><p>This method is part of the main shell command line
completion. For the details of its workings please read
<i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Given the completion state <i class="arg">parse</i> of a partial
command line it returns a list of strings which are the valid
completions at this point.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>

</dl></dd>
<dt><a name="10"><b class="cmd">&lt;config&gt;</b> <b class="method">continued</b> <i class="arg">line</i></a></dt>
<dd><p>This hook-method for the mini-shell is responsible for the detection
of a continuation-line in the entered command <i class="arg">line</i>. It always
returns the boolean value <b class="const">false</b> as the mini-shell does not
support continuation lines.</p>
<dl class="arguments">

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

272
273
274
275
276
277
278
279
280

281
282
283
284
285
286
287
...
354
355
356
357
358
359
360
361
362

363
364
365
366
367
368
369
command hierarchy.</p>
<p>To this end this shell accepts the names of all subordinate
commands known to the officer as commands.</p>
<p>It may additional accept a hard-wired command <b class="cmd">.exit</b>,
depending on the parse state (see flag <b class="const">doexit</b>).</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Sequencing and Rules</a></h3>
<p>This section is in essence the textual description of an UML sequence
diagram.</p>

<p>Note that the state structure used by this code and referenced
in the text is explained in section <span class="sectref"><a href="#section3">Parse State</a></span>.</p>
<ol class="enumerated">
<li><p>The main shell's core read-eval-print-loop calls on the
instance method <b class="method">complete</b> for command-line completion,
providing the text of the buffer to complete at the end).</p></li>
<li><p>The method <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b>::<b class="method">parse-line</b> is called
................................................................................
take any argument.</p>
<p>Similarly none of the hardwired commands take an
argument. Their names all start with a <b class="const">.</b>. They are, in
alphabetical order, <b class="const">.cancel</b>, <b class="const">.exit</b>, <b class="const">.help</b>
<b class="const">.ok</b>, and <b class="const">.run</b>.</p>
</div>
<div id="subsection4" class="subsection"><h3><a name="subsection4">Sequencing and Rules</a></h3>
<p>This section is in essence the textual description of an UML sequence
diagram.</p>

<p>Note that the state structure used by this code and referenced
in the text is explained in section <span class="sectref"><a href="#section3">Parse State</a></span>.</p>
<ol class="enumerated">
<li><p>The mini shell's core read-eval-print-loop calls on the
instance method <b class="method">complete</b> for command-line completion,
providing the text of the buffer to complete at the end).</p></li>
<li><p>The method <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b>::<b class="method">parse-line</b> is called







|
|
>







 







|
|
>







272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
...
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
command hierarchy.</p>
<p>To this end this shell accepts the names of all subordinate
commands known to the officer as commands.</p>
<p>It may additional accept a hard-wired command <b class="cmd">.exit</b>,
depending on the parse state (see flag <b class="const">doexit</b>).</p>
</div>
<div id="subsection2" class="subsection"><h3><a name="subsection2">Sequencing and Rules</a></h3>
<p><img alt="main-shell" src="../../image/main-shell.png"></p>
<p>This rest of this section is a textual description of the UML
sequence diagram shown above.</p>
<p>Note that the state structure used by this code and referenced
in the text is explained in section <span class="sectref"><a href="#section3">Parse State</a></span>.</p>
<ol class="enumerated">
<li><p>The main shell's core read-eval-print-loop calls on the
instance method <b class="method">complete</b> for command-line completion,
providing the text of the buffer to complete at the end).</p></li>
<li><p>The method <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b>::<b class="method">parse-line</b> is called
................................................................................
take any argument.</p>
<p>Similarly none of the hardwired commands take an
argument. Their names all start with a <b class="const">.</b>. They are, in
alphabetical order, <b class="const">.cancel</b>, <b class="const">.exit</b>, <b class="const">.help</b>
<b class="const">.ok</b>, and <b class="const">.run</b>.</p>
</div>
<div id="subsection4" class="subsection"><h3><a name="subsection4">Sequencing and Rules</a></h3>
<p><img alt="mini-shell" src="../../image/mini-shell.png"></p>
<p>This rest of this section is a textual description of the UML
sequence diagram shown above.</p>
<p>Note that the state structure used by this code and referenced
in the text is explained in section <span class="sectref"><a href="#section3">Parse State</a></span>.</p>
<ol class="enumerated">
<li><p>The mini shell's core read-eval-print-loop calls on the
instance method <b class="method">complete</b> for command-line completion,
providing the text of the buffer to complete at the end).</p></li>
<li><p>The method <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b>::<b class="method">parse-line</b> is called

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

254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<dt><a name="8"><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.
--TODO--(ref:backend-example-code)--</p></dd>
<dt><a name="9"><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>







|
<







254
255
256
257
258
259
260
261

262
263
264
265
266
267
268
<dt><a name="8"><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></dd>

<dt><a name="9"><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>

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

368
369
370
371
372
373
374

375
376
377
378
379
380
381
382
383
384
385
associated <i class="term">internal representation</i> or raise an error,
signaling that the string was illegal. This part of their work, the
verification of the legality of the input string gave them their name.</p>
<p>The general concept of <i class="term">validation types</i> was taken from
<b class="package">snit</b>, and modified to suit Cmdr.
Where snit's types expect only a single method to validate the input
Cmdr expects all types to support an ensemble of <em>four</em>

methods, one for the basic validation and transformation of the input,
another for the release of any internal representation so generated,
plus delivery of a default representation and support for command line
completion.</p>
<dl class="definitions">
<dt><a name="13"><b class="cmd">validate</b> <i class="arg">cmdprefix</i></a></dt>
<dd><p>This command specifies a <i class="term">validation type</i> for the
<i class="term">parameter</i>, in the form of a command prefix (or the name of one
of the builtin types, see package <b class="package"><a href="cmdr_validate.html">cmdr::validate</a></b>).
The set of methods this callback has to support, their signatures,
etc. are all explained in <i class="term"><a href="cmdr_vtypes.html">Cmdr - Writing custom validation types</a></i>. This document







>
|
|
|
|







368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
associated <i class="term">internal representation</i> or raise an error,
signaling that the string was illegal. This part of their work, the
verification of the legality of the input string gave them their name.</p>
<p>The general concept of <i class="term">validation types</i> was taken from
<b class="package">snit</b>, and modified to suit Cmdr.
Where snit's types expect only a single method to validate the input
Cmdr expects all types to support an ensemble of <em>four</em>
methods.
One for the basic validation and transformation of the input, another
for the release of any internal representation so generated, plus two
more for delivery of a default representation and support for command
line completion.</p>
<dl class="definitions">
<dt><a name="13"><b class="cmd">validate</b> <i class="arg">cmdprefix</i></a></dt>
<dd><p>This command specifies a <i class="term">validation type</i> for the
<i class="term">parameter</i>, in the form of a command prefix (or the name of one
of the builtin types, see package <b class="package"><a href="cmdr_validate.html">cmdr::validate</a></b>).
The set of methods this callback has to support, their signatures,
etc. are all explained in <i class="term"><a href="cmdr_vtypes.html">Cmdr - Writing custom validation types</a></i>. This document

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

125
126
127
128
129
130
131

132
133
134
135
136
137
138
139
140
141
...
171
172
173
174
175
176
177










178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd">description</b> <i class="arg">text</i></a></li>
<li><a href="#2"><b class="cmd">input</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></li>
<li><a href="#3"><b class="cmd">interactive</b></a></li>
<li><a href="#4"><b class="cmd">option</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></li>

<li><a href="#5"><b class="cmd">state</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></li>
<li><a href="#6"><b class="cmd">undocumented</b></a></li>
<li><a href="#7"><b class="cmd">use</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>This document is for users of the cmdr framework. It introduces the
................................................................................
package <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> can be used to globally activate this
type of shell for all <i class="term">private</i>s.</p></dd>
<dt><a name="4"><b class="cmd">option</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></dt>
<dd><p>This command adds an <i class="term">option</i> (i.e. named) <i class="term">parameter</i> to
the <i class="term">private</i>, with description <i class="arg">help</i> and its specification
<i class="arg">script</i> of parameter commands as described in
<i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></dd>










<dt><a name="5"><b class="cmd">state</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></dt>
<dd><p>This command adds a <i class="term">state</i> (i.e. hidden) <i class="term">parameter</i> to the
<i class="term">private</i>, with description <i class="arg">help</i> and its specification
<i class="arg">script</i> of parameter commands as described in
<i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></dd>
<dt><a name="6"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">private</i> from the generated help.</p></dd>
<dt><a name="7"><b class="cmd">use</b> <i class="arg">name</i></a></dt>
<dd><p>This command is the counterpart to <b class="cmd">common</b> of <i class="term">officer</i>s
(See <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i>).
It inserts the named block into the specification, executing it in
place. As such it expects the contents to be a script of private
commands as described in this section.</p></dd>
</dl>
<p>Please continue reading with <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p>







>
|
|
|







 







>
>
>
>
>
>
>
>
>
>
|




|

|







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
...
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
<div id="synopsis" class="section"><h2><a name="synopsis">Synopsis</a></h2>
<div class="synopsis">
<ul class="syntax">
<li><a href="#1"><b class="cmd">description</b> <i class="arg">text</i></a></li>
<li><a href="#2"><b class="cmd">input</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></li>
<li><a href="#3"><b class="cmd">interactive</b></a></li>
<li><a href="#4"><b class="cmd">option</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></li>
<li><a href="#5"><b class="cmd">section</b> <i class="arg">word</i>...</a></li>
<li><a href="#6"><b class="cmd">state</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></li>
<li><a href="#7"><b class="cmd">undocumented</b></a></li>
<li><a href="#8"><b class="cmd">use</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>This document is for users of the cmdr framework. It introduces the
................................................................................
package <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> can be used to globally activate this
type of shell for all <i class="term">private</i>s.</p></dd>
<dt><a name="4"><b class="cmd">option</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></dt>
<dd><p>This command adds an <i class="term">option</i> (i.e. named) <i class="term">parameter</i> to
the <i class="term">private</i>, with description <i class="arg">help</i> and its specification
<i class="arg">script</i> of parameter commands as described in
<i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></dd>
<dt><a name="5"><b class="cmd">section</b> <i class="arg">word</i>...</a></dt>
<dd><p>This command places the <i class="term">private</i> into a help section/category,
for use by the standard help format <i class="term">by-category</i>
(See <i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>).</p>
<p>The section/category is specified as a list of words, each
denoting part of the path to the section. This means that the last
word is the section of the private, with the preceding words the
sections it is nested in.</p>
<p>Multiple calls are possible and accumulate. In other words,
the private can be placed in more than one section/category.</p></dd>
<dt><a name="6"><b class="cmd">state</b> <i class="arg">name</i> <i class="arg">help</i> <i class="arg">script</i></a></dt>
<dd><p>This command adds a <i class="term">state</i> (i.e. hidden) <i class="term">parameter</i> to the
<i class="term">private</i>, with description <i class="arg">help</i> and its specification
<i class="arg">script</i> of parameter commands as described in
<i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p></dd>
<dt><a name="7"><b class="cmd">undocumented</b></a></dt>
<dd><p>This command excludes the <i class="term">private</i> from the generated help.</p></dd>
<dt><a name="8"><b class="cmd">use</b> <i class="arg">name</i></a></dt>
<dd><p>This command is the counterpart to <b class="cmd">common</b> of <i class="term">officer</i>s
(See <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i>).
It inserts the named block into the specification, executing it in
place. As such it expects the contents to be a script of private
commands as described in this section.</p></dd>
</dl>
<p>Please continue reading with <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p>

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

111
112
113
114
115
116
117
118

119
120
121
122
123
124
125
...
129
130
131
132
133
134
135
136




137

138
139
140
141
142
143
144
...
154
155
156
157
158
159
160
161






162
163
164
165
166
167
168
</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">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><a href="#1"><b class="cmd">::cmdr::help</b> <b class="method">auto</b> <i class="arg">actor</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 internal package implements the four standard help formats




<b class="const">full</b>, <b class="const">short</b>, <b class="const">list</b>, and <b class="const">by-category</b>.</p>

<p>It provides a single utility command used by the other parts of
the framework to add a <b class="syscmd">help</b> command to any
<b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> requiring such.</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::help</b> <b class="method">auto</b> <i class="arg">actor</i></a></dt>
................................................................................
terminal.</p>
<dl class="arguments">
<dt><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <i class="arg">actor</i></dt>
<dd><p>The <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> instance to be extended with <b class="syscmd">help</b>.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">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>







|
>







 







|
>
>
>
>
|
>







 







|
>
>
>
>
>
>







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
...
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
...
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
</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">Format Notes</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><a href="#1"><b class="cmd">::cmdr::help</b> <b class="method">auto</b> <i class="arg">actor</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 internal package implements the four standard help formats</p>
<ol class="enumerated">
<li><p><b class="const">full</b>,</p></li>
<li><p><b class="const">short</b>,</p></li>
<li><p><b class="const">list</b>, and</p></li>
<li><p><b class="const">by-category</b>.</p></li>
</ol>
<p>It provides a single utility command used by the other parts of
the framework to add a <b class="syscmd">help</b> command to any
<b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> requiring such.</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::help</b> <b class="method">auto</b> <i class="arg">actor</i></a></dt>
................................................................................
terminal.</p>
<dl class="arguments">
<dt><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <i class="arg">actor</i></dt>
<dd><p>The <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> instance to be extended with <b class="syscmd">help</b>.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Format Notes</a></h2>
<p>The format <b class="const">by-category</b> looks for and uses the block
<b class="const">*category-order*</b> for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections.</p>
<p>This block has to be defined in the root of the command hierarchy.</p>
</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>

Added embedded/www/doc/files/cmdr_helpformats.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
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314

<html><head>
<title>cmdr_helpformats - 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_helpformats.man' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2013 Andreas Kupries   -- Copyright &copy; 2013 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ cmdr_helpformats.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_helpformats(n) 0 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_helpformats - Cmdr - Writing custom help formats</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">Background</a></li>
<li class="section"><a href="#section3">API</a></li>
<li class="section"><a href="#section4">Help Dictionary</a></li>
<li class="section"><a href="#section5">Example</a></li>
<li class="section"><a href="#section6">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::help</b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::cmdr::help::format::&lt;foo&gt;</b> <i class="arg">root</i> <i class="arg">width</i> <i class="arg">help</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 document describes the API expected of <i class="term">help formats</i>
to make them usable within the Cmdr framework, and how to
write a custom help format.</p>
<p>Readers interested in the standard help formats of the
framework should read <i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Background</a></h2>
<p>Help formats are Cmdr's way of converting in-memory
information about a command hierarchy into something usable for human
consumption and obviating the need for writing separate documentation,
which may easily get out of sync with the specification.</p>
<p>The system was made extensible for while the standard formats
listed in <i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i> should cover the common cases, and
the json format of <i class="term"><a href="cmdr_help_json.html">Cmdr - Formatting help as JSON object</a></i> is a general export,
it is always possible to run into unprediced non-standard situations
not covered as is.</p>
</div>
<div id="section3" class="section"><h2><a name="section3">API</a></h2>
<p>For the framework to automatically pick up a new help format
<b class="const">foo</b> the package implementing it has to specify a single
command <b class="cmd">::cmdr::help::format::&lt;<b class="variable">foo</b>&gt;</b>, and this package has
to be loaded before the command hierarchy you want to use it for is
specified.</p>
<p>In more detail:</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::cmdr::help::format::&lt;foo&gt;</b> <i class="arg">root</i> <i class="arg">width</i> <i class="arg">help</i></a></dt>
<dd><p>This command, having access to the root actor of a command hierarchy,
the number of columns to format the help towards, and a help data
structure itself, has to return a string, the formatted help generated
from the arguments.</p>
<dl class="arguments">
<dt>cmdr::officer <i class="arg">root</i></dt>
<dd><p>The root officer of the command hierarchy.
With the exception of <b class="const">by-category</b> the standard formats do not
use this argument. By providing it the format has access to the
toplevel common blocks, allowing for the transfer of custom
information from the specifiction to the format.</p>
<p><b class="const">by-category</b> for example looks for and uses the block
<b class="const">*category-order*</b> for when the user wishes to override the
natural (alphabetical) order of display for the toplevel sections.</p></dd>
<dt>integer <i class="arg">width</i></dt>
<dd><p>The number of columns to format the help towards.</p></dd>
<dt>dictionary <i class="arg">help</i></dt>
<dd><p>A dictonary holding the help information to format. For more details
see section <span class="sectref"><a href="#section4">Help Dictionary</a></span>.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Help Dictionary</a></h2>
<p>The help information generated by various places of the framework
is a dictionary containing the following keys:</p>
<dl class="definitions">
<dt>arguments</dt>
<dd><p>A list of strings, the names of the command arguments, in order.
These names are keys into the <b class="variable">parameters</b> sub-dictionary.</p></dd>
<dt>desc</dt>
<dd><p>The command's description, i.e. help text.</p></dd>
<dt>opt2para</dt>
<dd><p>A dictionary mapping option flags to option names.
These names are keys into the <b class="variable">parameters</b> sub-dictionary.</p></dd>
<dt>options</dt>
<dd><p>A dictionary mapping option names to their descriptions.</p></dd>
<dt>parameters</dt>
<dd><p>A dictionary mapping parameter names to their definition.
Each definition is a dictionary containing the keys below.
See also package <b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b>.</p>
<dl class="definitions">
<dt>cmdline</dt>
<dd><p>Output of method <b class="method">cmdline</b>.</p></dd>
<dt>code</dt>
<dd><p>Output of method <b class="method">code</b>.</p></dd>
<dt>default</dt>
<dd><p>Output of method <b class="method">default</b>.</p></dd>
<dt>defered</dt>
<dd><p>Output of method <b class="method">defered</b>.</p></dd>
<dt>description</dt>
<dd><p>Output of method <b class="method">description</b>.</p></dd>
<dt>documented</dt>
<dd><p>Output of method <b class="method">documented</b>.</p></dd>
<dt>flags</dt>
<dd><p>A dictionary mapping flag names to flag
                   types, i.e. <b class="const">primary</b>, <b class="const">alias</b>,
                   or <b class="const">inverted</b>.</p></dd>
<dt>generator</dt>
<dd><p>Output of method <b class="method">generator</b>.</p></dd>
<dt>interactive</dt>
<dd><p>Output of method <b class="method">interactive</b>.</p></dd>
<dt>isbool</dt>
<dd><p>Output of method <b class="method">isbool</b>.</p></dd>
<dt>label</dt>
<dd><p>Output of method <b class="method">label</b>.</p></dd>
<dt>list</dt>
<dd><p>Output of method <b class="method">list</b>.</p></dd>
<dt>ordered</dt>
<dd><p>Output of method <b class="method">ordered</b>.</p></dd>
<dt>presence</dt>
<dd><p>Output of method <b class="method">presence</b>.</p></dd>
<dt>prompt</dt>
<dd><p>Output of method <b class="method">prompt</b>.</p></dd>
<dt>required</dt>
<dd><p>Output of method <b class="method">required</b>.</p></dd>
<dt>threshold</dt>
<dd><p>Output of method <b class="method">threshold</b>.</p></dd>
<dt>type</dt>
<dd><p>Output of method <b class="method">type</b>.</p></dd>
<dt>validator</dt>
<dd><p>Output of method <b class="method">validator</b>.</p></dd>
</dl></dd>
<dt>sections</dt>
<dd><p>A list of sections the command belongs to.
Each section name is a list itself, the path of the section and sub-sections.</p></dd>
<dt>states</dt>
<dd><p>A list of strings, the names of the command's hidden state parameters.
These names are keys into the <b class="variable">parameters</b> sub-dictionary.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Example</a></h2>
<p>As an example the implementation of the standard help format
<b class="const">list</b> is shown here.</p>
<pre class="example">
# Entrypoint
proc ::cmdr::help::format::list {root width help} {
    set result {}
    dict for {cmd desc} $help {
	lappend result [List $width $cmd $desc]
    }
    return [join $result \n]
}
# Main work procedure for commands
proc ::cmdr::help::format::List {width name command} {
    dict with command {} ; # -&gt; desc, options, arguments, parameters
    # Short line.
    lappend lines  [string trimright  &quot;    [join $name] [HasOptions $options][Arguments $arguments $parameters]&quot;]
    return [join $lines \n]
}
# Support procedures
proc ::cmdr::help::format::HasOptions {options} {
    if {[dict size $options]} {
	return &quot;\[OPTIONS\] &quot;
    } else {
	return {}
    }
}
proc ::cmdr::help::format::Arguments {arguments parameters} {
    set result {}
    foreach a $arguments {
	set v [dict get $parameters $a]
	dict with v {} ; # -&gt; code, desc, label
	switch -exact -- $code {
	    +  { set text &quot;&lt;$label&gt;&quot; }
	    ?  { set text &quot;\[&lt;${label}&gt;\]&quot; }
	    +* { set text &quot;&lt;${label}&gt;...&quot; }
	    ?* { set text &quot;\[&lt;${label}&gt;...\]&quot; }
	}
	lappend result $text
    }
    return [join $result]
}
</pre>
</div>
<div id="section6" class="section"><h2><a name="section6">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 Andreas Kupries<br>
Copyright &copy; 2013 Documentation, Andreas Kupries</p>
</div>
</div></body></html>

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

286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
</div>
<div id="section7" class="section"><h2><a name="section7">Validation Types</a></h2>
<p>Everything said in the public document <i class="term"><a href="cmdr_vtypes.html">Cmdr - Writing custom validation types</a></i>
applies to the standard validation types of the framework (as listed
in <i class="term"><a href="cmdr_validate.html">Cmdr - Standard validation types for parameters</a></i>) as well.</p>
</div>
<div id="section8" class="section"><h2><a name="section8">Help Formats</a></h2>
<p>Everything said in the public document <i class="term">Cmdr - Writing custom help formats</i>
applies to the standard help formats of the framework (as listed in
<i class="term">Cmdr - Standard help formats of the framework</i>) as well.</p>
</div>
<div id="section9" class="section"><h2><a name="section9">Command Line Completion</a></h2>
<p>The document <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i> describes the inner
workings of the command line completion provided by the framework.</p>
</div>
<div id="section10" class="section"><h2><a name="section10">Related Documents</a></h2>
<ol class="enumerated">







|

|







286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
</div>
<div id="section7" class="section"><h2><a name="section7">Validation Types</a></h2>
<p>Everything said in the public document <i class="term"><a href="cmdr_vtypes.html">Cmdr - Writing custom validation types</a></i>
applies to the standard validation types of the framework (as listed
in <i class="term"><a href="cmdr_validate.html">Cmdr - Standard validation types for parameters</a></i>) as well.</p>
</div>
<div id="section8" class="section"><h2><a name="section8">Help Formats</a></h2>
<p>Everything said in the public document <i class="term"><a href="cmdr_helpformats.html">Cmdr - Writing custom help formats</a></i>
applies to the standard help formats of the framework (as listed in
<i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>) as well.</p>
</div>
<div id="section9" class="section"><h2><a name="section9">Command Line Completion</a></h2>
<p>The document <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i> describes the inner
workings of the command line completion provided by the framework.</p>
</div>
<div id="section10" class="section"><h2><a name="section10">Related Documents</a></h2>
<ol class="enumerated">

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

203
204
205
206
207
208
209



210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
<dd><p>This hook-method for the main shell is responsible for computing the
set of completions for the entered <i class="arg">line</i>.</p>
<dl class="arguments">
<dt>string <i class="arg">line</i></dt>
<dd><p>The command line to complete.</p></dd>
</dl></dd>
<dt><a name="5"><b class="cmd">&lt;officer&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></dt>



<dd><p>This method is given the completion state <i class="arg">parse</i> of a partial
command line and returns a list of strings which are the valid
completions at this point.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p>
<p>-- TODO -- Describe the state fields and their meaning.</p></dd>
</dl></dd>
<dt><a name="6"><b class="cmd">&lt;officer&gt;</b> <b class="method">continued</b> <i class="arg">line</i></a></dt>
<dd><p>This hook-method for the main shell is responsible for the detection
of a continuation-line in the entered command <i class="arg">line</i>. It always
returns the boolean value <b class="const">false</b> as the main shell does not
support continuation lines.</p>
<dl class="arguments">







>
>
>
|
|




|
<







203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219

220
221
222
223
224
225
226
<dd><p>This hook-method for the main shell is responsible for computing the
set of completions for the entered <i class="arg">line</i>.</p>
<dl class="arguments">
<dt>string <i class="arg">line</i></dt>
<dd><p>The command line to complete.</p></dd>
</dl></dd>
<dt><a name="5"><b class="cmd">&lt;officer&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></dt>
<dd><p>This method is part of the main shell command line
completion. For the details of its workings please read
<i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Given the completion state <i class="arg">parse</i> of a partial
command line it returns a list of strings which are the valid
completions at this point.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>

</dl></dd>
<dt><a name="6"><b class="cmd">&lt;officer&gt;</b> <b class="method">continued</b> <i class="arg">line</i></a></dt>
<dd><p>This hook-method for the main shell is responsible for the detection
of a continuation-line in the entered command <i class="arg">line</i>. It always
returns the boolean value <b class="const">false</b> as the main shell does not
support continuation lines.</p>
<dl class="arguments">

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

230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
...
267
268
269
270
271
272
273



274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>Most of the instance API is not public.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it.
--TODO-- mark the methods which are public -- and/or write a separate document?</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">&lt;parameter&gt;</b> <b class="method">accept</b> <i class="arg">x</i></a></dt>
<dd><p>This method validates the string value <i class="arg">x</i>
against the validation type of the parameter and returns a
boolean value indicating success (<b class="const">true</b>), or not
(<b class="const">false</b>).
The internal representation of <i class="arg">x</i> is not kept but
................................................................................
<dd><p>optional, scalar</p></dd>
<dt><b class="const">+*</b></dt>
<dd><p>required, list</p></dd>
<dt><b class="const">?*</b></dt>
<dd><p>optional, list.</p></dd>
</dl></dd>
<dt><a name="6"><b class="cmd">&lt;parameter&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></dt>



<dd><p>This method is given the completion state <i class="arg">parse</i> of a partial
command line and returns a list of strings which are the valid
completions at this point, for the parameter.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p>
<p>--TODO-- Describe the state fields and their meaning.</p></dd>
</dl></dd>
<dt><a name="7"><b class="cmd">&lt;parameter&gt;</b> <b class="method">config</b> <i class="arg">word...</i></a></dt>
<dd><p>This method either returns the <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> instance
containing the parameter, or the result of applying the words to that config
instance. It is through this method that any script with access to a single
parameter instance of a private will have access to all its parameters.</p>
<dl class="arguments">







|
<







 







>
>
>
|
|




|
<







230
231
232
233
234
235
236
237

238
239
240
241
242
243
244
...
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282

283
284
285
286
287
288
289
</dl></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>Most of the instance API is not public.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it.</p>

<dl class="definitions">
<dt><a name="3"><b class="cmd">&lt;parameter&gt;</b> <b class="method">accept</b> <i class="arg">x</i></a></dt>
<dd><p>This method validates the string value <i class="arg">x</i>
against the validation type of the parameter and returns a
boolean value indicating success (<b class="const">true</b>), or not
(<b class="const">false</b>).
The internal representation of <i class="arg">x</i> is not kept but
................................................................................
<dd><p>optional, scalar</p></dd>
<dt><b class="const">+*</b></dt>
<dd><p>required, list</p></dd>
<dt><b class="const">?*</b></dt>
<dd><p>optional, list.</p></dd>
</dl></dd>
<dt><a name="6"><b class="cmd">&lt;parameter&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></dt>
<dd><p>This method is part of the main shell command line
completion. For the details of its workings please read
<i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Given the completion state <i class="arg">parse</i> of a partial
command line it returns a list of strings which are the valid
completions at this point, for the parameter.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>

</dl></dd>
<dt><a name="7"><b class="cmd">&lt;parameter&gt;</b> <b class="method">config</b> <i class="arg">word...</i></a></dt>
<dd><p>This method either returns the <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> instance
containing the parameter, or the result of applying the words to that config
instance. It is through this method that any script with access to a single
parameter instance of a private will have access to all its parameters.</p>
<dl class="arguments">

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

164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
...
185
186
187
188
189
190
191



192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
<dl class="arguments">
<dt>object <i class="arg">super</i></dt>
<dd><p>The instance command of the actor (officer actually) which contains the new private.</p></dd>
<dt>string <i class="arg">name</i></dt>
<dd><p>The user-visible name of the command.</p></dd>
<dt>script <i class="arg">arguments</i></dt>
<dd><p>The specification of the private's parameters.
Please read <i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i> for the details.</p></dd>
<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>
................................................................................
runtime to manage word-completion, etc.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it, although they have indirect access through
parameters and their container.</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">&lt;private&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></dt>



<dd><p>This method is given the completion state <i class="arg">parse</i> of a partial
command line and returns a list of strings which are the valid
completions at this point.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p>
<p>-- TODO -- Describe the state fields and their meaning.</p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">&lt;private&gt;</b> <b class="method">do</b> <span class="opt">?<i class="arg">word</i>...?</span></a></dt>
<dd><p>This method parses the <i class="arg">word</i>s of the command line, matching them
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">







|







 







>
>
>
|
|




|
<







164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
...
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201

202
203
204
205
206
207
208
<dl class="arguments">
<dt>object <i class="arg">super</i></dt>
<dd><p>The instance command of the actor (officer actually) which contains the new private.</p></dd>
<dt>string <i class="arg">name</i></dt>
<dd><p>The user-visible name of the command.</p></dd>
<dt>script <i class="arg">arguments</i></dt>
<dd><p>The specification of the private's parameters.
Please read <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i> for the details.</p></dd>
<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>
................................................................................
runtime to manage word-completion, etc.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it, although they have indirect access through
parameters and their container.</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">&lt;private&gt;</b> <b class="method">complete-words</b> <i class="arg">parse</i></a></dt>
<dd><p>This method is part of the main shell command line
completion. For the details of its workings please read
<i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Given the completion state <i class="arg">parse</i> of a partial
command line it returns a list of strings which are the valid
completions at this point.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>

</dl></dd>
<dt><a name="4"><b class="cmd">&lt;private&gt;</b> <b class="method">do</b> <span class="opt">?<i class="arg">word</i>...?</span></a></dt>
<dd><p>This method parses the <i class="arg">word</i>s of the command line, matching them
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">

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

144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<p>Readers interested in the standard validation types of the
framework should read <i class="term"><a href="cmdr_validate.html">Cmdr - Standard validation types for parameters</a></i>.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Background</a></h2>
<p>Validation types are Cmdr's answer to the necessity of moving
between the string and internal representations of
<b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b> instances.
Given a string representation they either return the associated
internal representation or raise an error, signaling that the input
was illegal. This part of their work, the verification of the legality
of the input string gave them their name.</p>
<p>The general concept of <i class="term">validation types</i> was taken from
package <b class="package">snit</b>, and modified to suit Cmdr.
Where <b class="package">snit</b>'s types expect only a single method to validate
the input we expect all types to support an ensemble of <em>four</em>
methods.
One for the basic validation and transformation of the string, another
for the release of any internal representation so generated, plus two
more for delivery of a default representation and support for command
line completion.
The details (method names, signatures, etc.) can be found in section
<span class="sectref"><a href="#section3">API</a></span> below.</p>
<p>As an example the implementation of the standard boolean
validation type is shown in section <span class="sectref"><a href="#section4">Example</a></span>.</p>







|
|
|
|

|
|
|

|







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<p>Readers interested in the standard validation types of the
framework should read <i class="term"><a href="cmdr_validate.html">Cmdr - Standard validation types for parameters</a></i>.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Background</a></h2>
<p>Validation types are Cmdr's answer to the necessity of moving
between the string and internal representations of
<b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b> instances.
Given a <i class="term">string representation</i> they either return the
associated <i class="term">internal representation</i> or raise an error,
signaling that the string was illegal. This part of their work, the
verification of the legality of the input string gave them their name.</p>
<p>The general concept of <i class="term">validation types</i> was taken from
<b class="package">snit</b>, and modified to suit Cmdr.
Where snit's types expect only a single method to validate the input
Cmdr expects all types to support an ensemble of <em>four</em>
methods.
One for the basic validation and transformation of the input, another
for the release of any internal representation so generated, plus two
more for delivery of a default representation and support for command
line completion.
The details (method names, signatures, etc.) can be found in section
<span class="sectref"><a href="#section3">API</a></span> below.</p>
<p>As an example the implementation of the standard boolean
validation type is shown in section <span class="sectref"><a href="#section4">Example</a></span>.</p>

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

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
<td class="#tocright">Cmdr - Parameter Specification Language</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_dsl_private.html">cmdr_dsl_private</a></td>
<td class="#tocright">Cmdr - Private Specification Language</td>
</tr>
<tr class="#tocodd"  >




<td class="#tocleft" ><a href="files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
<td class="#tocright">Cmdr - How To Get The Sources</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_howto_installation.html">cmdr_installation</a></td>
<td class="#tocright">Cmdr - The Installer's Guide</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_introduction.html">cmdr_introduction</a></td>
<td class="#tocright">Cmdr - Introduction to the project</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_license.html">cmdr_license</a></td>
<td class="#tocright">Cmdr - License</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_vtypes.html">cmdr_vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|





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
<td class="#tocright">Cmdr - Parameter Specification Language</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_dsl_private.html">cmdr_dsl_private</a></td>
<td class="#tocright">Cmdr - Private Specification Language</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_helpformats.html">cmdr_helpformats</a></td>
<td class="#tocright">Cmdr - Writing custom help formats</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
<td class="#tocright">Cmdr - How To Get The Sources</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_howto_installation.html">cmdr_installation</a></td>
<td class="#tocright">Cmdr - The Installer's Guide</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_introduction.html">cmdr_introduction</a></td>
<td class="#tocright">Cmdr - Introduction to the project</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="files/cmdr_license.html">cmdr_license</a></td>
<td class="#tocright">Cmdr - License</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="files/cmdr_vtypes.html">cmdr_vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
</table>
</dl><hr></body></html>

Changes to embedded/www/image/architecture.png.

cannot compute difference between binary files

Changes to embedded/www/image/erd.png.

cannot compute difference between binary files

Added embedded/www/image/main-shell.png.

cannot compute difference between binary files

Added embedded/www/image/mini-shell.png.

cannot compute difference between binary files

Changes to embedded/www/image/pkg_dependencies.png.

cannot compute difference between binary files

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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </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_actor.html"> cmdr::actor </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_officer.html"> cmdr::officer </a> &#183; <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> &#183; <a href="doc/files/cmdr_private.html"> cmdr::private </a> &#183; <a href="doc/files/cmdr_util.html"> cmdr::util </a> &#183; <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> &#183; <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> &#183; <a href="doc/files/cmdr_changes.html"> cmdr_changes </a> &#183; <a href="doc/files/cmdr_dev_completion.html"> cmdr_completion </a> &#183; <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> &#183; <a href="doc/files/cmdr_dsl.html"> cmdr_dsl </a> &#183; <a href="doc/files/cmdr_dsl_officer.html"> cmdr_dsl_officer </a> &#183; <a href="doc/files/cmdr_dsl_parameter.html"> cmdr_dsl_parameter </a> &#183; <a href="doc/files/cmdr_dsl_private.html"> cmdr_dsl_private </a> &#183; <a href="doc/files/cmdr_helpformats.html"> cmdr_helpformats </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_vtypes.html"> cmdr_vtypes </a>
</td></tr>
</table>
</body></html>

Changes to embedded/www/toc.html.

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
<td class="#tocright">Cmdr - Parameter Specification Language</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_dsl_private.html">cmdr_dsl_private</a></td>
<td class="#tocright">Cmdr - Private Specification Language</td>
</tr>
<tr class="#tocodd"  >




<td class="#tocleft" ><a href="doc/files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
<td class="#tocright">Cmdr - How To Get The Sources</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_installation.html">cmdr_installation</a></td>
<td class="#tocright">Cmdr - The Installer's Guide</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_introduction.html">cmdr_introduction</a></td>
<td class="#tocright">Cmdr - Introduction to the project</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_license.html">cmdr_license</a></td>
<td class="#tocright">Cmdr - License</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_vtypes.html">cmdr_vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
</table>
</dl><hr></body></html>







>
>
>
>



|



|



|



|





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
<td class="#tocright">Cmdr - Parameter Specification Language</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_dsl_private.html">cmdr_dsl_private</a></td>
<td class="#tocright">Cmdr - Private Specification Language</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_helpformats.html">cmdr_helpformats</a></td>
<td class="#tocright">Cmdr - Writing custom help formats</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_get_sources.html">cmdr_howto_get_sources</a></td>
<td class="#tocright">Cmdr - How To Get The Sources</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_howto_installation.html">cmdr_installation</a></td>
<td class="#tocright">Cmdr - The Installer's Guide</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_introduction.html">cmdr_introduction</a></td>
<td class="#tocright">Cmdr - Introduction to the project</td>
</tr>
<tr class="#tocodd"  >
<td class="#tocleft" ><a href="doc/files/cmdr_license.html">cmdr_license</a></td>
<td class="#tocright">Cmdr - License</td>
</tr>
<tr class="#toceven" >
<td class="#tocleft" ><a href="doc/files/cmdr_vtypes.html">cmdr_vtypes</a></td>
<td class="#tocright">Cmdr - Writing custom validation types</td>
</tr>
</table>
</dl><hr></body></html>