[ Home | Main Table Of Contents | Table Of Contents | Keyword Index ]

# cmdr_dev~dsl(n) 1.2 doc "Cmdr, a framework for command line parsing and dispatch"

## Name

cmdr_dev~dsl - Cmdr - Internals of DSL handling

## Table Of Contents

## Synopsis

- package require cmdr

## Description

Welcome to the Cmdr project, written by Andreas Kupries.

For availability please read Cmdr - How To Get The Sources.

This internal document provides an overview on how the framework implements the specification languages for officers, privates, and parameters.

For more information about other internals of the framework please read Cmdr - The Developer's Guide.

## Officer DSL

The officer DSL is implemented in cmdr::officer.

While the specification is supplied with the instance constructor it is not processed immediately, but saved for when it is actually needed.

The internal instance method Setup is called at all places requiring access to the specification and processes it (once, on first call) to provide the necessary in-memory structures.

The DSL commands map to instance methods as shown below:

alias

  Alias

common

  cmdr::actor set

custom-setup

  custom-setup

default

  Default

description

  cmdr::actor description:

ehandler

  See intercept. Deprecated.

intercept

  intercept

officer

  Officer, forward to DefineAction

private

  Private, forward to DefineAction

undocumented

  cmdr::actor undocumented

## Private DSL

The private DSL is only partially implemented in cmdr::private. Most of the implementation is in cmdr::config.

While the specification is supplied with the instance constructor it is not processed immediately, but saved for when it is actually needed.

The internal instance method Setup 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.

The DSL commands map to config instance methods as shown below:

description

  Description, forward to cmdr::actor description:

input

  Input, forward to DefineParameter)

interactive

  Interactive

option

  Option, forward to DefineParameter)

section

  Section

state

  State, forward to DefineParameter)

undocumented

  Undocumented, forward to cmdr::actor undocumented

use

  Use

## Parameter DSL

The parameter DSL is implemented in cmdr::parameter.

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.

The DSL commands map to instance methods as shown below:

alias

  Alias

default

  Default

defered

  Defered

generate

  Generate

immediate

  Immediate

interact

  Interact

label

  Label

list

  List

no-promotion

  NoPromote

optional

  Optional

presence

  Presence

test

  Test

undocumented

  Undocumented

validate

  Validate

when-complete

  WhenComplete

when-set

  WhenSet

## Bugs, Ideas, Feedback

Both the package(s) and this documentation will undoubtedly contain bugs and other problems. Please report such at Cmdr Tickets.

Please also report any ideas you may have for enhancements of either package(s) and/or documentation.

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

## Copyright

Copyright © 2013-2016 Andreas Kupries
Copyright © 2013-2016 Documentation, Andreas Kupries