[------------------------------------------------------]
[------ ignored text at beginning of file -----------]
[------------------------------------------------------]
# @namespace <name> <description of namespace>
# <continued description>
# @author <name of the primary author for this namespace>
# @see <type of reference, like proc, namespace, url, or other> <full name of reference> <url of reference>
# @see ... <more references>
# (@public|@private) <name> <description of procedure>
# <continued description>
# @param <name> <default value> <description>
# <continued description>
# @param ... <info for other paramaters>
# @option <name> <default value> <description>
# <continued description>
# @option ... <info for other options>
# @author <name of author>
# @return <description of return variable>
# @see <just like the namespace @see directive>
[------------------------------------------------------]
[---------- source text for procedure ---------------]
[------------------------------------------------------]
# @public or @private ... < more procedures within the same namespace >
# @namespace ... <other namespaces>
Note that comment lines are indented to indicate the manner in which they should be grouped only, and that there is no required spacing scheme for comments.
Use of these directive markers is largely straightforward, but a more in depth guideline of how the markers guide parsing may help those documenting their own work:
the @namespace markerthe @public/private markers
@namespace
is used to indicate the starting point of all text -- code and comments -- related to the procedures contained within that namespace. All text between one@namespace
marker and the next is parsed out as either Tcl proc source text or commentary of some sort- the body of text that falls between two
@namespace
markers is divided into sections identified bythe directive markers
- although this convention is in no way enforced, each Tcl procedure should be prefaced with an
@private
marker if the procedure is meant only for internal package use, or with an@public
marker if the proc is intended to be a CMA, ATS, or ACS Content Repository developer api- any text that falls between one @public/private marker and the next
proc
call will be parsed out as commentary text; all text after theproc
command but before the next@private
or@public
marker is recorded as source code
The commentary text that precedes a Tclproc
command should contain a list of directives identified by these markers:The parser requires no specified ordering or grouping of these directives. Note: there should be one
@author
@param
@option
@return
@see
@param
or@option
directive marker for each parameter and option accepted by Tcl procedure. For the @option and @parameter markers, please follow one of the following formats, depending on whether or not the parameter or option you are detailing has a default value:with a default value:Note that the literal curly brackets with the word default are required to include any information about the option or parameter's default values. When default-value information is not included, the entry value will be marked as required if it is a parameter, or display no information if it is an option.for required parameters:# @(param|option) <parameter name> {default <description of default value>} <description or explanation>
# @param <parameter name> <description or explanation>
For example: the fictional procedure grant_permission might be preceded by these comments:
In the above example
# @public grant_permission # checks for whether or not a user has the privilege # to manipulate an object in a specific manner # @param user_id id of the user to be granted the privilege # @param object_id id of the object which the user has been # granted privilege to manipulate # @param privilege_id {default defaults to read-write-edit on the object} # id of the privilege specifying # what actions the user can perform upon the object # @option granter_id {default taken from the current user's id} id of the user granting the privilege # @option alert_admin_email email of an admin to be alerted # @see namespace util util.htmluser_id
andobject_id
would be marked as required,alert_admin_email
would show no default-value description, andgranter_id
andprivilege_id
would show the the default info from above.On to @see directive markers:
# @see <type of reference> <name of reference> <url of reference>Indicating the url of the reference is made somewhat simple because all namespaces will be described within their own static html page, and all procedure information is anchor-referenced:If you are referring to a namespace or procedure (use# @see namespace util util.html # @see proc template::multirow::create multiow.html#template::multirow::create # @see url <a picture of wally my dog> http://my.page.net/dogs/wally.jpg # @see proc doc::util::eat_chicken
proc
for the reference type), the url value is optional as long as you use the full and completely qualified name of the namespace or procedure.