Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Image tweak, regenerated embedded. |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
f244dccfb46adb722aeb015348d1dc32 |
User & Date: | aku 2013-11-29 06:41:15.874 |
Context
2013-11-29
| ||
19:36 | Added early mention and reference to custom validation types and help formats to the main intro check-in: 1a9bcfb664 user: andreask tags: trunk | |
06:41 | Image tweak, regenerated embedded. check-in: f244dccfb4 user: aku tags: trunk | |
2013-11-28
| ||
23:59 | Link from intro to dsl intro, starting the chain through dsl and flow. check-in: 4e1cb948ac user: andreask tags: trunk | |
Changes
Changes to doc/parts/dsl_general.inc.
︙ | ︙ | |||
13 14 15 16 17 18 19 | Each [term private] is responsible for a single action and knows how to perform it, and the set of [term parameter]s used to configure that action at runtime. [para] The same model is graphically presented in the Entity-Relationship-Diagram below. | | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Each [term private] is responsible for a single action and knows how to perform it, and the set of [term parameter]s used to configure that action at runtime. [para] The same model is graphically presented in the Entity-Relationship-Diagram below. [para] [image erd] [para] The [term actor] in that diagram is the common base class for the ensembles and commands and not directly relevant to users. [para] The [term config] on the other hand is the second interface seen by the user, as the sole argument to the action command prefix of [cmd private]. See [term [vset TITLE_DSL_OFFICER]] for the details. |
︙ | ︙ |
Added embedded/man/files/cmdr_dev_dsl.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 | '\" '\" Generated from file 'cmdr_dev_dsl\&.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_dev~dsl" n 0 doc "Cmdr, a framework for command line parsing and dispatch" .BS .SH NAME cmdr_dev~dsl \- Cmdr - Internals of DSL handling .SH SYNOPSIS package require \fBcmdr \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 internal document provides an overview on how the framework implements the specification languages for officers, privates, and parameters\&. .PP For more information about other internals of the framework please read \fICmdr - The Developer's Guide\fR\&. .SH "OFFICER DSL" .PP The officer DSL is implemented in \fBcmdr::officer\fR\&. .PP While the specification is supplied with the instance constructor it is not processed immediately, but saved for when it is actually needed\&. .PP The internal instance method \fBSetup\fR is called at all places requiring access to the specification and processes it (once, on first call) to provide the necessary in-memory structures\&. .PP The DSL commands map to instance methods as shown below: .TP \fBalias\fR \fBAlias\fR .TP \fBcommon\fR \fBcmdr::actor\fR \fBset\fR .TP \fBdefault\fR \fBDefault\fR .TP \fBdescription\fR \fBcmdr::actor\fR \fBdescription:\fR .TP \fBehandler\fR \fBehandler\fR .TP \fBofficer\fR \fBOfficer\fR, forward to \fBDefineAction\fR .TP \fBprivate\fR \fBPrivate\fR, forward to \fBDefineAction\fR .TP \fBundocumented\fR \fBcmdr::actor\fR \fBundocumented\fR .PP .SH "PRIVATE DSL" .PP The private DSL is only partially implemented in \fBcmdr::private\fR\&. Most of the implementation is in \fBcmdr::config\fR\&. .PP While the specification is supplied with the instance constructor it is not processed immediately, but saved for when it is actually needed\&. .PP The internal instance method \fBSetup\fR is called at all places requiring access to the specification and processes it (once, on first call) to provide the necessary in-memory structures\&. This then delegates to the embedded config instance\&. .PP The DSL commands map to \fIconfig\fR instance methods as shown below: .TP \fBdescription\fR \fBDescription\fR, forward to \fBcmdr::actor\fR \fBdescription:\fR .TP \fBinput\fR \fBInput\fR, forward to \fBDefineParameter\fR) .TP \fBinteractive\fR \fBInteractive\fR .TP \fBoption\fR \fBOption\fR, forward to \fBDefineParameter\fR) .TP \fBsection\fR \fBSection\fR .TP \fBstate\fR \fBState\fR, forward to \fBDefineParameter\fR) .TP \fBundocumented\fR \fBUndocumented\fR, forward to \fBcmdr::actor\fR \fBundocumented\fR .TP \fBuse\fR \fBUse\fR .PP .SH "PARAMETER DSL" .PP The parameter DSL is implemented in \fBcmdr::parameter\fR\&. .PP The specification is supplied with the instance constructor and processed immediately\&. This is different from officers and privates which defer processing until use\&. When a parameter is declared the containing private is in use, and so is the parameter\&. Thus no delay\&. .PP The DSL commands map to instance methods as shown below: .TP \fBalias\fR \fBAlias\fR .TP \fBdefault\fR \fBDefault\fR .TP \fBdefered\fR \fBDefered\fR .TP \fBgenerate\fR \fBGenerate\fR .TP \fBimmediate\fR \fBImmediate\fR .TP \fBinteract\fR \fBInteract\fR .TP \fBlabel\fR \fBLabel\fR .TP \fBlist\fR \fBList\fR .TP \fBno-promotion\fR \fBNoPromote\fR .TP \fBoptional\fR \fBOptional\fR .TP \fBpresence\fR \fBPresence\fR .TP \fBtest\fR \fBTest\fR .TP \fBundocumented\fR \fBUndocumented\fR .TP \fBvalidate\fR \fBValidate\fR .TP \fBwhen-complete\fR \fBWhenComplete\fR .TP \fBwhen-set\fR \fBWhenSet\fR .PP .SH "BUGS, IDEAS, FEEDBACK" Both the package(s) and this documentation will undoubtedly contain bugs and other problems\&. Please report such at \fICmdr Tickets\fR [https:/core\&.tcl\&.tk/akupries/cmdr]\&. .PP Please also report any ideas you may have for enhancements of either package(s) and/or documentation\&. .SH KEYWORDS arguments, command hierarchy, command line completion, command line handling, command tree, editing command line, help for command line, hierarchy of commands, interactive command shell, optional arguments, options, parameters, processing command line, tree of commands .SH COPYRIGHT .nf Copyright (c) 2013 Andreas Kupries Copyright (c) 2013 Documentation, Andreas Kupries .fi |
Changes to embedded/man/files/cmdr_dsl.n.
︙ | ︙ | |||
258 259 260 261 262 263 264 265 266 267 268 269 270 271 | \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .PP .SH "INTRODUCTORY EXAMPLES" Instead of immediately diving into the full syntax of the specification language first a few examples to demonstrate the general look and feel, plus basic features\&. .SS "BASIC PRIVATE COMMANDS WITH INPUTS" .PP | > > | 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 | \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .IP [5] \fICmdr - Runtime Processing Flow\fR .PP .SH "INTRODUCTORY EXAMPLES" Instead of immediately diving into the full syntax of the specification language first a few examples to demonstrate the general look and feel, plus basic features\&. .SS "BASIC PRIVATE COMMANDS WITH INPUTS" .PP |
︙ | ︙ | |||
371 372 373 374 375 376 377 378 379 380 381 382 383 384 | private list { \&.\&.\&. } ::foo::backend::alias::list } } \&.\&.\&. .CE .SH "LANGUAGE REFERENCE" With the examples behind us we can now go and specify the entire specification language\&. If you have skipped here on first reading, ignoring the examples, please go back and read them first\&. .PP The conceptual model underneath the command hierarchy is that | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | private list { \&.\&.\&. } ::foo::backend::alias::list } } \&.\&.\&. .CE .SS "SIMPLE BACKEND" .PP This example shows a possible implementation of the backend for the command hierarchies shown in the previous two sections\&. It is important to note, I believe, that this backend works for both command hierarchies, despite the changes to the command names (flat versus nesting) they do\&. .PP Note further that while this example uses a \fBnamespace ensemble\fR to organize the backend other methods are possible too, i\&.e\&. all the various object systems for Tcl would be suitable as well\&. .PP Lastly, for the sake of brevity this code is incomplete, not showing any utility commands we may have importet from somewhere else, nor the low-level workhorse procedures operating on the actual alias database or whatnot\&. .PP .CS # -*- tcl -*- # # ## ### ##### ######## ############# ##################### namespace eval ::foo::backend::alias { namespace export list add remove namespace ensemble create } # # ## ### ##### ######## ############# ##################### ## Command implementations\&. proc ::foo::backend::alias::list {config} { set aliases [manager known] if {[$config @json]} { puts [jmap aliases $aliases] return } [table::do t {Alias Command} { foreach {name command} $aliases { $t add $name $command } } show display] return } proc ::foo::backend::alias::add {config} { set name [$config @name] set command [$config @command] manager add $name $command say [color green "Successfully aliased '$name' to '$command'"] return } proc ::foo::backend::alias::remove {config} { set name [$config @name] if {![manager has $name]} { err [color red "Unknown alias '$name'"] } else { manager remove $name say [color green "Successfully unaliased '$name'"] } return } # # ## ### ##### ######## ############# ##################### package provide foo::backend::alias 0 .CE .SH "LANGUAGE REFERENCE" With the examples behind us we can now go and specify the entire specification language\&. If you have skipped here on first reading, ignoring the examples, please go back and read them first\&. .PP The conceptual model underneath the command hierarchy is that |
︙ | ︙ | |||
393 394 395 396 397 398 399 400 401 402 403 404 405 406 | here called \fIprivate\fRs\&. Each \fIprivate\fR is responsible for a single action and knows how to perform it, and the set of \fIparameter\fRs used to configure that action at runtime\&. .PP The same model is graphically presented in the Entity-Relationship-Diagram below\&. .PS .nf is-a is-a /-1:1-> actor <-1:1-\\ / \\ officer ---1:(0-n)--> private --1:1-> config --1:(0-n)-> parameter | ^ has has has | > | 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 | here called \fIprivate\fRs\&. Each \fIprivate\fR is responsible for a single action and knows how to perform it, and the set of \fIparameter\fRs used to configure that action at runtime\&. .PP The same model is graphically presented in the Entity-Relationship-Diagram below\&. .PP .PS .nf is-a is-a /-1:1-> actor <-1:1-\\ / \\ officer ---1:(0-n)--> private --1:1-> config --1:(0-n)-> parameter | ^ has has has |
︙ | ︙ |
Changes to embedded/man/files/cmdr_dsl_officer.n.
︙ | ︙ | |||
277 278 279 280 281 282 283 284 285 286 287 288 289 290 | \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .PP .SH "LANGUAGE REFERENCE" .TP \fBalias\fR \fIname\fR \fB=\fR \fIname'\fR\&.\&.\&. .TP \fBalias\fR \fIname\fR This is a structuring command, for the command hierarchy\&. Its main | > > | 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .IP [5] \fICmdr - Runtime Processing Flow\fR .PP .SH "LANGUAGE REFERENCE" .TP \fBalias\fR \fIname\fR \fB=\fR \fIname'\fR\&.\&.\&. .TP \fBalias\fR \fIname\fR This is a structuring command, for the command hierarchy\&. Its main |
︙ | ︙ | |||
375 376 377 378 379 380 381 | \fBehandler\fR \fIcmdprefix\fR This is an advanced command which should normally only be specified at the top of the whole hierarchy (from which its value will automatically propagate to all subordinates)\&. .sp At runtime the framework will call the specified command prefix with a single argument, a script whose execution is equivalent to the | | | | | | 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 | \fBehandler\fR \fIcmdprefix\fR This is an advanced command which should normally only be specified at the top of the whole hierarchy (from which its value will automatically propagate to all subordinates)\&. .sp At runtime the framework will call the specified command prefix with a single argument, a script whose execution is equivalent to the phases \fIParsing\fR, \fICompletion\fR, and \fIExecution\fR of the framework, as described in \fICmdr - Runtime Processing Flow\fR\&. The handler \fImust\fR call this script, and can perform any application-specific actions before and after\&. .sp This handler's main uses are two-fold: .RS .IP [1] Capture and hande application-specific errors which should not abort the application, nor shown as Tcl stacktrace\&. .IP [2] |
︙ | ︙ | |||
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 | > > > | 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 | 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\&. .sp For an example see section \fISimple backend\fR of \fICmdr - Introduction to the Specification Language\fR\&. .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.
︙ | ︙ | |||
291 292 293 294 295 296 297 298 299 300 301 302 303 304 | \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .PP .SH "LANGUAGE REFERENCE" .PP The \fIparameter\fRs of \fIprivate\fRs are the heart of the system, providing the space needed to transfer command arguments to their implementations, and having the most attributes controlling their behaviour\&. | > > | 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .IP [5] \fICmdr - Runtime Processing Flow\fR .PP .SH "LANGUAGE REFERENCE" .PP The \fIparameter\fRs of \fIprivate\fRs are the heart of the system, providing the space needed to transfer command arguments to their implementations, and having the most attributes controlling their behaviour\&. |
︙ | ︙ | |||
389 390 391 392 393 394 395 | This setting is only applicable to \fIinput\fRs, as \fIoption\fRs are optional by definition, and \fIstate\fR is hidden\&. .TP \fBtest\fR This command is related to the above, switching the runtime from the standard regime for acceptance (based on counting and thresholds) to a different regime based on validation\&. | > | > | 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 | This setting is only applicable to \fIinput\fRs, as \fIoption\fRs are optional by definition, and \fIstate\fR is hidden\&. .TP \fBtest\fR This command is related to the above, switching the runtime from the standard regime for acceptance (based on counting and thresholds) to a different regime based on validation\&. .sp More details are explained in section \fIParsing\fR of \fICmdr - Runtime Processing Flow\fR\&. .TP \fBundocumented\fR This command excludes the \fIparameter\fR from the generated help\&. .sp Its main use case is the hiding of \fIoption\fRs giving an application developer access to the internals of their application, something a regular user has no need of, and doesn't have to know |
︙ | ︙ | |||
659 660 661 662 663 664 665 666 667 668 669 670 671 672 | validate (validate) | | test | immediate | defered validate (release) | | test | immediate | defered --------------------+----------+---------+-------------+----------- when-complete | | | immediate | defered --------------------+----------+---------+-------------+----------- .CE .SH "RELATED DOCUMENTS" .IP [1] \fICmdr - Introduction to the project\fR .IP [2] \fICmdr - License\fR .IP [3] \fICmdr - Log of Changes\fR | > > | 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 | validate (validate) | | test | immediate | defered validate (release) | | test | immediate | defered --------------------+----------+---------+-------------+----------- when-complete | | | immediate | defered --------------------+----------+---------+-------------+----------- .CE .PP Please continue reading with \fICmdr - Runtime Processing Flow\fR\&. .SH "RELATED DOCUMENTS" .IP [1] \fICmdr - Introduction to the project\fR .IP [2] \fICmdr - License\fR .IP [3] \fICmdr - Log of Changes\fR |
︙ | ︙ |
Changes to embedded/man/files/cmdr_dsl_private.n.
︙ | ︙ | |||
274 275 276 277 278 279 280 281 282 283 284 285 286 287 | \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .PP .SH "LANGUAGE REFERENCE" .PP The specification of \fIprivate\fRs is quite easy, with only seven commands\&. The important parts are found in the \fIparameter\fR specifications, explained in \fICmdr - Parameter Specification Language\fR\&. .TP | > > | 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 | \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .IP [5] \fICmdr - Runtime Processing Flow\fR .PP .SH "LANGUAGE REFERENCE" .PP The specification of \fIprivate\fRs is quite easy, with only seven commands\&. The important parts are found in the \fIparameter\fR specifications, explained in \fICmdr - Parameter Specification Language\fR\&. .TP |
︙ | ︙ | |||
320 321 322 323 324 325 326 327 328 329 330 331 332 333 | 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 | > > > > | 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 | 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\&. .sp Note further that \fIprivates\fR not put into any section are automatically placed into a generated section named \fBMiscellaneous\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 |
︙ | ︙ |
Added embedded/man/files/cmdr_flow.n.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 | '\" '\" Generated from file 'cmdr_flow\&.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-spec-flow" n 0 doc "Cmdr, a framework for command line parsing and dispatch" .BS .SH NAME cmdr-spec-flow \- Cmdr - Runtime Processing Flow .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 is for users of the cmdr framework\&. If you have not read \fICmdr - Introduction to the Specification Language\fR and the related documents yet, please do so\&. The explanations how the framework processes a command line at runtime guided by a specified command hierarchy presuppose knowledge of command-hierarchy specifications\&. .PP A command line is processed in four distinct phases, namely \fBDispatch\fR, \fBParsing\fR, \fBCompletion\fR, and \fBExecution\fR\&. Each is explained in more detail in the referenced sections\&. .SH "RELATED SPECIFICATION DOCUMENTS" .IP [1] \fICmdr - Introduction to the Specification Language\fR .IP [2] \fICmdr - Officer Specification Language\fR .IP [3] \fICmdr - Private Specification Language\fR .IP [4] \fICmdr - Parameter Specification Language\fR .IP [5] \fICmdr - Runtime Processing Flow\fR .PP .SH DISPATCH .PP The first phase determines the \fBcmdr::private\fR instance to use\&. To this end it processes words from the command line and uses them to navigate the tree of \fBcmdr::officer\fR instances until a \fIprivate\fR is reached\&. .PP Each word of the command line is treated as the name of the \fBcmdr::officer\fR instance to descend into\&. An error will be thrown when encountering a name for which there is no known actor (officer or private), and the current \fIofficer\fR has no \fIdefault\fR declared for it\&. .PP On the converse, when reaching the end of the command line but not reaching a \fIprivate\fR the framework will not throw an error\&. It will start an interactive command line shell instead\&. This \fImain shell\fR provides access to exactly the commands of the \fBcmdr::officer\fR instance which was reached, plus two pseudo-commands to either exit this shell or gain help\&. .PP Execution of the command tree specification, i\&.e\&. the generation of the in-memory command tree and the actor instances bound in it, is intertwined with this descent through the command tree\&. I\&.e\&. instead of processing the entire specification immediately in full it is lazily unfolded on demand, ignoring all parts which are not needed\&. Note that the generated data structures are not destroyed after \fBExecution\fR, but kept, avoiding the need to re-parse the parts of the specification already used at least once when an interactive command line shell is active\&. .SH PARSING .PP This is the most complex phase internally, as it has to assign the left-over words to the parameters of the chosen \fBcmdr::private\fR instance, taking into account the kind of parameters, their requiredness, listness, and other attributes\&. .PP Generally processing the words from left to right \fIoptions\fR are detected in all positions, through their flags (primary, aliases, and all unique prefixes), followed by their (string) value to assign\&. .PP When a word cannot be the flag for an option the positional \fIinputs\fR are considered, in order of their declarations\&. For a mandatory \fIinput\fR the word is simply assigned as its string value and processing continues with the next word, and the next \fIinput\fR, if any\&. Operation becomes more complex when the \fIinput\fR under consideration is \fIoptional\fR\&. Now it is necessary to truly decide if the word should be assigned to this \fIinput\fR or the following\&. .PP The standard method for this decision is to count words and compare to the count of mandatory \fIinputs\fR left\&. If there are more words available than required to satisfy all mandatory \fIinputs\fR, then we can and do assign the current word to the optional input\&. Otherwise the current \fIinput\fR is skipped and we consider the next\&. A set of condensed examples can be found in section \fBExample for Handling optional Inputs by Threshold\fR\&. They demonstrate how a various numbers of argument words are assigned to a specific set of \fIinputs\fR, \fIoptional\fR and non\&. This is called the \fIthreshold\fR algorithm\&. .PP The non-triviality in the above description is in the phrase to \fIcount words\fR\&. We cannot simply count all words left on the command line\&. To get a proper count we have discard/ignore all words belonging to options\&. At this point the processor essentially works ahead, processing and removing all flags/options and their arguments from the command line before performing the comparison and making its decision\&. .PP The whole behaviour however can be changed via \fBtest\fR (See section \fIGeneral control\fR of \fICmdr - Parameter Specification Language\fR)\&. Instead of counting words the current word is run through the validation type of the current \fIinput\fR\&. On acceptance the value is assigned to it, otherwise that \fIinput\fR is skipped and the next one put under consideration\&. .PP After all of the above the system will process any options found after the last word assigned to the last \fIinput\fR to consider\&. .PP Errors are thrown if we either find more words than \fIinputs\fR to assign to, or encounter an unknown option flag\&. Note that not having enough words for all required \fIinputs\fR is not an error unless the framework is not allowed to start an interactive shell\&. In this \fImini shell\fR all parameters are mapped to shell commands taking a single argument, the string value of parameter to assign\&. Additional five pseudo commands are available to either abort, or commit to the action, or gain help (\fB\&.ok\fR, \fB\&.run\fR, \fB\&.exit\fR, \fB\&.cancel\fR, and \fB\&.help\fR)\&. .PP Parameters marked as \fIlist\fR-valued also trigger special behaviours\&. For \fIoptions\fR the assigned values get accumulated instead of each new value overwriting the last\&. For \fIinputs\fR only one such parameter can exist, and will be the last of the \fIprivate\fR\&. The processor now takes all remaining words and assign them to this parameter\&. If the list is also optional then options may be processed ahead or not, depending on the chosen decision mode, as described for regular inputs above\&. .PP Then are the \fIboolean\fR and \fIpresence\fR \fIoptions\fR modifying the handling of flags and flag arguments\&. The details of this were already explained in section \fIValidation\fR of \fICmdr - Parameter Specification Language\fR\&. .SS "EXAMPLE FOR HANDLING OPTIONAL INPUTS BY THRESHOLD" The examples in this section demonstrate how the \fIthreshold\fR algorithm assigns a various number of argument words to a specific set of \fIinputs\fR, \fIoptional\fR and non\&. .PP .CS Parameter | A? | B | C? | D? | E #Required | 2| | 1| 1| --------------+----+---+----+----+---- 2 arguments: | | a | | | b 3 arguments: | a | b | | | c 4 arguments: | a | b | c | | d 5 arguments: | a | b | c | d | e .CE .SH COMPLETION .PP This phase is reached when all words of the command line have been processed and no error was thrown by the preceding phases\&. At this point we know the \fBcmdr::private\fR instance to use, and its parameters may have a string representation\&. .PP All \fIimmediate\fR-mode parameters are now given their internal representation\&. The parameters marked as \fIdefered\fR are ignored here and will get theirs on first access by the backend\&. .PP This completion of parameters is done in their order of declaration within the enclosing \fIprivate\fR command\&. Note that when parameters have dependencies between them, i\&.e\&. the calculation of their internal representation requires the internal representation of another parameter, then this order may be violated as the requesting parameter triggers completion in the requested one on access\&. If this is behaviour not wanted then it is the responsibility of the user specifying the \fIprivate\fR to place the parameters into an order where all parameters access only previously completed parameters during their own completion\&. .SH EXECUTION .PP The last phase is also the most simple\&. .PP It only invokes the Tcl command prefix associated with the chosen \fBcmdr::private\fR instance, providing it with the \fBcmdr::config\fR instance holding the parameter information extracted from the command line as its single argument\&. .PP For an example of very simple action implementations see section \fISimple backend\fR of \fICmdr - Introduction to the Specification Language\fR\&. .PP All parameters declared for a \fIprivate\fR are made accessible through individual methods associated with each\&. As example, a parameter with system name \fBP\fR is mapped to the method \fB@P\fR, with all instance methods provided by the \fBcmdr::parameter\fR class accessible as sub-methods\&. This general access to all methods may be removed in the future, restricting actions and callbacks to a safe subset\&. .PP Another place providing information to actions is the root and other actors of the command hierarchy itself, via \fBcommon\fR blocks whose value is managed by the system\&. Currently we have .TP \fB*in-shell*\fR This block is read-only, and only found in the root actor\&. Its value is managed by the framework\&. It is a boolean flag indicating if an interactive shell is currently active (\fBtrue\fR) or not (\fBfalse\fR)\&. This can be used to modulate command messages and other context-dependent things\&. .sp \fINote\fR that the block will not exist until after the first shell was active\&. This means that a missing \fB*in-shell*\fR block should be treated like \fBfalse\fR\&. .TP \fB*prefix*\fR This block is read-only and found in the private actor for the currently executing action command prefix, accessible through the \fBcmdr::config\fR instance method \fBcontext\fR\&. Its value is managed by the framework\&. It is a list of the command names used to reach the \fIprivate\fR instance\&. This is not the logical path in the command hierarchy, but the actual path taken, which may be through aliases\&. .PP .PP Calling \fB@P\fR without arguments is a shorthand for calling ``@P value'', i\&.e\&. the retrieval of the parameter's internal representation\&. Which may calculate the value if the call is the first access and the parameter specified as \fIdefered\fR\&. .SH "RELATED DOCUMENTS" .IP [1] \fICmdr - Introduction to the project\fR .IP [2] \fICmdr - License\fR .IP [3] \fICmdr - Log of Changes\fR .IP [4] \fICmdr - How To Get The Sources\fR .IP [5] \fICmdr - The Installer's Guide\fR .IP [6] \fICmdr - The Developer's Guide\fR .PP .SH "BUGS, IDEAS, FEEDBACK" Both the package(s) and this documentation will undoubtedly contain bugs and other problems\&. Please report such at \fICmdr Tickets\fR [https:/core\&.tcl\&.tk/akupries/cmdr]\&. .PP Please also report any ideas you may have for enhancements of either package(s) and/or documentation\&. .SH KEYWORDS arguments, command hierarchy, command line completion, command line handling, command tree, editing command line, help for command line, hierarchy of commands, interactive command shell, optional arguments, options, parameters, processing command line, tree of commands .SH COPYRIGHT .nf Copyright (c) 2013 Andreas Kupries Copyright (c) 2013 Documentation, Andreas Kupries .fi |
Changes to embedded/man/files/cmdr_help.n.
︙ | ︙ | |||
291 292 293 294 295 296 297 | .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 | | > > > > > > > > > > > > > > > > > | 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 | .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 by the user, in the root of the command hierarchy\&. Its value has to be a dictionary mapping from the names of toplevel sections/categories to an integer number\&. This is used to change the order of displaying these sections in the generated text\&. .PP Sections with higher/larger numbers are shown first, and lower/smaller numbers move towards the end\&. Negative numbers are possible\&. .PP Sections not mentioned in the dictionary are assigned their natural number\&. This is calculated by sorting all sections alphabetically (\fB-dict\fR) ascending and assigning \fB0\fR to the first section, \fB-10\fR to the next, and so on\&. .PP The generated section/category \fBMiscellaneous\fR is given the number \fB-10000\fR to force it to the end (bottom) of the help text, if it was generated\&. .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 |
︙ | ︙ |
Changes to embedded/man/files/cmdr_howto_development.n.
︙ | ︙ | |||
476 477 478 479 480 481 482 483 484 485 486 487 488 489 | .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] \fICmdr - License\fR .IP [3] \fICmdr - Log of Changes\fR | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 | .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 "COMMON BLOCKS" The framework reserves all blocks whose name begins with a star, i\&.e \fB*\fR, for its own use\&. Currently the following names are in use: .TP \fB*all*\fR Publicly documented for users, this block is expected to contain parameter specification commands\&. These commands are automatically added to all privates found in the command hierarchy containing the block\&. .sp The details are explained by the description of command \fBcommon\fR in \fICmdr - Officer Specification Language\fR\&. .TP \fB*category-order*\fR Publicly documented for users, this block is expected to contain a dictionary mapping from toplevel section/category names to an integer number to override the natural order of displaying these sections in the help\&. .sp The details are explained in section \fIFormat Notes\fR of \fICmdr - (Internal) Utilities for help text formatting and setup\fR\&. .TP \fB*prefix*\fR Publicly documented for users as read-only this block's value is managed by the framework\&. Set during the \fIDispatch\fR phase it provides to access to the actual command name used to invoke a \fIprivate\fR\&. .sp See also section \fIExecution\fR of \fICmdr - Runtime Processing Flow\fR\&. .TP \fB*in-shell*\fR Publicly documented for users as read-only this block's value is managed by the framework\&. Not set until the first main- or mini-shell was active its value is boolean flag indicating if an interactive shell is currently active (\fBtrue\fR) or not (\fBfalse\fR, or not existing)\&. .sp See also section \fIExecution\fR of \fICmdr - Runtime Processing Flow\fR\&. .PP .SH "RELATED DOCUMENTS" .IP [1] \fICmdr - Introduction to the project\fR .IP [2] \fICmdr - License\fR .IP [3] \fICmdr - Log of Changes\fR |
︙ | ︙ |
Changes to embedded/man/files/cmdr_introduction.n.
︙ | ︙ | |||
318 319 320 321 322 323 324 325 326 327 328 329 330 331 | straight-forward, following mostly directly out of the relationships shown above, plus the few where the utilities are imported\&. To reduce the complexity of the diagram below a few direct dependencies on \fBcmdr::util\fR were omitted where indirectly present through other dependencies (i\&.e\&. through \fBcmdr::help\fR): .PP IMAGE: pkg_dependencies .SH "RELATED DOCUMENTS" .IP [1] \fICmdr - Introduction to the project\fR .IP [2] \fICmdr - License\fR .IP [3] \fICmdr - Log of Changes\fR | > > > | 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 | straight-forward, following mostly directly out of the relationships shown above, plus the few where the utilities are imported\&. To reduce the complexity of the diagram below a few direct dependencies on \fBcmdr::util\fR were omitted where indirectly present through other dependencies (i\&.e\&. through \fBcmdr::help\fR): .PP IMAGE: pkg_dependencies .SH "COMMAND HIERARCHY SPECIFICATIONS" This is a bit large for this document, and can be found in the separate \fICmdr - Introduction to the Specification Language\fR\&. .SH "RELATED DOCUMENTS" .IP [1] \fICmdr - Introduction to the project\fR .IP [2] \fICmdr - License\fR .IP [3] \fICmdr - Log of Changes\fR |
︙ | ︙ |
Changes to embedded/man/files/cmdr_parameter.n.
︙ | ︙ | |||
779 780 781 782 783 784 785 | parameter's string representation, "default" value, or "generate" callback\&. An error is thrown if the value could not be determined\&. (See method \fBundefined!\fR)\&. If the value is newly computed the action triggers the execution of the "when-complete" callback\&. .sp | > > > > > > > > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 | parameter's string representation, "default" value, or "generate" callback\&. An error is thrown if the value could not be determined\&. (See method \fBundefined!\fR)\&. If the value is newly computed the action triggers the execution of the "when-complete" callback\&. .sp .sp A parameter asked for its internal representation goes through the following steps to deliver the value: .RS .IP [1] If the internal representation is already known, simply deliver it as is\&. In other words, the result of the following steps is cached, and the steps are run only once\&. .IP [2] If the internal representation has been declared as undefined already, simply error out (again)\&. This is still part of caching the result generated by the following steps\&. .IP [3] If the parameter has a string representation use the parameter's \fIvalidation type\fR to convert it to the proper internal representation, and return it\&. .IP [4] If interactive entry is possible (per the parameter's specification) perform the interaction\&. This saves the entered data as string representation which is then validated as per the previous step\&. Aborting the interaction leaves the parameter as undefined (which is thrown as error)\&. .IP [5] If a \fBgenerate\fR callback exists use it to obtain the internal representation, and return it\&. .IP [6] If a \fBdefault\fR value exists make it the internal representation, and return it\&. .sp Side note: As the parameter DSL only allows the declaration of one of \fBdefault\fR or \fBgenerate\fR only one of these steps can trigger\&. .IP [7] If the parameter is \fBoptional\fR use the empty string as the internal representation and return it\&. .sp \fINote\fR that this rule should never trigger as the parameter DSL enforces that \fIoptional\fR parameters always have one of \fBdefault\fR or \fBgenerate\fR\&. .IP [8] Leave the parameter is undefined and fail (throw an error)\&. .RE .TP \fB<parameter>\fR \fBwhen-complete\fR This method returns the "when-complete" command prefix callback, if it was set, and an empty list otherwise\&. .TP \fB<parameter>\fR \fBwhen-set\fR This method returns the "when-set" command prefix callback, |
︙ | ︙ |
Changes to embedded/man/index.n.
︙ | ︙ | |||
269 270 271 272 273 274 275 276 277 278 279 280 281 282 | cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 | cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE command hierarchy .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE command line completion .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE command line handling .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE command tree .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE editing command line .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE help for command line .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE hierarchy of commands .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE interactive command shell .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP \fBfiles/cmdr_actor\&.n\fR cmdr::actor .TP \fBfiles/cmdr_config\&.n\fR cmdr::config .TP \fBfiles/cmdr_help\&.n\fR cmdr::help .TP \fBfiles/cmdr_help_json\&.n\fR cmdr::help::json .TP \fBfiles/cmdr_help_sql\&.n\fR cmdr::help::sql .TP \fBfiles/cmdr_officer\&.n\fR cmdr::officer .TP \fBfiles/cmdr_parameter\&.n\fR cmdr::parameter .TP \fBfiles/cmdr_private\&.n\fR cmdr::private .TP \fBfiles/cmdr_util\&.n\fR cmdr::util .TP \fBfiles/cmdr_validate\&.n\fR cmdr::validate .TP \fBfiles/cmdr_vcommon\&.n\fR cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE optional arguments .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes .TP \fBfiles/cmdr_howto_get_sources\&.n\fR cmdr-howto-get-sources .TP \fBfiles/cmdr_howto_installation\&.n\fR cmdr-installation .TP \fBfiles/cmdr_introduction\&.n\fR cmdr-introduction .TP \fBfiles/cmdr_license\&.n\fR cmdr-license .TP \fBfiles/cmdr_dsl\&.n\fR cmdr-spec-dsl .TP \fBfiles/cmdr_dsl_officer\&.n\fR cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP |
︙ | ︙ | |||
314 315 316 317 318 319 320 321 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .RE | > > > < > | 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE options .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes |
︙ | ︙ | |||
347 348 349 350 351 352 353 354 355 356 357 358 359 360 | cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP | > > > | 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 | cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP |
︙ | ︙ | |||
392 393 394 395 396 397 398 399 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .RE | > > > | | 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE parameters .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes |
︙ | ︙ | |||
425 426 427 428 429 430 431 432 433 434 435 436 437 438 | cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP | > > > | 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 | cmdr-spec-dsl-officer .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP |
︙ | ︙ | |||
470 471 472 473 474 475 476 477 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .RE | > > > | | 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE processing command line .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes |
︙ | ︙ | |||
504 505 506 507 508 509 510 | .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | < < < | < < < < < < | 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 | .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP |
︙ | ︙ | |||
626 627 628 629 630 631 632 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | | | | 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE tree of commands .RS .TP \fBfiles/cmdr\&.n\fR cmdr .TP \fBfiles/cmdr_changes\&.n\fR cmdr-changes |
︙ | ︙ | |||
738 739 740 741 742 743 744 | .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | < < < | < < < < < < | 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 | .TP \fBfiles/cmdr_dsl_parameter\&.n\fR cmdr-spec-dsl-parameter .TP \fBfiles/cmdr_dsl_private\&.n\fR cmdr-spec-dsl-private .TP \fBfiles/cmdr_flow\&.n\fR cmdr-spec-flow .TP \fBfiles/cmdr_helpformats\&.n\fR cmdr-user-helpformats .TP \fBfiles/cmdr_vtypes\&.n\fR cmdr-user-vtypes .TP |
︙ | ︙ | |||
860 861 862 863 864 865 866 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 | cmdr::validate::common .TP \fBfiles/cmdr_howto_development\&.n\fR cmdr_development .TP \fBfiles/cmdr_dev_completion\&.n\fR cmdr_dev~completion .TP \fBfiles/cmdr_dev_dsl\&.n\fR cmdr_dev~dsl .RE |
Changes to embedded/man/toc.n.
︙ | ︙ | |||
268 269 270 271 272 273 274 275 276 277 278 279 280 281 | .TP \fBcmdr-spec-dsl-parameter\fR \fIfiles/cmdr_dsl_parameter\&.n\fR: Cmdr - Parameter Specification Language .TP \fBcmdr-spec-dsl-private\fR \fIfiles/cmdr_dsl_private\&.n\fR: Cmdr - Private Specification Language .TP \fBcmdr-user-helpformats\fR \fIfiles/cmdr_helpformats\&.n\fR: Cmdr - Writing custom help formats .TP \fBcmdr-user-vtypes\fR \fIfiles/cmdr_vtypes\&.n\fR: Cmdr - Writing custom validation types .TP \fBcmdr::actor\fR | > > > | 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | .TP \fBcmdr-spec-dsl-parameter\fR \fIfiles/cmdr_dsl_parameter\&.n\fR: Cmdr - Parameter Specification Language .TP \fBcmdr-spec-dsl-private\fR \fIfiles/cmdr_dsl_private\&.n\fR: Cmdr - Private Specification Language .TP \fBcmdr-spec-flow\fR \fIfiles/cmdr_flow\&.n\fR: Cmdr - Runtime Processing Flow .TP \fBcmdr-user-helpformats\fR \fIfiles/cmdr_helpformats\&.n\fR: Cmdr - Writing custom help formats .TP \fBcmdr-user-vtypes\fR \fIfiles/cmdr_vtypes\&.n\fR: Cmdr - Writing custom validation types .TP \fBcmdr::actor\fR |
︙ | ︙ | |||
312 313 314 315 316 317 318 | \fIfiles/cmdr_vcommon\&.n\fR: Cmdr - Utilities for Validation Types .TP \fBcmdr_development\fR \fIfiles/cmdr_howto_development\&.n\fR: Cmdr - The Developer's Guide .TP \fBcmdr_dev~completion\fR \fIfiles/cmdr_dev_completion\&.n\fR: Cmdr - Internals of command line completion | > > > | 315 316 317 318 319 320 321 322 323 324 | \fIfiles/cmdr_vcommon\&.n\fR: Cmdr - Utilities for Validation Types .TP \fBcmdr_development\fR \fIfiles/cmdr_howto_development\&.n\fR: Cmdr - The Developer's Guide .TP \fBcmdr_dev~completion\fR \fIfiles/cmdr_dev_completion\&.n\fR: Cmdr - Internals of command line completion .TP \fBcmdr_dev~dsl\fR \fIfiles/cmdr_dev_dsl\&.n\fR: Cmdr - Internals of DSL handling |
Added embedded/www/doc/files/cmdr_dev_dsl.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 | <html><head> <title>cmdr_dev~dsl - 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_dev_dsl.man' by tcllib/doctools with format 'html' --> <! -- Copyright © 2013 Andreas Kupries -- Copyright © 2013 Documentation, Andreas Kupries --> <! -- CVS: $Id$ cmdr_dev~dsl.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_dev~dsl(n) 0 doc "Cmdr, a framework for command line parsing and dispatch"</h1> <div id="name" class="section"><h2><a name="name">Name</a></h2> <p>cmdr_dev~dsl - Cmdr - Internals of DSL handling</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">Officer DSL</a></li> <li class="section"><a href="#section3">Private DSL</a></li> <li class="section"><a href="#section4">Parameter DSL</a></li> <li class="section"><a href="#section5">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</b></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 document provides an overview on how the framework implements the specification languages for officers, privates, and parameters.</p> <p>For more information about other internals of the framework please read <i class="term"><a href="cmdr_howto_development.html">Cmdr - The Developer's Guide</a></i>.</p> </div> <div id="section2" class="section"><h2><a name="section2">Officer DSL</a></h2> <p>The officer DSL is implemented in <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b>.</p> <p>While the specification is supplied with the instance constructor it is not processed immediately, but saved for when it is actually needed.</p> <p>The internal instance method <b class="method">Setup</b> is called at all places requiring access to the specification and processes it (once, on first call) to provide the necessary in-memory structures.</p> <p>The DSL commands map to instance methods as shown below:</p> <dl class="definitions"> <dt><b class="cmd">alias</b></dt> <dd><p><b class="method">Alias</b></p></dd> <dt><b class="cmd">common</b></dt> <dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">set</b></p></dd> <dt><b class="cmd">default</b></dt> <dd><p><b class="method">Default</b></p></dd> <dt><b class="cmd">description</b></dt> <dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">description:</b></p></dd> <dt><b class="cmd">ehandler</b></dt> <dd><p><b class="method">ehandler</b></p></dd> <dt><b class="cmd">officer</b></dt> <dd><p><b class="method">Officer</b>, forward to <b class="method">DefineAction</b></p></dd> <dt><b class="cmd">private</b></dt> <dd><p><b class="method">Private</b>, forward to <b class="method">DefineAction</b></p></dd> <dt><b class="cmd">undocumented</b></dt> <dd><p><b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">undocumented</b></p></dd> </dl> </div> <div id="section3" class="section"><h2><a name="section3">Private DSL</a></h2> <p>The private DSL is only partially implemented in <b class="package"><a href="cmdr_private.html">cmdr::private</a></b>. Most of the implementation is in <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>.</p> <p>While the specification is supplied with the instance constructor it is not processed immediately, but saved for when it is actually needed.</p> <p>The internal instance method <b class="method">Setup</b> is called at all places requiring access to the specification and processes it (once, on first call) to provide the necessary in-memory structures. This then delegates to the embedded config instance.</p> <p>The DSL commands map to <em>config</em> instance methods as shown below:</p> <dl class="definitions"> <dt><b class="cmd">description</b></dt> <dd><p><b class="method">Description</b>, forward to <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">description:</b></p></dd> <dt><b class="cmd">input</b></dt> <dd><p><b class="method">Input</b>, forward to <b class="method">DefineParameter</b>)</p></dd> <dt><b class="cmd">interactive</b></dt> <dd><p><b class="method">Interactive</b></p></dd> <dt><b class="cmd">option</b></dt> <dd><p><b class="method">Option</b>, forward to <b class="method">DefineParameter</b>)</p></dd> <dt><b class="cmd">section</b></dt> <dd><p><b class="method">Section</b></p></dd> <dt><b class="cmd">state</b></dt> <dd><p><b class="method">State</b>, forward to <b class="method">DefineParameter</b>)</p></dd> <dt><b class="cmd">undocumented</b></dt> <dd><p><b class="method">Undocumented</b>, forward to <b class="package"><a href="cmdr_actor.html">cmdr::actor</a></b> <b class="method">undocumented</b></p></dd> <dt><b class="cmd">use</b></dt> <dd><p><b class="method">Use</b></p></dd> </dl> </div> <div id="section4" class="section"><h2><a name="section4">Parameter DSL</a></h2> <p>The parameter DSL is implemented in <b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b>.</p> <p>The specification is supplied with the instance constructor and processed immediately. This is different from officers and privates which defer processing until use. When a parameter is declared the containing private is in use, and so is the parameter. Thus no delay.</p> <p>The DSL commands map to instance methods as shown below:</p> <dl class="definitions"> <dt><b class="cmd">alias</b></dt> <dd><p><b class="method">Alias</b></p></dd> <dt><b class="cmd">default</b></dt> <dd><p><b class="method">Default</b></p></dd> <dt><b class="cmd">defered</b></dt> <dd><p><b class="method">Defered</b></p></dd> <dt><b class="cmd">generate</b></dt> <dd><p><b class="method">Generate</b></p></dd> <dt><b class="cmd">immediate</b></dt> <dd><p><b class="method">Immediate</b></p></dd> <dt><b class="cmd">interact</b></dt> <dd><p><b class="method">Interact</b></p></dd> <dt><b class="cmd">label</b></dt> <dd><p><b class="method">Label</b></p></dd> <dt><b class="cmd">list</b></dt> <dd><p><b class="method">List</b></p></dd> <dt><b class="cmd">no-promotion</b></dt> <dd><p><b class="method">NoPromote</b></p></dd> <dt><b class="cmd">optional</b></dt> <dd><p><b class="method">Optional</b></p></dd> <dt><b class="cmd">presence</b></dt> <dd><p><b class="method">Presence</b></p></dd> <dt><b class="cmd">test</b></dt> <dd><p><b class="method">Test</b></p></dd> <dt><b class="cmd">undocumented</b></dt> <dd><p><b class="method">Undocumented</b></p></dd> <dt><b class="cmd">validate</b></dt> <dd><p><b class="method">Validate</b></p></dd> <dt><b class="cmd">when-complete</b></dt> <dd><p><b class="method">WhenComplete</b></p></dd> <dt><b class="cmd">when-set</b></dt> <dd><p><b class="method">WhenSet</b></p></dd> </dl> </div> <div id="section5" class="section"><h2><a name="section5">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 © 2013 Andreas Kupries<br> Copyright © 2013 Documentation, Andreas Kupries</p> </div> </div></body></html> |
Changes to embedded/www/doc/files/cmdr_dsl.html.
︙ | ︙ | |||
114 115 116 117 118 119 120 121 122 123 124 125 126 127 | <li class="section"><a href="#toc">Table Of Contents</a></li> <li class="section"><a href="#section1">Description</a></li> <li class="section"><a href="#section2">Related Specification Documents</a></li> <li class="section"><a href="#section3">Introductory examples</a> <ul> <li class="subsection"><a href="#subsection1">Basic private commands with inputs</a></li> <li class="subsection"><a href="#subsection2">Simple command nesting</a></li> </ul> </li> <li class="section"><a href="#section4">Language Reference</a></li> <li class="section"><a href="#section5">Related Documents</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> | > | 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | <li class="section"><a href="#toc">Table Of Contents</a></li> <li class="section"><a href="#section1">Description</a></li> <li class="section"><a href="#section2">Related Specification Documents</a></li> <li class="section"><a href="#section3">Introductory examples</a> <ul> <li class="subsection"><a href="#subsection1">Basic private commands with inputs</a></li> <li class="subsection"><a href="#subsection2">Simple command nesting</a></li> <li class="subsection"><a href="#subsection3">Simple backend</a></li> </ul> </li> <li class="section"><a href="#section4">Language Reference</a></li> <li class="section"><a href="#section5">Related Documents</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> |
︙ | ︙ | |||
137 138 139 140 141 142 143 144 145 146 147 148 149 150 | </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term">Cmdr - Introduction to the Specification Language</i></p></li> <li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Introductory examples</a></h2> <p>Instead of immediately diving into the full syntax of the specification language first a few examples to demonstrate the general look and feel, plus basic features.</p> <div id="subsection1" class="subsection"><h3><a name="subsection1">Basic private commands with inputs</a></h3> | > | 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term">Cmdr - Introduction to the Specification Language</i></p></li> <li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Introductory examples</a></h2> <p>Instead of immediately diving into the full syntax of the specification language first a few examples to demonstrate the general look and feel, plus basic features.</p> <div id="subsection1" class="subsection"><h3><a name="subsection1">Basic private commands with inputs</a></h3> |
︙ | ︙ | |||
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 | ... } ::foo::backend::alias::list } } ... </pre> </div> </div> <div id="section4" class="section"><h2><a name="section4">Language Reference</a></h2> <p>With the examples behind us we can now go and specify the entire specification language. If you have skipped here on first reading, ignoring the examples, please go back and read them first.</p> <p>The conceptual model underneath the command hierarchy is that of a tree.</p> <p>The inner nodes of the tree represent command ensembles, here called <i class="term">officer</i>s. Each officer knows one or more commands to perform, and delegates actual execution to their respective specification, which may be another <i class="term">officer</i>, or a <i class="term">private</i>.</p> <p>The leaf nodes of the tree represent the individual commands, here called <i class="term">private</i>s. Each <i class="term">private</i> is responsible for a single action and knows how to perform it, and the set of <i class="term">parameter</i>s used to configure that action at runtime.</p> <p>The same model is graphically presented in the | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | | 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 | ... } ::foo::backend::alias::list } } ... </pre> </div> <div id="subsection3" class="subsection"><h3><a name="subsection3">Simple backend</a></h3> <p>This example shows a possible implementation of the backend for the command hierarchies shown in the previous two sections. It is important to note, I believe, that this backend works for both command hierarchies, despite the changes to the command names (flat versus nesting) they do.</p> <p>Note further that while this example uses a <b class="cmd">namespace ensemble</b> to organize the backend other methods are possible too, i.e. all the various object systems for Tcl would be suitable as well.</p> <p>Lastly, for the sake of brevity this code is incomplete, not showing any utility commands we may have importet from somewhere else, nor the low-level workhorse procedures operating on the actual alias database or whatnot.</p> <pre class="example"> # -*- tcl -*- # # ## ### ##### ######## ############# ##################### namespace eval ::foo::backend::alias { namespace export list add remove namespace ensemble create } # # ## ### ##### ######## ############# ##################### ## Command implementations. proc ::foo::backend::alias::list {config} { set aliases [manager known] if {[$config @json]} { puts [jmap aliases $aliases] return } [table::do t {Alias Command} { foreach {name command} $aliases { $t add $name $command } } show display] return } proc ::foo::backend::alias::add {config} { set name [$config @name] set command [$config @command] manager add $name $command say [color green "Successfully aliased '$name' to '$command'"] return } proc ::foo::backend::alias::remove {config} { set name [$config @name] if {![manager has $name]} { err [color red "Unknown alias '$name'"] } else { manager remove $name say [color green "Successfully unaliased '$name'"] } return } # # ## ### ##### ######## ############# ##################### package provide foo::backend::alias 0 </pre> </div> </div> <div id="section4" class="section"><h2><a name="section4">Language Reference</a></h2> <p>With the examples behind us we can now go and specify the entire specification language. If you have skipped here on first reading, ignoring the examples, please go back and read them first.</p> <p>The conceptual model underneath the command hierarchy is that of a tree.</p> <p>The inner nodes of the tree represent command ensembles, here called <i class="term">officer</i>s. Each officer knows one or more commands to perform, and delegates actual execution to their respective specification, which may be another <i class="term">officer</i>, or a <i class="term">private</i>.</p> <p>The leaf nodes of the tree represent the individual commands, here called <i class="term">private</i>s. Each <i class="term">private</i> is responsible for a single action and knows how to perform it, and the set of <i class="term">parameter</i>s used to configure that action at runtime.</p> <p>The same model is graphically presented in the Entity-Relationship-Diagram below.</p> <p><img alt="erd" src="../../image/erd.png"></p> <p>The <i class="term">actor</i> in that diagram is the common base class for the ensembles and commands and not directly relevant to users.</p> <p>The <i class="term">config</i> on the other hand is the second interface seen by the user, as the sole argument to the action command prefix of <b class="cmd">private</b>. See <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i> for the details. This container, an instance of <b class="package"><a href="cmdr_config.html">cmdr::config</a></b>, holds all the declared parameters of the command the action is invoked for, and |
︙ | ︙ |
Changes to embedded/www/doc/files/cmdr_dsl_officer.html.
︙ | ︙ | |||
146 147 148 149 150 151 152 153 154 155 156 157 158 159 | </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li> <li><p><i class="term">Cmdr - Officer Specification Language</i></p></li> <li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2> <dl class="definitions"> <dt><a name="1"><b class="cmd">alias</b> <i class="arg">name</i> <b class="const">=</b> <i class="arg">name'</i>...</a></dt> <dd></dd> <dt><a name="2"><b class="cmd">alias</b> <i class="arg">name</i></a></dt> | > | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li> <li><p><i class="term">Cmdr - Officer Specification Language</i></p></li> <li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2> <dl class="definitions"> <dt><a name="1"><b class="cmd">alias</b> <i class="arg">name</i> <b class="const">=</b> <i class="arg">name'</i>...</a></dt> <dd></dd> <dt><a name="2"><b class="cmd">alias</b> <i class="arg">name</i></a></dt> |
︙ | ︙ | |||
227 228 229 230 231 232 233 | <dd><p>This command declares the help text of the <i class="term">officer</i>.</p></dd> <dt><a name="6"><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></a></dt> <dd><p>This is an advanced command which should normally only be specified at the top of the whole hierarchy (from which its value will automatically propagate to all subordinates).</p> <p>At runtime the framework will call the specified command prefix with a single argument, a script whose execution is equivalent to the | | | | | | 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 | <dd><p>This command declares the help text of the <i class="term">officer</i>.</p></dd> <dt><a name="6"><b class="cmd">ehandler</b> <i class="arg">cmdprefix</i></a></dt> <dd><p>This is an advanced command which should normally only be specified at the top of the whole hierarchy (from which its value will automatically propagate to all subordinates).</p> <p>At runtime the framework will call the specified command prefix with a single argument, a script whose execution is equivalent to the phases <i class="term">Parsing</i>, <i class="term">Completion</i>, and <i class="term">Execution</i> of the framework, as described in <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>. The handler <em>must</em> call this script, and can perform any application-specific actions before and after.</p> <p>This handler's main uses are two-fold:</p> <ol class="enumerated"> <li><p>Capture and hande application-specific errors which should not abort the application, nor shown as Tcl stacktrace.</p></li> <li><p>Cleanup of application-specific transient state the <i class="term">parameter</i> callbacks (See <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>) and/or actions may have set during their execution. |
︙ | ︙ | |||
254 255 256 257 258 259 260 | <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 | | > > | 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 | <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> <p>For an example see section <i class="term">Simple backend</i> of <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i>.</p></dd> <dt><a name="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.
︙ | ︙ | |||
161 162 163 164 165 166 167 168 169 170 171 172 173 174 | </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li> <li><p><i class="term">Cmdr - Parameter Specification Language</i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2> <p>The <i class="term">parameter</i>s of <i class="term">private</i>s are the heart of the system, providing the space needed to transfer command arguments to their implementations, and having the most attributes controlling their behaviour.</p> | > | 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li> <li><p><i class="term">Cmdr - Parameter Specification Language</i></p></li> <li><p><i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2> <p>The <i class="term">parameter</i>s of <i class="term">private</i>s are the heart of the system, providing the space needed to transfer command arguments to their implementations, and having the most attributes controlling their behaviour.</p> |
︙ | ︙ | |||
242 243 244 245 246 247 248 | phase to determine whether an argument word should be assigned to the parameter, or not.</p> <p>This setting is only applicable to <i class="term">input</i>s, as <i class="term">option</i>s are optional by definition, and <i class="term">state</i> is hidden.</p></dd> <dt><a name="5"><b class="cmd">test</b></a></dt> <dd><p>This command is related to the above, switching the runtime from the standard regime for acceptance (based on counting and thresholds) to a | | | > | 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 | phase to determine whether an argument word should be assigned to the parameter, or not.</p> <p>This setting is only applicable to <i class="term">input</i>s, as <i class="term">option</i>s are optional by definition, and <i class="term">state</i> is hidden.</p></dd> <dt><a name="5"><b class="cmd">test</b></a></dt> <dd><p>This command is related to the above, switching the runtime from the standard regime for acceptance (based on counting and thresholds) to a different regime based on validation.</p> <p>More details are explained in section <i class="term">Parsing</i> of <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.</p></dd> <dt><a name="6"><b class="cmd">undocumented</b></a></dt> <dd><p>This command excludes the <i class="term">parameter</i> from the generated help.</p> <p>Its main use case is the hiding of <i class="term">option</i>s giving an application developer access to the internals of their application, something a regular user has no need of, and doesn't have to know about.</p></dd> </dl> |
︙ | ︙ | |||
477 478 479 480 481 482 483 484 485 486 487 488 489 490 | generate | | | immediate | defered validate (validate) | | test | immediate | defered validate (release) | | test | immediate | defered --------------------+----------+---------+-------------+----------- when-complete | | | immediate | defered --------------------+----------+---------+-------------+----------- </pre> </div> </div> <div id="section4" class="section"><h2><a name="section4">Related Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_introduction.html">Cmdr - Introduction to the project</a></i></p></li> <li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li> <li><p><i class="term"><a href="cmdr_changes.html">Cmdr - Log of Changes</a></i></p></li> | > | 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 | generate | | | immediate | defered validate (validate) | | test | immediate | defered validate (release) | | test | immediate | defered --------------------+----------+---------+-------------+----------- when-complete | | | immediate | defered --------------------+----------+---------+-------------+----------- </pre> <p>Please continue reading with <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.</p> </div> </div> <div id="section4" class="section"><h2><a name="section4">Related Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_introduction.html">Cmdr - Introduction to the project</a></i></p></li> <li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li> <li><p><i class="term"><a href="cmdr_changes.html">Cmdr - Log of Changes</a></i></p></li> |
︙ | ︙ |
Changes to embedded/www/doc/files/cmdr_dsl_private.html.
︙ | ︙ | |||
144 145 146 147 148 149 150 151 152 153 154 155 156 157 | </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li> <li><p><i class="term">Cmdr - Private Specification Language</i></p></li> <li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2> <p>The specification of <i class="term">private</i>s is quite easy, with only seven commands. The important parts are found in the <i class="term">parameter</i> specifications, explained in <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p> <dl class="definitions"> | > | 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li> <li><p><i class="term">Cmdr - Private Specification Language</i></p></li> <li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Language Reference</a></h2> <p>The specification of <i class="term">private</i>s is quite easy, with only seven commands. The important parts are found in the <i class="term">parameter</i> specifications, explained in <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p> <dl class="definitions"> |
︙ | ︙ | |||
181 182 183 184 185 186 187 | 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, | | > > > | 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | 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> <p>Note further that <i class="term">privates</i> not put into any section are automatically placed into a generated section named <b class="const">Miscellaneous</b>.</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> |
︙ | ︙ |
Added embedded/www/doc/files/cmdr_flow.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 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 | <html><head> <title>cmdr-spec-flow - 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_flow.man' by tcllib/doctools with format 'html' --> <! -- Copyright © 2013 Andreas Kupries -- Copyright © 2013 Documentation, Andreas Kupries --> <! -- CVS: $Id$ cmdr-spec-flow.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-spec-flow(n) 0 doc "Cmdr, a framework for command line parsing and dispatch"</h1> <div id="name" class="section"><h2><a name="name">Name</a></h2> <p>cmdr-spec-flow - Cmdr - Runtime Processing Flow</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="#section1">Description</a></li> <li class="section"><a href="#section2">Related Specification Documents</a></li> <li class="section"><a href="#section3">Dispatch</a></li> <li class="section"><a href="#section4">Parsing</a> <ul> <li class="subsection"><a href="#subsection1">Example for Handling optional Inputs by Threshold</a></li> </ul> </li> <li class="section"><a href="#section5">Completion</a></li> <li class="section"><a href="#section6">Execution</a></li> <li class="section"><a href="#section7">Related Documents</a></li> <li class="section"><a href="#section8">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="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. If you have not read <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i> and the related documents yet, please do so. The explanations how the framework processes a command line at runtime guided by a specified command hierarchy presuppose knowledge of command-hierarchy specifications.</p> <p>A command line is processed in four distinct phases, namely <span class="sectref"><a href="#section3">Dispatch</a></span>, <span class="sectref"><a href="#section4">Parsing</a></span>, <span class="sectref"><a href="#section5">Completion</a></span>, and <span class="sectref"><a href="#section6">Execution</a></span>. Each is explained in more detail in the referenced sections.</p> </div> <div id="section2" class="section"><h2><a name="section2">Related Specification Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_private.html">Cmdr - Private Specification Language</a></i></p></li> <li><p><i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i></p></li> <li><p><i class="term">Cmdr - Runtime Processing Flow</i></p></li> </ol> </div> <div id="section3" class="section"><h2><a name="section3">Dispatch</a></h2> <p>The first phase determines the <b class="package"><a href="cmdr_private.html">cmdr::private</a></b> instance to use. To this end it processes words from the command line and uses them to navigate the tree of <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> instances until a <i class="term">private</i> is reached.</p> <p>Each word of the command line is treated as the name of the <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> instance to descend into. An error will be thrown when encountering a name for which there is no known actor (officer or private), and the current <i class="term">officer</i> has no <i class="term">default</i> declared for it.</p> <p>On the converse, when reaching the end of the command line but not reaching a <i class="term">private</i> the framework will not throw an error. It will start an interactive command line shell instead. This <i class="term">main shell</i> provides access to exactly the commands of the <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> instance which was reached, plus two pseudo-commands to either exit this shell or gain help.</p> <p>Execution of the command tree specification, i.e. the generation of the in-memory command tree and the actor instances bound in it, is intertwined with this descent through the command tree. I.e. instead of processing the entire specification immediately in full it is lazily unfolded on demand, ignoring all parts which are not needed. Note that the generated data structures are not destroyed after <span class="sectref"><a href="#section6">Execution</a></span>, but kept, avoiding the need to re-parse the parts of the specification already used at least once when an interactive command line shell is active.</p> </div> <div id="section4" class="section"><h2><a name="section4">Parsing</a></h2> <p>This is the most complex phase internally, as it has to assign the left-over words to the parameters of the chosen <b class="package"><a href="cmdr_private.html">cmdr::private</a></b> instance, taking into account the kind of parameters, their requiredness, listness, and other attributes.</p> <p>Generally processing the words from left to right <i class="term"><a href="../../index.html#key2">options</a></i> are detected in all positions, through their flags (primary, aliases, and all unique prefixes), followed by their (string) value to assign.</p> <p>When a word cannot be the flag for an option the positional <i class="term">inputs</i> are considered, in order of their declarations. For a mandatory <i class="term">input</i> the word is simply assigned as its string value and processing continues with the next word, and the next <i class="term">input</i>, if any. Operation becomes more complex when the <i class="term">input</i> under consideration is <i class="term">optional</i>. Now it is necessary to truly decide if the word should be assigned to this <i class="term">input</i> or the following.</p> <p>The standard method for this decision is to count words and compare to the count of mandatory <i class="term">inputs</i> left. If there are more words available than required to satisfy all mandatory <i class="term">inputs</i>, then we can and do assign the current word to the optional input. Otherwise the current <i class="term">input</i> is skipped and we consider the next. A set of condensed examples can be found in section <span class="sectref"><a href="#subsection1">Example for Handling optional Inputs by Threshold</a></span>. They demonstrate how a various numbers of argument words are assigned to a specific set of <i class="term">inputs</i>, <i class="term">optional</i> and non. This is called the <i class="term">threshold</i> algorithm.</p> <p>The non-triviality in the above description is in the phrase to <i class="term">count words</i>. We cannot simply count all words left on the command line. To get a proper count we have discard/ignore all words belonging to options. At this point the processor essentially works ahead, processing and removing all flags/options and their arguments from the command line before performing the comparison and making its decision.</p> <p>The whole behaviour however can be changed via <b class="cmd">test</b> (See section <i class="term">General control</i> of <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>). Instead of counting words the current word is run through the validation type of the current <i class="term">input</i>. On acceptance the value is assigned to it, otherwise that <i class="term">input</i> is skipped and the next one put under consideration.</p> <p>After all of the above the system will process any options found after the last word assigned to the last <i class="term">input</i> to consider.</p> <p>Errors are thrown if we either find more words than <i class="term">inputs</i> to assign to, or encounter an unknown option flag. Note that not having enough words for all required <i class="term">inputs</i> is not an error unless the framework is not allowed to start an interactive shell. In this <i class="term">mini shell</i> all parameters are mapped to shell commands taking a single argument, the string value of parameter to assign. Additional five pseudo commands are available to either abort, or commit to the action, or gain help (<b class="cmd">.ok</b>, <b class="cmd">.run</b>, <b class="cmd">.exit</b>, <b class="cmd">.cancel</b>, and <b class="cmd">.help</b>).</p> <p>Parameters marked as <i class="term">list</i>-valued also trigger special behaviours. For <i class="term"><a href="../../index.html#key2">options</a></i> the assigned values get accumulated instead of each new value overwriting the last. For <i class="term">inputs</i> only one such parameter can exist, and will be the last of the <i class="term">private</i>. The processor now takes all remaining words and assign them to this parameter. If the list is also optional then options may be processed ahead or not, depending on the chosen decision mode, as described for regular inputs above.</p> <p>Then are the <i class="term">boolean</i> and <i class="term">presence</i> <i class="term"><a href="../../index.html#key2">options</a></i> modifying the handling of flags and flag arguments. The details of this were already explained in section <i class="term">Validation</i> of <i class="term"><a href="cmdr_dsl_parameter.html">Cmdr - Parameter Specification Language</a></i>.</p> <div id="subsection1" class="subsection"><h3><a name="subsection1">Example for Handling optional Inputs by Threshold</a></h3> <p>The examples in this section demonstrate how the <i class="term">threshold</i> algorithm assigns a various number of argument words to a specific set of <i class="term">inputs</i>, <i class="term">optional</i> and non.</p> <pre class="example"> Parameter | A? | B | C? | D? | E #Required | 2| | 1| 1| --------------+----+---+----+----+---- 2 arguments: | | a | | | b 3 arguments: | a | b | | | c 4 arguments: | a | b | c | | d 5 arguments: | a | b | c | d | e </pre> </div> </div> <div id="section5" class="section"><h2><a name="section5">Completion</a></h2> <p>This phase is reached when all words of the command line have been processed and no error was thrown by the preceding phases. At this point we know the <b class="package"><a href="cmdr_private.html">cmdr::private</a></b> instance to use, and its parameters may have a string representation.</p> <p>All <i class="term">immediate</i>-mode parameters are now given their internal representation. The parameters marked as <i class="term">defered</i> are ignored here and will get theirs on first access by the backend.</p> <p>This completion of parameters is done in their order of declaration within the enclosing <i class="term">private</i> command. Note that when parameters have dependencies between them, i.e. the calculation of their internal representation requires the internal representation of another parameter, then this order may be violated as the requesting parameter triggers completion in the requested one on access. If this is behaviour not wanted then it is the responsibility of the user specifying the <i class="term">private</i> to place the parameters into an order where all parameters access only previously completed parameters during their own completion.</p> </div> <div id="section6" class="section"><h2><a name="section6">Execution</a></h2> <p>The last phase is also the most simple.</p> <p>It only invokes the Tcl command prefix associated with the chosen <b class="package"><a href="cmdr_private.html">cmdr::private</a></b> instance, providing it with the <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> instance holding the parameter information extracted from the command line as its single argument.</p> <p>For an example of very simple action implementations see section <i class="term">Simple backend</i> of <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i>.</p> <p>All parameters declared for a <i class="term">private</i> are made accessible through individual methods associated with each. As example, a parameter with system name <b class="variable">P</b> is mapped to the method <b class="method">@P</b>, with all instance methods provided by the <b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b> class accessible as sub-methods. This general access to all methods may be removed in the future, restricting actions and callbacks to a safe subset.</p> <p>Another place providing information to actions is the root and other actors of the command hierarchy itself, via <b class="cmd">common</b> blocks whose value is managed by the system. Currently we have</p> <dl class="definitions"> <dt><b class="const">*in-shell*</b></dt> <dd><p>This block is read-only, and only found in the root actor. Its value is managed by the framework. It is a boolean flag indicating if an interactive shell is currently active (<b class="const">true</b>) or not (<b class="const">false</b>). This can be used to modulate command messages and other context-dependent things.</p> <p><em>Note</em> that the block will not exist until after the first shell was active. This means that a missing <b class="const">*in-shell*</b> block should be treated like <b class="const">false</b>.</p></dd> <dt><b class="const">*prefix*</b></dt> <dd><p>This block is read-only and found in the private actor for the currently executing action command prefix, accessible through the <b class="package"><a href="cmdr_config.html">cmdr::config</a></b> instance method <b class="method">context</b>. Its value is managed by the framework. It is a list of the command names used to reach the <i class="term">private</i> instance. This is not the logical path in the command hierarchy, but the actual path taken, which may be through aliases.</p></dd> </dl> <p>Calling <b class="method">@P</b> without arguments is a shorthand for calling ``@P value'', i.e. the retrieval of the parameter's internal representation. Which may calculate the value if the call is the first access and the parameter specified as <i class="term">defered</i>.</p> </div> <div id="section7" class="section"><h2><a name="section7">Related Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_introduction.html">Cmdr - Introduction to the project</a></i></p></li> <li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li> <li><p><i class="term"><a href="cmdr_changes.html">Cmdr - Log of Changes</a></i></p></li> <li><p><i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i></p></li> <li><p><i class="term"><a href="cmdr_howto_installation.html">Cmdr - The Installer's Guide</a></i></p></li> <li><p><i class="term"><a href="cmdr_howto_development.html">Cmdr - The Developer's Guide</a></i></p></li> </ol> </div> <div id="section8" class="section"><h2><a name="section8">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 © 2013 Andreas Kupries<br> Copyright © 2013 Documentation, Andreas Kupries</p> </div> </div></body></html> |
Changes to embedded/www/doc/files/cmdr_help.html.
︙ | ︙ | |||
164 165 166 167 168 169 170 | </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> | | > > > > > > > > > > > > > > | 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 | </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 by the user, in the root of the command hierarchy. Its value has to be a dictionary mapping from the names of toplevel sections/categories to an integer number. This is used to change the order of displaying these sections in the generated text.</p> <p>Sections with higher/larger numbers are shown first, and lower/smaller numbers move towards the end. Negative numbers are possible.</p> <p>Sections not mentioned in the dictionary are assigned their natural number. This is calculated by sorting all sections alphabetically (<b class="option">-dict</b>) ascending and assigning <b class="const">0</b> to the first section, <b class="const">-10</b> to the next, and so on.</p> <p>The generated section/category <b class="const">Miscellaneous</b> is given the number <b class="const">-10000</b> to force it to the end (bottom) of the help text, if it was generated.</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 |
︙ | ︙ |
Changes to embedded/www/doc/files/cmdr_howto_development.html.
︙ | ︙ | |||
117 118 119 120 121 122 123 | <li class="section"><a href="#section3">Demonstration/Example Applications</a></li> <li class="section"><a href="#section4">Directory structure</a></li> <li class="section"><a href="#section5">Extended Build Actions</a></li> <li class="section"><a href="#section6">Architecture & Concepts</a></li> <li class="section"><a href="#section7">Validation Types</a></li> <li class="section"><a href="#section8">Help Formats</a></li> <li class="section"><a href="#section9">Command Line Completion</a></li> | | | > | 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | <li class="section"><a href="#section3">Demonstration/Example Applications</a></li> <li class="section"><a href="#section4">Directory structure</a></li> <li class="section"><a href="#section5">Extended Build Actions</a></li> <li class="section"><a href="#section6">Architecture & Concepts</a></li> <li class="section"><a href="#section7">Validation Types</a></li> <li class="section"><a href="#section8">Help Formats</a></li> <li class="section"><a href="#section9">Command Line Completion</a></li> <li class="section"><a href="#section10">Common Blocks</a></li> <li class="section"><a href="#section11">Related Documents</a></li> <li class="section"><a href="#section12">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="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> |
︙ | ︙ | |||
294 295 296 297 298 299 300 | 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> | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | 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 | 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">Common Blocks</a></h2> <p>The framework reserves all blocks whose name begins with a star, i.e <b class="const">*</b>, for its own use. Currently the following names are in use:</p> <dl class="definitions"> <dt><b class="const">*all*</b></dt> <dd><p>Publicly documented for users, this block is expected to contain parameter specification commands. These commands are automatically added to all privates found in the command hierarchy containing the block.</p> <p>The details are explained by the description of command <b class="cmd">common</b> in <i class="term"><a href="cmdr_dsl_officer.html">Cmdr - Officer Specification Language</a></i>.</p></dd> <dt><b class="const">*category-order*</b></dt> <dd><p>Publicly documented for users, this block is expected to contain a dictionary mapping from toplevel section/category names to an integer number to override the natural order of displaying these sections in the help.</p> <p>The details are explained in section <i class="term">Format Notes</i> of <i class="term"><a href="cmdr_help.html">Cmdr - (Internal) Utilities for help text formatting and setup</a></i>.</p></dd> <dt><b class="const">*prefix*</b></dt> <dd><p>Publicly documented for users as read-only this block's value is managed by the framework. Set during the <i class="term">Dispatch</i> phase it provides to access to the actual command name used to invoke a <i class="term">private</i>.</p> <p>See also section <i class="term">Execution</i> of <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.</p></dd> <dt><b class="const">*in-shell*</b></dt> <dd><p>Publicly documented for users as read-only this block's value is managed by the framework. Not set until the first main- or mini-shell was active its value is boolean flag indicating if an interactive shell is currently active (<b class="const">true</b>) or not (<b class="const">false</b>, or not existing).</p> <p>See also section <i class="term">Execution</i> of <i class="term"><a href="cmdr_flow.html">Cmdr - Runtime Processing Flow</a></i>.</p></dd> </dl> </div> <div id="section11" class="section"><h2><a name="section11">Related Documents</a></h2> <ol class="enumerated"> <li><p><i class="term"><a href="cmdr_introduction.html">Cmdr - Introduction to the project</a></i></p></li> <li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li> <li><p><i class="term"><a href="cmdr_changes.html">Cmdr - Log of Changes</a></i></p></li> <li><p><i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i></p></li> <li><p><i class="term"><a href="cmdr_howto_installation.html">Cmdr - The Installer's Guide</a></i></p></li> <li><p><i class="term">Cmdr - The Developer's Guide</i></p></li> </ol> </div> <div id="section12" class="section"><h2><a name="section12">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> |
︙ | ︙ |
Changes to embedded/www/doc/files/cmdr_introduction.html.
︙ | ︙ | |||
110 111 112 113 114 115 116 | <p>cmdr-introduction - Cmdr - Introduction to the project</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="#section1">Description</a></li> <li class="section"><a href="#section2">System Architecture</a></li> | | | > | 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | <p>cmdr-introduction - Cmdr - Introduction to the project</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="#section1">Description</a></li> <li class="section"><a href="#section2">System Architecture</a></li> <li class="section"><a href="#section3">Command Hierarchy Specifications</a></li> <li class="section"><a href="#section4">Related Documents</a></li> <li class="section"><a href="#section5">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="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> |
︙ | ︙ | |||
160 161 162 163 164 165 166 | straight-forward, following mostly directly out of the relationships shown above, plus the few where the utilities are imported. To reduce the complexity of the diagram below a few direct dependencies on <b class="package"><a href="cmdr_util.html">cmdr::util</a></b> were omitted where indirectly present through other dependencies (i.e. through <b class="package"><a href="cmdr_help.html">cmdr::help</a></b>):</p> <p><img alt="pkg_dependencies" src="../../image/pkg_dependencies.png"></p> </div> | | > > > > | | 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 | straight-forward, following mostly directly out of the relationships shown above, plus the few where the utilities are imported. To reduce the complexity of the diagram below a few direct dependencies on <b class="package"><a href="cmdr_util.html">cmdr::util</a></b> were omitted where indirectly present through other dependencies (i.e. through <b class="package"><a href="cmdr_help.html">cmdr::help</a></b>):</p> <p><img alt="pkg_dependencies" src="../../image/pkg_dependencies.png"></p> </div> <div id="section3" class="section"><h2><a name="section3">Command Hierarchy Specifications</a></h2> <p>This is a bit large for this document, and can be found in the separate <i class="term"><a href="cmdr_dsl.html">Cmdr - Introduction to the Specification Language</a></i>.</p> </div> <div id="section4" class="section"><h2><a name="section4">Related Documents</a></h2> <ol class="enumerated"> <li><p><i class="term">Cmdr - Introduction to the project</i></p></li> <li><p><i class="term"><a href="cmdr_license.html">Cmdr - License</a></i></p></li> <li><p><i class="term"><a href="cmdr_changes.html">Cmdr - Log of Changes</a></i></p></li> <li><p><i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i></p></li> <li><p><i class="term"><a href="cmdr_howto_installation.html">Cmdr - The Installer's Guide</a></i></p></li> <li><p><i class="term"><a href="cmdr_howto_development.html">Cmdr - The Developer's Guide</a></i></p></li> </ol> </div> <div id="section5" class="section"><h2><a name="section5">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> |
︙ | ︙ |
Changes to embedded/www/doc/files/cmdr_parameter.html.
︙ | ︙ | |||
540 541 542 543 544 545 546 | the parameter. If necessary the data is computed from the parameter's string representation, "default" value, or "generate" callback. An error is thrown if the value could not be determined. (See method <b class="method">undefined!</b>). If the value is newly computed the action triggers the execution of the "when-complete" callback.</p> | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 | the parameter. If necessary the data is computed from the parameter's string representation, "default" value, or "generate" callback. An error is thrown if the value could not be determined. (See method <b class="method">undefined!</b>). If the value is newly computed the action triggers the execution of the "when-complete" callback.</p> <p>A parameter asked for its internal representation goes through the following steps to deliver the value:</p> <ol class="enumerated"> <li><p>If the internal representation is already known, simply deliver it as is. In other words, the result of the following steps is cached, and the steps are run only once.</p></li> <li><p>If the internal representation has been declared as undefined already, simply error out (again). This is still part of caching the result generated by the following steps.</p></li> <li><p>If the parameter has a string representation use the parameter's <i class="term">validation type</i> to convert it to the proper internal representation, and return it.</p></li> <li><p>If interactive entry is possible (per the parameter's specification) perform the interaction. This saves the entered data as string representation which is then validated as per the previous step. Aborting the interaction leaves the parameter as undefined (which is thrown as error).</p></li> <li><p>If a <b class="cmd">generate</b> callback exists use it to obtain the internal representation, and return it.</p></li> <li><p>If a <b class="cmd">default</b> value exists make it the internal representation, and return it.</p> <p>Side note: As the parameter DSL only allows the declaration of one of <b class="cmd">default</b> or <b class="cmd">generate</b> only one of these steps can trigger.</p></li> <li><p>If the parameter is <b class="cmd">optional</b> use the empty string as the internal representation and return it.</p> <p><em>Note</em> that this rule should never trigger as the parameter DSL enforces that <i class="term">optional</i> parameters always have one of <b class="cmd">default</b> or <b class="cmd">generate</b>.</p></li> <li><p>Leave the parameter is undefined and fail (throw an error).</p></li> </ol></dd> <dt><a name="47"><b class="cmd"><parameter></b> <b class="method">when-complete</b></a></dt> <dd><p>This method returns the "when-complete" command prefix callback, if it was set, and an empty list otherwise.</p></dd> <dt><a name="48"><b class="cmd"><parameter></b> <b class="method">when-set</b></a></dt> <dd><p>This method returns the "when-set" command prefix callback, if it was set, and an empty list otherwise.</p></dd> </dl> |
︙ | ︙ |
Changes to embedded/www/doc/toc.html.
︙ | ︙ | |||
50 51 52 53 54 55 56 57 58 59 | <td class="#tocright">Cmdr - Parameter Specification Language</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_dsl_private.html">cmdr-spec-dsl-private</a></td> <td class="#tocright">Cmdr - Private Specification Language</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_helpformats.html">cmdr-user-helpformats</a></td> <td class="#tocright">Cmdr - Writing custom help formats</td> </tr> | > > > > | | | | | | | | | | | | | | > > > > | 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 | <td class="#tocright">Cmdr - Parameter Specification Language</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_dsl_private.html">cmdr-spec-dsl-private</a></td> <td class="#tocright">Cmdr - Private Specification Language</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_flow.html">cmdr-spec-flow</a></td> <td class="#tocright">Cmdr - Runtime Processing Flow</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_helpformats.html">cmdr-user-helpformats</a></td> <td class="#tocright">Cmdr - Writing custom help formats</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_vtypes.html">cmdr-user-vtypes</a></td> <td class="#tocright">Cmdr - Writing custom validation types</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_actor.html">cmdr::actor</a></td> <td class="#tocright">Cmdr - (Internal) Base class for officers and privates</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_config.html">cmdr::config</a></td> <td class="#tocright">Cmdr - (Partially internal) Collection of parameters for privates</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_help.html">cmdr::help</a></td> <td class="#tocright">Cmdr - (Internal) Utilities for help text formatting and setup</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_help_json.html">cmdr::help::json</a></td> <td class="#tocright">Cmdr - Formatting help as JSON object</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_help_sql.html">cmdr::help::sql</a></td> <td class="#tocright">Cmdr - Formatting help as series of SQL commands</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_officer.html">cmdr::officer</a></td> <td class="#tocright">Cmdr - (Internal) Aggregation of multiple commands for dispatch.</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_parameter.html">cmdr::parameter</a></td> <td class="#tocright">Cmdr - (Partially internal) Command parameters</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_private.html">cmdr::private</a></td> <td class="#tocright">Cmdr - (Internal) Single command handling, options, and arguments</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_util.html">cmdr::util</a></td> <td class="#tocright">Cmdr - (Internal) General Utilities</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_validate.html">cmdr::validate</a></td> <td class="#tocright">Cmdr - Standard validation types for parameters</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_vcommon.html">cmdr::validate::common</a></td> <td class="#tocright">Cmdr - Utilities for Validation Types</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_howto_development.html">cmdr_development</a></td> <td class="#tocright">Cmdr - The Developer's Guide</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="files/cmdr_dev_completion.html">cmdr_dev~completion</a></td> <td class="#tocright">Cmdr - Internals of command line completion</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="files/cmdr_dev_dsl.html">cmdr_dev~dsl</a></td> <td class="#tocright">Cmdr - Internals of DSL handling</td> </tr> </table> </dl><hr></body></html> |
Changes to embedded/www/index.html.
︙ | ︙ | |||
18 19 20 21 22 23 24 | <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%"> | | | | | | | | | | | | | | | | 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> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxheader"><th colspan="2"> <a name="c2">Keywords: C</a> </th></tr> <tr class="#idxodd" valign=top> <td class="#idxleft" width="35%"><a name="key5"> command hierarchy </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxeven" valign=top> <td class="#idxleft" width="35%"><a name="key9"> command line completion </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxodd" valign=top> <td class="#idxleft" width="35%"><a name="key11"> command line handling </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxeven" valign=top> <td class="#idxleft" width="35%"><a name="key13"> command tree </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxheader"><th colspan="2"> <a name="c3">Keywords: E</a> </th></tr> <tr class="#idxodd" valign=top> <td class="#idxleft" width="35%"><a name="key0"> editing command line </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxheader"><th colspan="2"> <a name="c4">Keywords: H</a> </th></tr> <tr class="#idxeven" valign=top> <td class="#idxleft" width="35%"><a name="key8"> help for command line </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxodd" valign=top> <td class="#idxleft" width="35%"><a name="key6"> hierarchy of commands </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxheader"><th colspan="2"> <a name="c5">Keywords: I</a> </th></tr> <tr class="#idxeven" valign=top> <td class="#idxleft" width="35%"><a name="key3"> interactive command shell </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxheader"><th colspan="2"> <a name="c6">Keywords: O</a> </th></tr> <tr class="#idxodd" valign=top> <td class="#idxleft" width="35%"><a name="key1"> optional arguments </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxeven" valign=top> <td class="#idxleft" width="35%"><a name="key2"> options </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxheader"><th colspan="2"> <a name="c7">Keywords: P</a> </th></tr> <tr class="#idxodd" valign=top> <td class="#idxleft" width="35%"><a name="key12"> parameters </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxeven" valign=top> <td class="#idxleft" width="35%"><a name="key10"> processing command line </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> <tr class="#idxheader"><th colspan="2"> <a name="c8">Keywords: T</a> </th></tr> <tr class="#idxodd" valign=top> <td class="#idxleft" width="35%"><a name="key7"> tree of commands </a></td> <td class="#idxright" width="65%"> <a href="doc/files/cmdr.html"> cmdr </a> · <a href="doc/files/cmdr_changes.html"> cmdr-changes </a> · <a href="doc/files/cmdr_howto_get_sources.html"> cmdr-howto-get-sources </a> · <a href="doc/files/cmdr_howto_installation.html"> cmdr-installation </a> · <a href="doc/files/cmdr_introduction.html"> cmdr-introduction </a> · <a href="doc/files/cmdr_license.html"> cmdr-license </a> · <a href="doc/files/cmdr_dsl.html"> cmdr-spec-dsl </a> · <a href="doc/files/cmdr_dsl_officer.html"> cmdr-spec-dsl-officer </a> · <a href="doc/files/cmdr_dsl_parameter.html"> cmdr-spec-dsl-parameter </a> · <a href="doc/files/cmdr_dsl_private.html"> cmdr-spec-dsl-private </a> · <a href="doc/files/cmdr_flow.html"> cmdr-spec-flow </a> · <a href="doc/files/cmdr_helpformats.html"> cmdr-user-helpformats </a> · <a href="doc/files/cmdr_vtypes.html"> cmdr-user-vtypes </a> · <a href="doc/files/cmdr_actor.html"> cmdr::actor </a> · <a href="doc/files/cmdr_config.html"> cmdr::config </a> · <a href="doc/files/cmdr_help.html"> cmdr::help </a> · <a href="doc/files/cmdr_help_json.html"> cmdr::help::json </a> · <a href="doc/files/cmdr_help_sql.html"> cmdr::help::sql </a> · <a href="doc/files/cmdr_officer.html"> cmdr::officer </a> · <a href="doc/files/cmdr_parameter.html"> cmdr::parameter </a> · <a href="doc/files/cmdr_private.html"> cmdr::private </a> · <a href="doc/files/cmdr_util.html"> cmdr::util </a> · <a href="doc/files/cmdr_validate.html"> cmdr::validate </a> · <a href="doc/files/cmdr_vcommon.html"> cmdr::validate::common </a> · <a href="doc/files/cmdr_howto_development.html"> cmdr_development </a> · <a href="doc/files/cmdr_dev_completion.html"> cmdr_dev~completion </a> · <a href="doc/files/cmdr_dev_dsl.html"> cmdr_dev~dsl </a> </td></tr> </table> </body></html> |
Changes to embedded/www/toc.html.
︙ | ︙ | |||
50 51 52 53 54 55 56 57 58 59 | <td class="#tocright">Cmdr - Parameter Specification Language</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_dsl_private.html">cmdr-spec-dsl-private</a></td> <td class="#tocright">Cmdr - Private Specification Language</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_helpformats.html">cmdr-user-helpformats</a></td> <td class="#tocright">Cmdr - Writing custom help formats</td> </tr> | > > > > | | | | | | | | | | | | | | > > > > | 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 | <td class="#tocright">Cmdr - Parameter Specification Language</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_dsl_private.html">cmdr-spec-dsl-private</a></td> <td class="#tocright">Cmdr - Private Specification Language</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_flow.html">cmdr-spec-flow</a></td> <td class="#tocright">Cmdr - Runtime Processing Flow</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_helpformats.html">cmdr-user-helpformats</a></td> <td class="#tocright">Cmdr - Writing custom help formats</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_vtypes.html">cmdr-user-vtypes</a></td> <td class="#tocright">Cmdr - Writing custom validation types</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_actor.html">cmdr::actor</a></td> <td class="#tocright">Cmdr - (Internal) Base class for officers and privates</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_config.html">cmdr::config</a></td> <td class="#tocright">Cmdr - (Partially internal) Collection of parameters for privates</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_help.html">cmdr::help</a></td> <td class="#tocright">Cmdr - (Internal) Utilities for help text formatting and setup</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_help_json.html">cmdr::help::json</a></td> <td class="#tocright">Cmdr - Formatting help as JSON object</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_help_sql.html">cmdr::help::sql</a></td> <td class="#tocright">Cmdr - Formatting help as series of SQL commands</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_officer.html">cmdr::officer</a></td> <td class="#tocright">Cmdr - (Internal) Aggregation of multiple commands for dispatch.</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_parameter.html">cmdr::parameter</a></td> <td class="#tocright">Cmdr - (Partially internal) Command parameters</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_private.html">cmdr::private</a></td> <td class="#tocright">Cmdr - (Internal) Single command handling, options, and arguments</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_util.html">cmdr::util</a></td> <td class="#tocright">Cmdr - (Internal) General Utilities</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_validate.html">cmdr::validate</a></td> <td class="#tocright">Cmdr - Standard validation types for parameters</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_vcommon.html">cmdr::validate::common</a></td> <td class="#tocright">Cmdr - Utilities for Validation Types</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_howto_development.html">cmdr_development</a></td> <td class="#tocright">Cmdr - The Developer's Guide</td> </tr> <tr class="#tocodd" > <td class="#tocleft" ><a href="doc/files/cmdr_dev_completion.html">cmdr_dev~completion</a></td> <td class="#tocright">Cmdr - Internals of command line completion</td> </tr> <tr class="#toceven" > <td class="#tocleft" ><a href="doc/files/cmdr_dev_dsl.html">cmdr_dev~dsl</a></td> <td class="#tocright">Cmdr - Internals of DSL handling</td> </tr> </table> </dl><hr></body></html> |