eazy-documentation
2021-04-11
One-shot solution to the CL documentation generator.
Eazy-Documentation
-
One-shot solution to the CL library documentation generator.
- It does not require any custom macro/read-macro for annotating your API.
Existing documentation generators supports only a limited number of macros (e.g.
defun
), or requires a user-defined extensions to the parser that extracts the documentation strings (e.g. see docparser). In contrast, this library runs based on the heuristic decision and ranking. - It searches the repository for any potential documentation files and embed them in the output as html. Some library (especially the old ones like CFFI) contains a separate documentation / manual as texinfo documents, but they will be all embedded in the output.
- It supports any markup format supported by Pandoc and makeinfo.
- It does not require any custom macro/read-macro for annotating your API.
Existing documentation generators supports only a limited number of macros (e.g.
-
Best documentation gives you the most with the least text.
- Bloated, redundant entries are harmful. Eazy-Documentation therefore provides a compact documentation by compressing the documentation entries in a run-length encoding manner – similar, partly identical entries are merged together as much as possible.
-
Respect the code structure and ordering.
- Well-written library has a nice, intuitive code structure. This must be exploited by the documentation generator – inspired by Quickdocs.
Example page containing the documentation of eazy-documentation itself can be found here.
Another example for NUMCL library.
Command line interface can be installed via Roswell: ros install guicho271828/eazy-documentation
Usage: eazy-documentation file-or-system output [OPTIONS]
The output is a single file when the output has a html extension; otherwise it will be considered as a directory name. It comes with a CSS and an empty javascript file.
Options are specified as follows:
Options:
keyword | description |
---|---|
:title | Documentation title |
:header | The header inserted after the title |
:footer | The footer inserted at the bottom |
:markup | Markup langage used in the docstring, should be supported by pandoc. |
:whitelist | Whitelist of the package designators for the symbols being documented |
:blacklist | Blacklist of the package designators for the symbols being documented |
:external-only | Generate entries for external symbols only |
:toc | Generate a table of contents (toc) |
:max-depth | The maximum depth of a toc |
:template-class | COMMON-HTML template class, no need to be changed. |
:css-list | List of CSS scripts to be added to the template. |
:js-list | List of Javascripts to be added to the template. |
:font-list | List of Google fonts to be added to the template. |
:clean | Overwrite CSS/JS in the target directory |
:remote-root | Used to generate a weblink. Example: https://github.com/<name>/<proj> |
:local-root | Used to generate a weblink. Example: /home/<user>/lisp/<proj>/blob/master |
:relative | When non-nil, the output is relative to the value of local-root. |
:static-files | List of static README files etc. |
Requirements
texinfo
and up-to-date pandoc
(note: some package
managers, e.g., Ubuntu's APT, provides a severely outdated version and results in a terrible output.
Install the latest version from https://pandoc.org/installing.html )
Author, License, Copyright
Masataro Asai (guicho2.71828@gmail.com)
Licensed under LGPL v3.
Copyright (c) 2019 IBM Corporation