The clod Reference Manual

This is the clod Reference Manual, version 1.0.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 16:00:34 2024 GMT+0.

Table of Contents


1 Systems

The main system appears first, followed by any subsystem dependency.


1.1 clod

Common Lisp Autodoc generator

Author

Paul Sexton

Version

1.0.0

Dependencies
  • iterate (system).
  • closer-mop (system).
  • cl-ppcre (system).
  • sb-introspect (system).
Source

clod.asd.

Child Component

clod.lisp (file).


2 Files

Files are sorted by type and then listed depth-first from the systems components trees.


2.1 Lisp


2.1.1 clod/clod.asd

Source

clod.asd.

Parent Component

clod (system).

ASDF Systems

clod.


2.1.2 clod/clod.lisp

Source

clod.asd.

Parent Component

clod (system).

Packages

clod.

Public Interface
Internals

3 Packages

Packages are listed by definition order.


3.1 clod

* Description

CLOD is a tool for creating documentation for Common Lisp programs.
CLOD examines a loaded package and writes information about all the
symbols defined within that package, to a file.

The output file is in /Org/ format. Org is a simple but powerful ’wiki-like’ markup language that is understood by *Org-mode*, a powerful outliner, personal wiki and organiser that runs as a major mode within the /Emacs/ text
editor. Org-mode can export org-format files to numerous other formats, including HTML, LaTeX, PDF, DocBook, and plain text.

More information:
- Emacs :: [[http://www.gnu.org/software/emacs]] (if you program CL, you won’t need to be told what Emacs is)
- Org mode :: [[http://orgmode.org/]]

* Why use CLOD?

- You can use org markup within docstrings (easy for humans to read) to create subsections, bulleted lists, hyperlinks within the document or
to external URLs, etc.
- Easy export to multiple file formats: text, HTML, DocBook, LaTeX -> PDF... - You can edit the output within Emacs, which is already the IDE of most Commn Lisp programmers.
- If GraphViz is installed, automatically create a diagram illustrating the package’s class hierarchy – see http://www.graphviz.org/
- Org markup has many cool tricks. Some examples of useful things you can put in docstrings:
- Include an entire file and format as plain text:
: #+INCLUDE: "filename" quote
- Include an entire file with common lisp syntax highlighting
: #+INCLUDE: "filename.lisp" src lisp
- Timestamps and datestamps:
: {{{ modification-time(%r) }}}
{{{modification-time(%r)}}}
: {{{ date(%Y-%m-%d) }}}
{{{date(%Y-%m-%d)}}}
- Define text macros, use with ={{{macro(arg1,arg2)}}}=
: #+MACRO: foo Replacement text $1 $2
- Embed any LaTeX code directly (no special markup needed)
- Embed any HTML code (special markup needed)
- Automatic syntax highlighting of source code examples in exported documents, eg:
;;; (defun hello (a &key b)
;;; (print "Hello, world!"))
- Because CLOD works by introspection rather than parsing files,
it copes effortlessly with unusual toplevel forms. Documentation generators that parse files usually won’t be able to tell that your toplevel macro ‘=(defclass-easy ...)=’ (or whatever) actually
expands to a class definition.
- For the same reason, CLOD avoids the problems with dependencies that
can trouble other documentation generators (i.e. difficulties
generating correct documentation unless you manually move things
around in the source so that the doc generator finds things in
the ‘right’ order).
- Easily change the global appearance of the document by specifying a cascading style sheet (/note: only affects HTML export from Org mode/)

* Dependencies

- ASDF: [[http://common-lisp.net/project/asdf/]]
- Closer-MOP: [[http://common-lisp.net/project/closer/]]
- Iterate: [[http://common-lisp.net/project/iterate/]]
- CL-PPCRE: [[http://weitz.de/cl-ppcre/]]

* How to use

1. Install CLOD somewhere ASDF can find it.
2. Load CLOD with =(asdf:oos ’asdf:load-op :clod)=
3. Load the package or packages for which you wish to produce documentation, eg: =(asdf:oos ’asdf:load-op :mypkg)=
4. Run =(clod:document-package :mypkg nil)= and you will see the documentation as a string, returned by [[document-package]].
5. Run =(clod:document-package :mypkg "filename.org")= and the same documentation will be written to ’filename.org’.
6. Load filename.org into Emacs. Export to HTML with =M-x org-export=, or press C-c C-e to be presented with a menu of export options.

* Writing the documentation

All documentation produced by CLOD is obtained by /introspection/, i.e. by the running CL process examining itself. If a symbol has an associated docstring, it will be used by CLOD to produce the documentation for that symbol.

Within documentation strings, you can use org mode markup. This is a simple, human-readable markup language similar to the type of markup used for wiki editing and forum posting. See the Org [[http://orgmode.org/manual/Markup.html][manual]] for more information. Also see the docstrings in the CLOD source code, which use org markup.

Some special points to note:
- Outline headings are used to structure org documents. These headings
begin with one or more asterisks at the start of the line. Thus, if you want a large docstring to be divided into subsections, the heading for each subsection should be a line that starts with one or more asterisks (*), then a space, then the title of the heading.
- These headings will automatically be correctly ’indented’ for their location in the structure of the final document. The whole document is one outline, and any given docstring will usually be appearing 2 or 3 levels deep within that outline. However, CLOD finds all heading lines within docstrings and increases the number of asterisks appropriately.
- An extra blank line is also automatically inserted after headings within docstrings, allowing you to save screen space in the docstring itself.
- By default, many docstrings are inserted within a subsection titled ’Description’. However, if you don’t want this to happen, but rather want the docstring to define its own heading names, make sure that the very first thing in the docstring is a heading (straight after the opening quote). (Note for mmm-mode users (see below): if the docstring starts with ’###’ to signal that it is in fact a docstring, CLOD will skip the hashes before looking to see if the string starts with a heading.)
So ="###* Arguments ..."= will work in that case.
- Some symbol names used by common lisp can conflict with the markup used
by org mode. For example, =*global-variable*=: asterisks are interpreted by org mode as signifying bold text. CLOD catches these in headings and auto-generated documentation, but not within doc strings, where you will need to surround the offending symbol with =equals signs=.
- *Hyperlinks* are created using
: [[double square brackets]]
Any text surrounded by these brackets will link to the same text (case insensitive) surrounded by =<<double angle brackets>>=. CLOD uses this to define hyperlinks for all symbols in the package. Every symbol MYSYMBOL has: 1. A hyperlink =<<function MYSYMBOL>>= if MYSYMBOL is a function, =<<variable MYSYMBOL>>= if it is a global variable, etc.
2. A hyperlink =<<MYSYMBOL>>= which will either link to MYSYMBOL’s documentation, or to a ’disambiguation section’ if the same symbol has multiple meanings (eg there is both a function and a variable called MYSYMBOL).
- Org mode has the ability to use Emacs’ font-lock mode to produce source code snippets that are correctly syntax highlighted for any major mode. To use this normally requires surrounding the code with =#+BEGIN_SRC ... #+END_SRC=. CLOD provides a shortcut: Any lines within docstrings that begin with three semicolons =;;;= are assumed to be example lisp source code. The first 3 semicolons are removed and the rest of the line is syntax highlighted.

* Combining org mode and common lisp mode in a single Emacs buffer

You can use org mode markup within docstrings, but you can’t see the effects of the markup until you export the documentation to org using CLOD. You also don’t get access to org’s support for automatic formatting of bulleted lists as you write, or the fantastic support for writing tables, or hyperlinks that you can click with the mouse, or ....

What if you could use all the goodness of Org, while editing docstrings in your lisp source code? You can. This section explains how.

1. Download and install nXhtml, an emacs package that contains code allowing multiple major modes to be active in a single buffer. http://ourcomments.org/cgi-bin/emacsw32-dl-latest.pl
2. Add the code in ‘mmm-clod.el’ to your .emacs file. Make sure you change the mmm-mode directory to the directory where you installed mmm-mode.
3. Restart emacs. Load a lisp source file. All documentation strings should appear with a coloured background, and when you move the cursor inside them, you will see ’Lisp[Org]’ on the modeline.
4. If not everything is highlighting correctly, or if you write a new docstring and org does not activate within it, press control-‘ to ’refresh’ mmm-mode.

Not everything works: expanding and collapsing headings fails, and
clicking the mouse elsewhere within the doc string often causes problems. But overall the two modes work together surprisingly well.

MMM-mode recognises the following things as doc strings:
1. Any string that emacs fontifies using ’font-lock-doc-face’. (in other words, font-lock mode must be active.)
2. Any string inside the form ’=(:documentation STRING)=’.
3. Finally, any string whose first three characters are ’###’. Since lines beginning with a hash are interpreted as comments by org mode, these characters will disappear when you export your document to HTML or other formats.

* Example docstring

Here is the docstring for [[document-package]]. It illustrates the use of headings, bulleted lists, definition lists, =code=, *bold* and /italic/ markup, hyperlinks to other definitions, and syntax highlighting of lisp source code examples.

: "* Arguments
: - PKG :: A package name or package object.
: - FILE/STREAM :: A string (filename), stream object, or =NIL=.
: - AUTO-LINKS :: Boolean.
: - LINES-BETWEEN-SECTIONS :: Boolean.
: - BRIEF-METHODS :: Boolean.
: - STYLE-SHEET :: A string.
: - TITLE :: A string.
: - AUTHOR :: A string.
: - EMAIL :: A string.
: * Returns
: A string, or nil.
: * Description
: Produce documentation for the package =PKG=.
:
: The documentation’s destination depends on the value of =FILE/STREAM=:
: - =STRING=: documentation is written to the file named by the string.
: - =STREAM=: documentation is written to the already existing stream.
: - =NIL=: documentation is written to a string, which is then returned by
: this function.
:
: Explanation of optional arguments:
: - =TITLE=, =AUTHOR= and =EMAIL= specify the document title, the name of
: the author, and the email address of the author.
: - If =AUTO-LINKS= is non-nil, *all* occurrences of symbol names within the : text of docstrings will be interpreted as hyperlinks, regardless of
: whether they are marked up as hyperlinks.
: - If LINES-BETWEEN-SECTIONS is nil, do not output a horizontal line before : each new section of documentation.
: - If BRIEF-METHODS is nil, document individual methods with their own
: sections, just like functions and generic functions. Most people put
: ’method’ documentation in the docstrings of their generic functions, but : if you set docstrings for individual methods then set this to nil.
: - =STYLE-SHEET= specifies the name of a /Cascading Style Sheet/ (.CSS) file : which will be used as the style for the document if you export it
: to HTML from org mode."
:
: * Example
: ;;; (clod:document-package :mypkg "mypkg-doc.org"
: ;;; :style-sheet "swiss.css" :title "My Package"
: ;;; :author "F. B. Quux" :email "quux@gmail.com")
:
: * See also
: - [[document-packages]]

Source

clod.lisp.

Use List
  • cl-ppcre.
  • closer-mop.
  • common-lisp.
  • iterate.
Public Interface
Internals

4 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


4.1 Public Interface


4.1.1 Ordinary functions

Function: document-package (pkg file/stream &key auto-links lines-between-sections brief-methods internal-symbols? class-diagram style-sheet title author email)

* Arguments
- PKG :: A package name or package object.
- FILE/STREAM :: A string (filename), stream object, or =NIL=.
- AUTO-LINKS :: Boolean.
- LINES-BETWEEN-SECTIONS :: Boolean.
- BRIEF-METHODS :: Boolean.
- INTERNAL-SYMBOLS :: Boolean.
- CLASS-DIAGRAM :: Boolean.
- STYLE-SHEET :: A string.
- TITLE :: A string.
- AUTHOR :: A string.
- EMAIL :: A string.
* Returns
A string, or nil.
* Description
Produce documentation for the package =PKG=.

The documentation’s destination depends on the value of =FILE/STREAM=:
- =STRING=: documentation is written to the file named by the string.
- =STREAM=: documentation is written to the already existing stream.
- =NIL=: documentation is written to a string, which is then returned by this function.

Explanation of optional arguments:
- =TITLE=, =AUTHOR= and =EMAIL= specify the document title, the name of the author, and the email address of the author.
- =STYLE-SHEET= specifies the name of a Cascading Style Sheet (.CSS) file which will be used as the style for the document if you export it
to HTML from org mode.
- If =AUTO-LINKS= is non-nil, *all* occurrences of symbol names within the text of docstrings will be interpreted as hyperlinks, regardless of whether they are marked up as hyperlinks.
- If =LINES-BETWEEN-SECTIONS= is nil, do not output a horizontal line before each new section of documentation.
- If =BRIEF-METHODS= is nil, document individual methods with their own sections, just like functions and generic functions. Most people put ’method’ documentation in the docstrings of their generic functions, but if you set docstrings for individual methods then set this to nil.
- If =INTERNAL-SYMBOLS?= is non-nil, document both internal and external (exported) symbols. If nil, only document external symbols.
- If =CLASS-DIAGRAM= is non-nil, create a section after the toplevel package description, containing a description of the package hierarchy
in the form of a GraphViz ’dot’ diagram (see http://www.graphviz.org/).

* Example
;;; (clod:document-package :mypkg "mypkg-doc.org"
;;; :style-sheet "swiss.css" :title "My Package"
;;; :author "F. B. Quux" :email "quux@gmail.com")

* See also
- [[document-packages]]

Package

clod.

Source

clod.lisp.

Function: document-packages (packages file/stream &key auto-links lines-between-sections brief-methods internal-symbols? class-diagram style-sheet title author email)

* Arguments
- PACKAGES :: A list of package objects, or symbols naming packages. - FILE/STREAM :: A string (filename), stream object, or =NIL=. Other arguments are the same as for [[document-package]].
* Returns
A string, or nil.
* Description
Produces documentation for all the packages in =PACKAGES=, within a single file.

See [[document-package]] for more details.

Package

clod.

Source

clod.lisp.


4.2 Internals


4.2.1 Special variables

Special Variable: *accessibilities*

List of one or both of the keywords =:EXTERNAL= and =:INTERNAL=. Only symbols whose accessibility matches one of the keywords in the list will be documented.

Package

clod.

Source

clod.lisp.

Special Variable: *alphabet*

List of uppercase letters (characters) from A to Z.

Package

clod.

Source

clod.lisp.

Special Variable: *ambiguities*

Hash table created during package documentation. Stores all symbols which have multiple ’meanings’ within the package.

Package

clod.

Source

clod.lisp.

If true, all occurrences of package symbols anywhere in the documentation will be turned into hyperlinks, even if they are not marked up as such.

Package

clod.

Source

clod.lisp.

Special Variable: *brief-methods*

If true, most documentation for methods is assumed to be found in the docstring for their generic function. A generic function’s methods are therefore described in a very brief format (bulleted list).

If false, each method receives its own section, just like other functions.

Package

clod.

Source

clod.lisp.

Special Variable: *class-diagram*

If true, creates a section describing the package class hierarchy as a ’dot’ diagram, which can be fed to the GraphViz program (if installed) to create a visual representation of the hierarchy.

Package

clod.

Source

clod.lisp.

Special Variable: *class-diagram-counter*

Counter that is incremented by one each time a class diagram is created. Used to construct the name of the class diagram PNG file that is produced by ‘dot’.

Package

clod.

Source

clod.lisp.

Special Variable: *clod-version-string*

String containing CLOD’s version number.

Package

clod.

Source

clod.lisp.

Special Variable: *document-author*

The author of the document. A string.

Package

clod.

Source

clod.lisp.

Special Variable: *document-email*

The email address of the document’s author. A string.

Package

clod.

Source

clod.lisp.

Special Variable: *document-style-sheet*

Filename of the Cascading Style Sheet (.css) file to use if the document produced by CLOD is exported to HTML.

Package

clod.

Source

clod.lisp.

Special Variable: *document-title*

The title of the document. A string.

Package

clod.

Source

clod.lisp.

Special Variable: *heading-char*

Character used at the beginning of lines to signify headings and subheadings. Should not be changed.

Package

clod.

Source

clod.lisp.

Special Variable: *heading-level*

Number of levels ’deep’ within the outline. Used when creating headings for sections and subsections.

Package

clod.

Source

clod.lisp.

Special Variable: *hyperspec-root*

URL or directory where the Hyperspec is found. Not currently implemented.

Package

clod.

Source

clod.lisp.

Special Variable: *left-margin*

Width of the current ’left margin’, in spaces.

Package

clod.

Source

clod.lisp.

Special Variable: *line-width*

Width to which paragraphs are wrapped, in characters.

Package

clod.

Source

clod.lisp.

Special Variable: *lines-between-sections*

If true, sections of the document will be separated by horizontal lines.

Package

clod.

Source

clod.lisp.

Special Variable: *out*

Global variable that is bound to the output stream used by CLOD while writing documentation.

Package

clod.

Source

clod.lisp.

Special Variable: *unsafe-html-chars*

List of characters which are unsafe within HTML links and anchors, and which need to be converted to a safe representation.

See also: [[html-safe-string]].

Package

clod.

Source

clod.lisp.


4.2.2 Macros

Macro: do-own-symbols ((var pkg) &body body)

* Arguments
- VAR :: symbol naming a variable that will be bound to each symbol in turn. - PKG :: a package.
* Description
Iterate through all the non-imported symbols in the package =PKG=. =BODY= is executed once for each such symbol, with =VAR= bound to each symbol in turn.

Package

clod.

Source

clod.lisp.

Macro: write-indented ((indent) &body body)

* Arguments
- INDENT :: An integer.
* Return Value
Ignored.
* Description
All text that is written within the body of the form will be indented a further =INDENT= spaces from the left margin.

Package

clod.

Source

clod.lisp.

Macro: writing-bulleted-list (&body body)

All output within the body of a form is assumed to be within a bulleted list.

Package

clod.

Source

clod.lisp.

Macro: writing-section ((title) &body body)

Wraps all output within the body of the form in its own section.

Package

clod.

Source

clod.lisp.

Macro: writing-section-for-symbol ((entity sym) &body body)

Wraps all output within the body of the form in its own section. The title of the section describes the entity of type =ENTITY= that is bound to the symbol =SYM=.

Package

clod.

Source

clod.lisp.


4.2.3 Ordinary functions

Function: accessible-symbols (syms access pkg)

* Arguments
- SYMS :: A list of symbols.
- ACCESS :: One of the keywords =:INTERNAL= or =:EXTERNAL=. - PKG :: A package object.
* Returns
A list of symbols.
* Description
Given a list of symbols, SYMS, returns the subset of SYMS whose accessibility in PKG matches ACCESS.

Package

clod.

Source

clod.lisp.

Function: ampersand-symbol? (sym)

Does the symbol SYM begin with an ampersand, such as &ANY, &REST and so on?

Package

clod.

Source

clod.lisp.

Function: declared-special-p (symbol)

Returns true if SYMBOL is declared special.

Package

clod.

Source

clod.lisp.

Function: docpkg (&rest packages)
Package

clod.

Source

clod.lisp.

Function: document-package-contents (pkg &optional accessibilities)

* Arguments
- PKG :: A package name or package object.
- ACCESSIBILITIES :: A list containing zero or more of the symbols =:external= or =:internal=.
* Return Value
Ignored.
* Description
Writes documentation for all symbols contained within the package =PKG=. Does not write documentation for the actual package object.

Package

clod.

Source

clod.lisp.

Function: entity->string (entity)

* Arguments
- ENTITY :: An [[=entity=]].
* Returns
A string.
* Description
Given an entity, returns a string that can be used to describe that entity type in human-readable form, in headings, etc.

Package

clod.

Source

clod.lisp.

Function: entity->tag (entity)

* Arguments
- ENTITY :: An [[=entity=]].
* Returns
A string.
* Description
Given an entity, returns a string that can be used as a *tag* denoting that entity type in org mode. See [[http://orgmode.org/manual/Tags.html]] for information on tags.

Package

clod.

Source

clod.lisp.

Function: find-pkg (pkg)
Package

clod.

Source

clod.lisp.

Function: find-sym (sym &optional pkg)
Package

clod.

Source

clod.lisp.

Function: function-lambda-list (func)

* Arguments
- FUNC :: A function object, macro object, generic function object,
or a symbol bound to a function or macro.
* Returns
Two values:
- The lambda list of the function name or function object, FUNC; or nil if the function takes no arguments or the lambda list cannot be retrieved. - A boolean value – T if a lambda list (even an empty one) was found, NIL otherwise.
* Description
Returns the lambda list associated with the definition of the function or macro =FUNC=. For example, the lambda list for the common lisp function =FIND= is the list:
: (ITEM SEQUENCE &KEY :FROM-END :TEST :TEST-NOT :START :END :KEY)

Package

clod.

Source

clod.lisp.

Function: function-name (fn)

* Arguments
- FN :: A function, generic function or macro object.
* Returns
The name of a function or macro, or nil.
* Description
Returns the official ’name’ bound to the function, macro, or generic function object FN. Returns =NIL= if no name can be found or if the function is anonymous (=lambda=).

Package

clod.

Source

clod.lisp.

Function: html-safe-string (str)

* Arguments
- STR :: A string.
* Returns
A string.
* Description

Given a string which is intended as a link target, return a copy in which we remove or alter any unsafe characters that will stop the link working properly when the document is exported to HTML.
* See Also
- [[*unsafe-html-chars*]]

Package

clod.

Source

clod.lisp.

Function: list->string-with-commas (ls)

* Arguments
- LS :: A list of values.
* Returns
A string.
* Description
Given a list of arbitrary values, returns a string consisting of the printed representations of those values, separated by commas and spaces. * Example
;;; (list->string-with-commas ’(a b 123))
;;;
;;; => "A, B, 123"

Package

clod.

Source

clod.lisp.

Function: list-all-direct-slots (classes)

* Arguments
- CLASSES :: A list of class objects.
* Return Value
A list of SLOT-DEFINITION instances.
* Description
Return a list of all the direct SLOT-DEFINITION instances defined for all the classes in CLASSES.

Package

clod.

Source

clod.lisp.

Function: list-all-indirect-slots (classes)

* Arguments
- CLASSES :: A list of class objects.
* Return Value
A list of SLOT-DEFINITION instances.
* Description
Return a list of all the indirect SLOT-DEFINITION instances defined for all the classes in CLASSES.

Package

clod.

Source

clod.lisp.

Function: list-all-slot-accessors (classes)

* Arguments
- CLASSES :: A list of class objects.
* Return Value
A list of generic functions.
* Description
Return a list of all the reader and writer generic functions associated with all the slots of the classes in CLASSES.

Package

clod.

Source

clod.lisp.

Synonym for ([[make-link]] =X :class=).

Package

clod.

Source

clod.lisp.

Synonym for ([[make-link]] =X :package=).

Package

clod.

Source

clod.lisp.

Function: make-specialised-lambda-list (terms specs)

* Arguments
- TERMS :: Unspecialised version of the lambda list (a list of symbols). - SPECS :: List of class names on which a particular method is specialised.
* Returns
A list.
* Description
Given an unspecialised lambda list and a list of specialisers, reconstruct the specialised lambda list and return it.

Package

clod.

Source

clod.lisp.

Function: make-target (sym &optional entity)

Returns a string that will be interpreted by org as a destination for hyperlinks to =SYM=.

Package

clod.

Source

clod.lisp.

Function: map-list (function list)

Map over proper and not proper lists.

Package

clod.

Source

clod.lisp.

Function: org-safe-symbol (sym)

* Arguments
- SYM :: A symbol.
* Return Value
A string.
* Description
Given the symbol SYM, return a string that represents SYM in a form that is human-readable and where org will not be confused by any characters that might represent markup instructions.

Package

clod.

Source

clod.lisp.

Function: replace-strings-with-symbols (tree)
Package

clod.

Source

clod.lisp.

Function: simple-type? (sym)

* Arguments
- SYM :: A symbol.
* Return Value
Boolean.
* Description
Returns =T= if =SYM= names a non-class type, such as can be defined by [[deftype]].

Package

clod.

Source

clod.lisp.

Function: str+ (&rest strings)

* Arguments
- STRINGS :: One or more strings.
* Returns
A string.
* Description
Returns the concatenation of all supplied strings. Shorthand for =(concatenate ’string . STRINGS)=.

Package

clod.

Source

clod.lisp.

Function: string-starts-with? (str start)

* Arguments
- STR :: A string.
- START :: A smaller string.
* Returns
Boolean.
* Description
Predicate. Does the string =STR= start with the string =START=?

Package

clod.

Source

clod.lisp.

Function: symbol-accessibility (sym &optional pkg)

* Arguments
- SYM :: A symbol.
- PKG :: A package.
* Returns
One of =:inherited, :internal, :external= or =nil=.
* Description
Returns a symbol describing how the symbol =SYM= is accessible within the package =PKG=. If =SYM= is exported by =PKG= then the function returns =:external=, and so on.

Package

clod.

Source

clod.lisp.

Function: type->string (typ)

Returns a simple string representation of the type specifier =TYP=.

Package

clod.

Source

clod.lisp.

Function: uses-for-symbol (sym)

* Arguments
- SYM :: A symbol.
* Return Value
A list of [[=entity=]] values.
* Description
Given a symbol =SYM=, return a list of entity values, describing the different meanings/bindings of =SYM= within its home package.

Package

clod.

Source

clod.lisp.

Function: word-wrap (text &key width respect-newlines respect-hyphens exclude-start-char exclude-end-char)

* Arguments
- TEXT :: A string.
- WIDTH :: An integer. The maximum length of lines once TEXT is wrapped. Default is 80.
- RESPECT-NEWLINES :: Boolean. Should newline characters within the string be treated as unbreakable? (=NIL=)
- RESPECT-HYPHENS :: Boolean. Should we refrain from breaking hyphenated words? (=NIL=)
- EXCLUDE-START-CHAR :: A character, or nil.
- EXCLUDE-END-CHAR :: A character, or nil.

* Return Value
A list of strings.

* Description
Given a string =TEXT=, breaks the string into a series of
smaller strings, none of which is longer than =WIDTH=. Returns the list of strings.

If =EXCLUDE-START-CHAR= and =EXCLUDE-END-CHAR= are supplied, those characters will be treated as demarcating sections of the string whose length is to be ignored (treated as zero).

Package

clod.

Source

clod.lisp.

Function: wrap-and-write (fmt &rest args)

Wraps the result of =(FORMAT NIL FMT . ARGS)=, then writes the resulting paragraph to output.

Package

clod.

Source

clod.lisp.

Function: wrap-and-write-code (fmt &rest args)

Wraps the result of =(FORMAT NIL FMT . ARGS)=, then writes the resulting paragraph with ’literal’ or ’source code block’ markup.

Package

clod.

Source

clod.lisp.

Function: write-bullet-point (fmt &rest args)

Writes a the result of =(FORMAT NIL FMT . ARGS)= as a point within an active bulleted list.

Package

clod.

Source

clod.lisp.

Function: write-chapter (symlist entity title)

* Arguments
- SYMLIST :: A list of symbols.
- ENTITY :: An [[=entity=]].
- TITLE :: A string.
* Return Value
Ignored.
* Description
Writes the section of the document which describes all entities of type =ENTITY=. =SYMLIST= should be a list of all the symbols that name such entities.

Package

clod.

Source

clod.lisp.

Function: write-class-hierarchy (classes)

* Arguments
- CLASSES :: A list of CLASS objects.
* Returns
Ignored.
* Description
Writes the inheritance tree of CLASSES as a GraphViz diagram, using the DOT language. External parent classes are also included.

See http://www.graphviz.org/ for details of the GraphViz language.

Package

clod.

Source

clod.lisp.

Function: write-colophon ()
Package

clod.

Source

clod.lisp.

Function: write-disambiguation (sym uses)

Writes a section providing disambiguating links for the symbol SYM, which is bound in multiple namespaces.

Package

clod.

Source

clod.lisp.

Function: write-docstring (str &key levels default)

* Arguments
- STR :: A docstring.
- LEVELS :: How many levels deep in the outline is
this docstring?
- DEFAULT :: A string. Default text, used if =STR= is =NIL=.
* Return Value
Ignored.
* Description
Writes the docstring STR to the document. Before doing this, processes the docstring to:
- Demote headings
- Make all hyperlinks safe for org mode and HTML export
- Convert lines beginning with ’;;;’ to syntax-highlighting markup.

Package

clod.

Source

clod.lisp.

Function: write-docstring-section (title docstr)

Writes the documentation string DOCSTR within its own subsection.

Package

clod.

Source

clod.lisp.

Function: write-heading (title)

Writes a section heading entitled =TITLE=.

Package

clod.

Source

clod.lisp.

Function: write-index (pkg &optional accessibilities)

Writes a section containing an alphabetical index of all the symbols in the package PKG.

Package

clod.

Source

clod.lisp.

Function: write-lambda-list-section (sym)

Writes a section describing the lambda list of the function or macro SYM.

Package

clod.

Source

clod.lisp.

Function: write-lines (&rest lines)
Package

clod.

Source

clod.lisp.

Function: write-list-as-paragraph (ls)

LS is a list of items. Writes all the items in LS to output as a single wrapped paragraph. Individual items are separated by commas.

Package

clod.

Source

clod.lisp.

Function: write-out (fmt &rest args)

Writes the result of =(FORMAT NIL FMT . ARGS)= to output.

Package

clod.

Source

clod.lisp.

Function: write-preamble ()

* Arguments
None.
* Return Value
Ignored.
* Description
Writes some org instructions, intended to be placed at the start of the document. These specify the document’s author, title, and set some export options.

Package

clod.

Source

clod.lisp.


4.2.4 Generic functions

Generic Function: document (sym doctype)

* Arguments
- SYM :: a symbol.
- DOCTYPE :: an [[=entity=]].
* Returns:
Ignored.
* Description
Writes a section documenting the [[=entity=]] named =SYM= which is of entity type =DOCTYPE=.

Package

clod.

Source

clod.lisp.

Methods
Method: document ((slot direct-slot-definition) (doctype (eql :slot)))
Method: document ((slot effective-slot-definition) (doctype (eql :slot)))
Method: document :around ((slot slot-definition) (doctype (eql :slot)))
Method: document ((sym symbol) (doctype (eql :structure)))
Method: document ((sym symbol) (doctype (eql :class)))
Method: document ((m standard-method) (doctype (eql :method)))
Method: document ((sym symbol) (doctype (eql :slot-accessor)))
Method: document ((sym symbol) (doctype (eql :slot-writer)))
Method: document ((sym symbol) (doctype (eql :slot-reader)))
Method: document ((sym symbol) (doctype (eql :generic)))
Method: document ((sym symbol) (doctype (eql :constant)))
Method: document ((sym symbol) (doctype (eql :variable)))
Method: document ((sym symbol) (doctype (eql :type)))
Method: document ((sym symbol) (doctype (eql :macro)))
Method: document ((sym symbol) (doctype (eql :function)))
Method: document :before ((sym symbol) doctype)
Method: document :after ((sym symbol) doctype)

* Arguments
- TARGET :: A symbol, string, or other value that constitutes the target of the link.
- ENTITY :: An [[=entity=]].
- TEXT :: An optional string, used for the appearance of the link. The default is a direct textual representation of =TARGET=.
* Returns
A string.
* Description
Given a target and text, return a string that will be interpreted by org mode as a hyperlink leading to the documentation for =TARGET=.

Package

clod.

Source

clod.lisp.

Methods

4.2.5 Classes

Class: animal

dummy class, created to illustrate CLOD’s ability to produce class diagrams using GraphViz.

Package

clod.

Source

clod.lisp.

Direct subclasses
Class: bird

dummy class, created to illustrate CLOD’s ability to produce class diagrams using GraphViz.

Package

clod.

Source

clod.lisp.

Direct superclasses

animal.

Direct subclasses

hawk.

Class: cat

dummy class, created to illustrate CLOD’s ability to produce class diagrams using GraphViz.

Package

clod.

Source

clod.lisp.

Direct superclasses

mammal.

Class: dog

dummy class, created to illustrate CLOD’s ability to produce class diagrams using GraphViz.

Package

clod.

Source

clod.lisp.

Direct superclasses

mammal.

Class: hawk

dummy class, created to illustrate CLOD’s ability to produce class diagrams using GraphViz.

Package

clod.

Source

clod.lisp.

Direct superclasses

bird.

Class: mammal

dummy class, created to illustrate CLOD’s ability to produce class diagrams using GraphViz.

Package

clod.

Source

clod.lisp.

Direct superclasses

animal.

Direct subclasses

4.2.6 Types

Type: =entity= ()

The type ’entity’ can have any of several different symbols as its value. Each value is a different kind of ’meaning’ which a symbol can have within a package. For example, =:function= is a function, =:class= is a class, and so on.

Package

clod.

Source

clod.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   A   D   E   F   G   H   L   M   O   R   S   T   U   W  
Index Entry  Section

A
accessible-symbols: Private ordinary functions
ampersand-symbol?: Private ordinary functions

D
declared-special-p: Private ordinary functions
do-own-symbols: Private macros
docpkg: Private ordinary functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document: Private generic functions
document-package: Public ordinary functions
document-package-contents: Private ordinary functions
document-packages: Public ordinary functions

E
entity->string: Private ordinary functions
entity->tag: Private ordinary functions

F
find-pkg: Private ordinary functions
find-sym: Private ordinary functions
Function, accessible-symbols: Private ordinary functions
Function, ampersand-symbol?: Private ordinary functions
Function, declared-special-p: Private ordinary functions
Function, docpkg: Private ordinary functions
Function, document-package: Public ordinary functions
Function, document-package-contents: Private ordinary functions
Function, document-packages: Public ordinary functions
Function, entity->string: Private ordinary functions
Function, entity->tag: Private ordinary functions
Function, find-pkg: Private ordinary functions
Function, find-sym: Private ordinary functions
Function, function-lambda-list: Private ordinary functions
Function, function-name: Private ordinary functions
Function, html-safe-string: Private ordinary functions
Function, list->string-with-commas: Private ordinary functions
Function, list-all-direct-slots: Private ordinary functions
Function, list-all-indirect-slots: Private ordinary functions
Function, list-all-slot-accessors: Private ordinary functions
Function, make-class-link: Private ordinary functions
Function, make-package-link: Private ordinary functions
Function, make-specialised-lambda-list: Private ordinary functions
Function, make-target: Private ordinary functions
Function, map-list: Private ordinary functions
Function, org-safe-symbol: Private ordinary functions
Function, replace-strings-with-symbols: Private ordinary functions
Function, simple-type?: Private ordinary functions
Function, str+: Private ordinary functions
Function, string-starts-with?: Private ordinary functions
Function, symbol-accessibility: Private ordinary functions
Function, type->string: Private ordinary functions
Function, uses-for-symbol: Private ordinary functions
Function, word-wrap: Private ordinary functions
Function, wrap-and-write: Private ordinary functions
Function, wrap-and-write-code: Private ordinary functions
Function, write-bullet-point: Private ordinary functions
Function, write-chapter: Private ordinary functions
Function, write-class-hierarchy: Private ordinary functions
Function, write-colophon: Private ordinary functions
Function, write-disambiguation: Private ordinary functions
Function, write-docstring: Private ordinary functions
Function, write-docstring-section: Private ordinary functions
Function, write-heading: Private ordinary functions
Function, write-index: Private ordinary functions
Function, write-lambda-list-section: Private ordinary functions
Function, write-lines: Private ordinary functions
Function, write-list-as-paragraph: Private ordinary functions
Function, write-out: Private ordinary functions
Function, write-preamble: Private ordinary functions
function-lambda-list: Private ordinary functions
function-name: Private ordinary functions

G
Generic Function, document: Private generic functions
Generic Function, make-link: Private generic functions

H
html-safe-string: Private ordinary functions

L
list->string-with-commas: Private ordinary functions
list-all-direct-slots: Private ordinary functions
list-all-indirect-slots: Private ordinary functions
list-all-slot-accessors: Private ordinary functions

M
Macro, do-own-symbols: Private macros
Macro, write-indented: Private macros
Macro, writing-bulleted-list: Private macros
Macro, writing-section: Private macros
Macro, writing-section-for-symbol: Private macros
make-class-link: Private ordinary functions
make-link: Private generic functions
make-link: Private generic functions
make-link: Private generic functions
make-link: Private generic functions
make-link: Private generic functions
make-link: Private generic functions
make-link: Private generic functions
make-package-link: Private ordinary functions
make-specialised-lambda-list: Private ordinary functions
make-target: Private ordinary functions
map-list: Private ordinary functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, document: Private generic functions
Method, make-link: Private generic functions
Method, make-link: Private generic functions
Method, make-link: Private generic functions
Method, make-link: Private generic functions
Method, make-link: Private generic functions
Method, make-link: Private generic functions

O
org-safe-symbol: Private ordinary functions

R
replace-strings-with-symbols: Private ordinary functions

S
simple-type?: Private ordinary functions
str+: Private ordinary functions
string-starts-with?: Private ordinary functions
symbol-accessibility: Private ordinary functions

T
type->string: Private ordinary functions

U
uses-for-symbol: Private ordinary functions

W
word-wrap: Private ordinary functions
wrap-and-write: Private ordinary functions
wrap-and-write-code: Private ordinary functions
write-bullet-point: Private ordinary functions
write-chapter: Private ordinary functions
write-class-hierarchy: Private ordinary functions
write-colophon: Private ordinary functions
write-disambiguation: Private ordinary functions
write-docstring: Private ordinary functions
write-docstring-section: Private ordinary functions
write-heading: Private ordinary functions
write-indented: Private macros
write-index: Private ordinary functions
write-lambda-list-section: Private ordinary functions
write-lines: Private ordinary functions
write-list-as-paragraph: Private ordinary functions
write-out: Private ordinary functions
write-preamble: Private ordinary functions
writing-bulleted-list: Private macros
writing-section: Private macros
writing-section-for-symbol: Private macros


A.3 Variables

Jump to:   *  
S  
Index Entry  Section

*
*accessibilities*: Private special variables
*alphabet*: Private special variables
*ambiguities*: Private special variables
*auto-links*: Private special variables
*brief-methods*: Private special variables
*class-diagram*: Private special variables
*class-diagram-counter*: Private special variables
*clod-version-string*: Private special variables
*document-author*: Private special variables
*document-email*: Private special variables
*document-style-sheet*: Private special variables
*document-title*: Private special variables
*heading-char*: Private special variables
*heading-level*: Private special variables
*hyperspec-root*: Private special variables
*left-margin*: Private special variables
*line-width*: Private special variables
*lines-between-sections*: Private special variables
*out*: Private special variables
*unsafe-html-chars*: Private special variables

S
Special Variable, *accessibilities*: Private special variables
Special Variable, *alphabet*: Private special variables
Special Variable, *ambiguities*: Private special variables
Special Variable, *auto-links*: Private special variables
Special Variable, *brief-methods*: Private special variables
Special Variable, *class-diagram*: Private special variables
Special Variable, *class-diagram-counter*: Private special variables
Special Variable, *clod-version-string*: Private special variables
Special Variable, *document-author*: Private special variables
Special Variable, *document-email*: Private special variables
Special Variable, *document-style-sheet*: Private special variables
Special Variable, *document-title*: Private special variables
Special Variable, *heading-char*: Private special variables
Special Variable, *heading-level*: Private special variables
Special Variable, *hyperspec-root*: Private special variables
Special Variable, *left-margin*: Private special variables
Special Variable, *line-width*: Private special variables
Special Variable, *lines-between-sections*: Private special variables
Special Variable, *out*: Private special variables
Special Variable, *unsafe-html-chars*: Private special variables