cmdr
Artifact [07d7991da1]
Not logged in
Bounty program for improvements to Tcl and certain Tcl packages.

Artifact 07d7991da1f1120cd4ed223abc499fa4caa2f97a:



<html><head>
<title>cmdr::actor - 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_actor.man' by tcllib/doctools with format 'html'
   -->
<! -- Copyright &copy; 2013-2016 Andreas Kupries   -- Copyright &copy; 2013-2016 Documentation, Andreas Kupries
   -->
<! -- CVS: $Id$ cmdr::actor.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::actor(n) 1.3.1 doc &quot;Cmdr, a framework for command line parsing and dispatch&quot;</h1>
<div id="name" class="section"><h2><a name="name">Name</a></h2>
<p>cmdr::actor - Cmdr - (Internal) Base class for officers and privates</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">Class API</a></li>
<li class="section"><a href="#section3">Instance API</a></li>
<li class="section"><a href="#section4">Help Information</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::actor</b></li>
</ul>
<ul class="syntax">
<li><a href="#1"><b class="cmd">::cmdr::actor</b> <b class="method">new</b></a></li>
<li><a href="#2"><b class="cmd">::cmdr::actor</b> <b class="method">create</b> <i class="arg">obj</i></a></li>
<li><a href="#3"><b class="cmd">&lt;actor&gt;</b> <b class="method">completions</b> <i class="arg">parse</i> <i class="arg">cmdlist</i></a></li>
<li><a href="#4"><b class="cmd">&lt;actor&gt;</b> <b class="method">description</b></a></li>
<li><a href="#5"><b class="cmd">&lt;actor&gt;</b> <b class="method">description:</b> <i class="arg">text</i></a></li>
<li><a href="#6"><b class="cmd">&lt;actor&gt;</b> <b class="method">dname</b></a></li>
<li><a href="#7"><b class="cmd">&lt;actor&gt;</b> <b class="method">do</b> <span class="opt">?<i class="arg">word...</i>?</span></a></li>
<li><a href="#8"><b class="cmd">&lt;actor&gt;</b> <b class="method">documented</b></a></li>
<li><a href="#9"><b class="cmd">&lt;actor&gt;</b> <b class="method">exists</b> <i class="arg">key</i></a></li>
<li><a href="#10"><b class="cmd">&lt;actor&gt;</b> <b class="method">fullname</b></a></li>
<li><a href="#11"><b class="cmd">&lt;actor&gt;</b> <b class="method">get</b> <i class="arg">key</i></a></li>
<li><a href="#12"><b class="cmd">&lt;actor&gt;</b> <b class="method">help</b></a></li>
<li><a href="#13"><b class="cmd">&lt;actor&gt;</b> <b class="method">keys</b></a></li>
<li><a href="#14"><b class="cmd">&lt;actor&gt;</b> <b class="method">lappend</b> <i class="arg">key</i> <i class="arg">data</i></a></li>
<li><a href="#15"><b class="cmd">&lt;actor&gt;</b> <b class="method">match</b> <i class="arg">parse</i> <i class="arg">cmdlist</i></a></li>
<li><a href="#16"><b class="cmd">&lt;actor&gt;</b> <b class="method">name</b></a></li>
<li><a href="#17"><b class="cmd">&lt;actor&gt;</b> <b class="method">name:</b> <i class="arg">name</i></a></li>
<li><a href="#18"><b class="cmd">&lt;actor&gt;</b> <b class="method">parse-line</b> <i class="arg">line</i></a></li>
<li><a href="#19"><b class="cmd">&lt;actor&gt;</b> <b class="method">root</b></a></li>
<li><a href="#20"><b class="cmd">&lt;actor&gt;</b> <b class="method">set</b> <i class="arg">key</i> <b class="option">-extend</b> <b class="option">--</b> <i class="arg">data</i></a></li>
<li><a href="#21"><b class="cmd">&lt;actor&gt;</b> <b class="method">super</b></a></li>
<li><a href="#22"><b class="cmd">&lt;actor&gt;</b> <b class="method">super:</b> <i class="arg">obj</i></a></li>
<li><a href="#23"><b class="cmd">&lt;actor&gt;</b> <b class="method">undocumented</b></a></li>
<li><a href="#24"><b class="cmd">&lt;actor&gt;</b> <b class="method">unset</b> <i class="arg">key</i></a></li>
</ul>
</div>
</div>
<div id="section1" class="section"><h2><a name="section1">Description</a></h2>
<p>Welcome to the Cmdr project, written by Andreas Kupries.</p>
<p>For availability please read <i class="term"><a href="cmdr_howto_get_sources.html">Cmdr - How To Get The Sources</a></i>.</p>
<p>This internal package implements the base class containing functionality
common to <b class="package"><a href="cmdr_officer.html">cmdr::officer</a></b> and <b class="package"><a href="cmdr_private.html">cmdr::private</a></b>.</p>
</div>
<div id="section2" class="section"><h2><a name="section2">Class API</a></h2>
<p>The class API is not public. It is used internally by the framework
when parsing a command hierarchy specification to create the necessary
command instances.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it.</p>
<dl class="definitions">
<dt><a name="1"><b class="cmd">::cmdr::actor</b> <b class="method">new</b></a></dt>
<dd><p>Create an auto-named instance of <b class="class">cmdr::actor</b>.</p>
<p><em>Not used</em>.</p></dd>
<dt><a name="2"><b class="cmd">::cmdr::actor</b> <b class="method">create</b> <i class="arg">obj</i></a></dt>
<dd><p>Create a new instance of <b class="class">cmdr::actor</b>, named <i class="arg">obj</i>.</p></dd>
</dl>
</div>
<div id="section3" class="section"><h2><a name="section3">Instance API</a></h2>
<p>Most of the instance API is not public.</p>
<p>It is described here for use by developers maintaining,
modifying and extending the framework itself. A user of the framework
has no need for it.</p>
<dl class="definitions">
<dt><a name="3"><b class="cmd">&lt;actor&gt;</b> <b class="method">completions</b> <i class="arg">parse</i> <i class="arg">cmdlist</i></a></dt>
<dd><p>This method is part of command line completion. For the details of
its workings please read <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Given the completion state <i class="arg">parse</i> of a partial command
line and a list of completions at the end of the line it returns a
list of strings which are the valid completions of the whole line,
properly quoted.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>
<dt>list <i class="arg">cmdlist</i></dt>
<dd><p>List of valid completions.</p></dd>
</dl></dd>
<dt><a name="4"><b class="cmd">&lt;actor&gt;</b> <b class="method">description</b></a></dt>
<dd><p>This accessor method returns the human-readable description of the
actor.</p></dd>
<dt><a name="5"><b class="cmd">&lt;actor&gt;</b> <b class="method">description:</b> <i class="arg">text</i></a></dt>
<dd><p>This method sets the description of the actor to the <i class="arg">text</i>.</p>
<dl class="arguments">
<dt>string <i class="arg">text</i></dt>
<dd><p>The description to remember.</p></dd>
</dl></dd>
<dt><a name="6"><b class="cmd">&lt;actor&gt;</b> <b class="method">dname</b></a></dt>
<dd><p>This accessor method returns the display name of the actor.  This is
the <b class="method">name</b> of the actor prefixed with the contents of the
reserved common block <b class="const">*prefix*</b>, set during command line
processing with the actual command path to reach the current actor.</p></dd>
<dt><a name="7"><b class="cmd">&lt;actor&gt;</b> <b class="method">do</b> <span class="opt">?<i class="arg">word...</i>?</span></a></dt>
<dd><p>This method processes the command-line given as a list of words.  Here
in the bse class it does nothing. It is a virtual method expecting to
be redefined by the derived classes.</p>
<dl class="arguments">
<dt>list <i class="arg">word</i></dt>
<dd></dd>
</dl></dd>
<dt><a name="8"><b class="cmd">&lt;actor&gt;</b> <b class="method">documented</b></a></dt>
<dd><p>This accessor method returns the &quot;documented&quot; flag of the actor.</p></dd>
<dt><a name="9"><b class="cmd">&lt;actor&gt;</b> <b class="method">exists</b> <i class="arg">key</i></a></dt>
<dd><p>This method returns a boolean value indicating whether the common
block named by <i class="arg">key</i> exists in the actor and its parents
(<b class="const">true</b>), or not (<b class="const">false</b>).</p>
<dl class="arguments">
<dt>string <i class="arg">key</i></dt>
<dd><p>The name of the common block to check for.</p></dd>
</dl></dd>
<dt><a name="10"><b class="cmd">&lt;actor&gt;</b> <b class="method">fullname</b></a></dt>
<dd><p>This method returns the full name of the actor.
This is the <b class="method">name</b> of the actor prefixed with the path to it in
the specification, i.e. the names of all actors in the chain of
supers.</p></dd>
<dt><a name="11"><b class="cmd">&lt;actor&gt;</b> <b class="method">get</b> <i class="arg">key</i></a></dt>
<dd><p>This method returns the content of the common block named by
<i class="arg">key</i>. An error is thrown if the block is not known to the actor,
nor its parents.</p>
<dl class="arguments">
<dt>string <i class="arg">key</i></dt>
<dd><p>The name of the common block to retrieve.</p></dd>
</dl></dd>
<dt><a name="12"><b class="cmd">&lt;actor&gt;</b> <b class="method">help</b></a></dt>
<dd><p>This accessor method returns the empty string. It is a virtual method
expecting to be redefined by the derived classes.</p></dd>
<dt><a name="13"><b class="cmd">&lt;actor&gt;</b> <b class="method">keys</b></a></dt>
<dd><p>This accessor method returns a list of names for the set of common
blocks known to this actor, and all of its parents.</p></dd>
<dt><a name="14"><b class="cmd">&lt;actor&gt;</b> <b class="method">lappend</b> <i class="arg">key</i> <i class="arg">data</i></a></dt>
<dd><p>This method extends the contents of the common block named
by <i class="arg">key</i> with <i class="arg">data</i>.
Conceptually this is a get/lappend/set operation, i.e. while the
existing block content is taken from the actor or its parents, the new
content is always stored in the actor.</p>
<dl class="arguments">
<dt>string <i class="arg">key</i></dt>
<dd><p>The name of the common block to extend.</p></dd>
<dt>any <i class="arg">data</i></dt>
<dd><p>The data to add to the block.</p></dd>
</dl></dd>
<dt><a name="15"><b class="cmd">&lt;actor&gt;</b> <b class="method">match</b> <i class="arg">parse</i> <i class="arg">cmdlist</i></a></dt>
<dd><p>This method is part of command line completion. For the details of
its workings please read <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Given the completion state <i class="arg">parse</i> of a partial command
line and a list of possible completions it returns a list of valid
completions, filtered against the current word in the command line.</p>
<dl class="arguments">
<dt>dict <i class="arg">parse</i></dt>
<dd><p>A dictionary holding the current completion state of a partial command
line.</p></dd>
<dt>list <i class="arg">cmdlist</i></dt>
<dd><p>List of possible completions.</p></dd>
</dl></dd>
<dt><a name="16"><b class="cmd">&lt;actor&gt;</b> <b class="method">name</b></a></dt>
<dd><p>This accessor method returns the name of the actor.</p></dd>
<dt><a name="17"><b class="cmd">&lt;actor&gt;</b> <b class="method">name:</b> <i class="arg">name</i></a></dt>
<dd><p>This method sets the name of the actor.</p>
<dl class="arguments">
<dt>string <i class="arg">name</i></dt>
<dd><p>The name to remember.</p></dd>
</dl></dd>
<dt><a name="18"><b class="cmd">&lt;actor&gt;</b> <b class="method">parse-line</b> <i class="arg">line</i></a></dt>
<dd><p>This method is part of command line completion. For the details of
its workings please read <i class="term"><a href="cmdr_dev_completion.html">Cmdr - Internals of command line completion</a></i>.</p>
<p>Is the main helper to begin command completion. Given the
entered command <i class="arg">line</i> it parses it into words and returns a
parse structure as is taken by all other methods taking part in
command completion.</p>
<dl class="arguments">
<dt>string <i class="arg">line</i></dt>
<dd><p>The command line.</p></dd>
</dl></dd>
<dt><a name="19"><b class="cmd">&lt;actor&gt;</b> <b class="method">root</b></a></dt>
<dd><p>This accessor method returns the root actor instance the actor belongs
to.</p></dd>
<dt><a name="20"><b class="cmd">&lt;actor&gt;</b> <b class="method">set</b> <i class="arg">key</i> <b class="option">-extend</b> <b class="option">--</b> <i class="arg">data</i></a></dt>
<dd><p>This method sets the contents of the common block named by <i class="arg">key</i>
to <i class="arg">data</i>. If the block does not exist it is created. Otherwise
its existing content is written over.</p>
<p>Using option <b class="option">-extend</b> will change the behaviour to
       extend inherited content instead of writing over it.</p>
<p>Using option <b class="option">--</b> will prevent misinterpretation of the
       following argument as option, even if it begins with a dash.</p>
<dl class="arguments">
<dt>string <i class="arg">key</i></dt>
<dd><p>The name of the common block to write.</p></dd>
<dt>any <i class="arg">data</i></dt>
<dd><p>The data to store in the block.</p></dd>
</dl></dd>
<dt><a name="21"><b class="cmd">&lt;actor&gt;</b> <b class="method">super</b></a></dt>
<dd><p>This accessor method returns the parent actor instance.  For the root
of the tree this is the empty string.</p></dd>
<dt><a name="22"><b class="cmd">&lt;actor&gt;</b> <b class="method">super:</b> <i class="arg">obj</i></a></dt>
<dd><p>This method links the actor to its parent actor.</p>
<dl class="arguments">
<dt>cmdr::actor <i class="arg">obj</i></dt>
<dd><p>The parent actor instance to remember.</p></dd>
</dl></dd>
<dt><a name="23"><b class="cmd">&lt;actor&gt;</b> <b class="method">undocumented</b></a></dt>
<dd><p>This method marks the actor as undocumented.</p></dd>
<dt><a name="24"><b class="cmd">&lt;actor&gt;</b> <b class="method">unset</b> <i class="arg">key</i></a></dt>
<dd><p>This method removes the common block named by <i class="arg">key</i>
from the actor. Note that definitions in parents are
not touched by this.</p>
<dl class="arguments">
<dt>string <i class="arg">key</i></dt>
<dd><p>The name of the common block to remove.</p></dd>
</dl></dd>
</dl>
</div>
<div id="section4" class="section"><h2><a name="section4">Help Information</a></h2>
<p>The help information generated by various places of the framework
is a dictionary containing the following keys:</p>
<dl class="definitions">
<dt>arguments</dt>
<dd><p>A list of strings, the names of the command arguments, in order.
These names are keys into the <b class="variable">parameters</b> sub-dictionary.</p></dd>
<dt>desc</dt>
<dd><p>The command's description, i.e. help text.</p></dd>
<dt>opt2para</dt>
<dd><p>A dictionary mapping option flags to option names.
These names are keys into the <b class="variable">parameters</b> sub-dictionary.</p></dd>
<dt>options</dt>
<dd><p>A dictionary mapping option names to their descriptions.</p></dd>
<dt>parameters</dt>
<dd><p>A dictionary mapping parameter names to their definition.
Each definition is a dictionary containing the keys below.
See also package <b class="package"><a href="cmdr_parameter.html">cmdr::parameter</a></b>.</p>
<dl class="definitions">
<dt>cmdline</dt>
<dd><p>Output of method <b class="method">cmdline</b>.</p></dd>
<dt>code</dt>
<dd><p>Output of method <b class="method">code</b>.</p></dd>
<dt>default</dt>
<dd><p>Output of method <b class="method">default</b>.</p></dd>
<dt>defered</dt>
<dd><p>Output of method <b class="method">defered</b>.</p></dd>
<dt>description</dt>
<dd><p>Output of method <b class="method">description</b>.</p></dd>
<dt>documented</dt>
<dd><p>Output of method <b class="method">documented</b>.</p></dd>
<dt>flags</dt>
<dd><p>A dictionary mapping flag names to flag
                   types, i.e. <b class="const">primary</b>, <b class="const">alias</b>,
                   or <b class="const">inverted</b>.</p></dd>
<dt>generator</dt>
<dd><p>Output of method <b class="method">generator</b>.</p></dd>
<dt>interactive</dt>
<dd><p>Output of method <b class="method">interactive</b>.</p></dd>
<dt>isbool</dt>
<dd><p>Output of method <b class="method">isbool</b>.</p></dd>
<dt>label</dt>
<dd><p>Output of method <b class="method">label</b>.</p></dd>
<dt>list</dt>
<dd><p>Output of method <b class="method">list</b>.</p></dd>
<dt>ordered</dt>
<dd><p>Output of method <b class="method">ordered</b>.</p></dd>
<dt>presence</dt>
<dd><p>Output of method <b class="method">presence</b>.</p></dd>
<dt>prompt</dt>
<dd><p>Output of method <b class="method">prompt</b>.</p></dd>
<dt>required</dt>
<dd><p>Output of method <b class="method">required</b>.</p></dd>
<dt>threshold</dt>
<dd><p>Output of method <b class="method">threshold</b>.</p></dd>
<dt>type</dt>
<dd><p>Output of method <b class="method">type</b>.</p></dd>
<dt>validator</dt>
<dd><p>Output of method <b class="method">validator</b>.</p></dd>
</dl></dd>
<dt>sections</dt>
<dd><p>A list of sections the command belongs to.
Each section name is a list itself, the path of the section and sub-sections.</p></dd>
<dt>states</dt>
<dd><p>A list of strings, the names of the command's hidden state parameters.
These names are keys into the <b class="variable">parameters</b> sub-dictionary.</p></dd>
</dl>
</div>
<div id="section5" class="section"><h2><a name="section5">Bugs, Ideas, Feedback</a></h2>
<p>Both the package(s) and this documentation will undoubtedly contain
bugs and other problems.
Please report such at
<a href="https:/core.tcl.tk/akupries/cmdr">Cmdr Tickets</a>.</p>
<p>Please also report any ideas you may have for enhancements of
either package(s) and/or documentation.</p>
</div>
<div id="keywords" class="section"><h2><a name="keywords">Keywords</a></h2>
<p><a href="../../index.html#key4">arguments</a>, <a href="../../index.html#key5">command hierarchy</a>, <a href="../../index.html#key9">command line completion</a>, <a href="../../index.html#key11">command line handling</a>, <a href="../../index.html#key13">command tree</a>, <a href="../../index.html#key0">editing command line</a>, <a href="../../index.html#key8">help for command line</a>, <a href="../../index.html#key6">hierarchy of commands</a>, <a href="../../index.html#key3">interactive command shell</a>, <a href="../../index.html#key1">optional arguments</a>, <a href="../../index.html#key2">options</a>, <a href="../../index.html#key12">parameters</a>, <a href="../../index.html#key10">processing command line</a>, <a href="../../index.html#key7">tree of commands</a></p>
</div>
<div id="copyright" class="section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; 2013-2016 Andreas Kupries<br>
Copyright &copy; 2013-2016 Documentation, Andreas Kupries</p>
</div>
</div></body></html>