As I wrote in my last blog entry, I went back hacking on HEΛP.
HEΛP is the Common Lisp code documentation tool I started writing many years ago.
Apart from a little necessary Javascript and CSS, HEΛP is a full Common Lisp program, geared towards producing static documentation sites for CL code. I finally got around to modernize it and it is now ready for testing.
Evolution from (X)HTML to HTML5
The original HEΛP release was producing only (X)HTML output, moreover
based on FRAMESETs.
Alas, when the first HEΛP release was made, FRAMESETs were falling out of fashion,
and they were eventually deprecated with the advent of HTML5. An "upgrade" to HTML5
became then a necessity.
After a very long process, I finally finished the HTML5 port, plus some bells and whistles. All in all,
the implementation uses <div ... > sections plus CSS to lay out the display, as I understand
it is the proper coding fashion nowadays. The port uses the
W3.CSS styles, which facilitated a number of
choices. The result is rather pleasing, as far as I am concerned.
Example: Producing the HEΛP documentation
The HEΛP documentation (a form of it) is produced with the following command
(hlp is one of the package nicknames):
(hlp:document #P"./" ; Just a "top directory"... :documentation-title "HEΛP" :format :html5 :exclude-directories (list "doc/" "js/" "css/" ".git/" "tests/" "tmp/" "tools/" ) :exclude-files ; I run this from LW. (list "impl-dependent/ccl.lisp" "impl-dependent/sbcl.lisp" "utilities/document-helambdap.lisp" "utilities/lambda-list-parsing.lisp" ) :only-documented t :only-exported t )
After much printing, the resulting static web pages are deposited in docs/html5/, unless overridden.
The system also relies on some defaults which are handled by
CLAD library.
Viewing the result.
For the time being, you can find the main page of
HEΛP here. Navigating the bar on the left
will allow you to see different bits and pieces fo the documentation. You will notice that you have different views
of the documentation: a system view and a package view. The system view gives you also a view of
the files and folders (modules) it contains.
Documentation strings are mostly left alone.
Unike for Emacs Lisp,
there is no real agreement in the CL community about how to format documentation strings (if there is, I do not agree
with it by definition - obviously). HEΛP wants to be able to document code that does not adopt any documentation
string convention, therefore it treats documentation strings pretty much as they are, only adding some text in the guise
of the Hyperspec entries.
Screenshot
Here are a couple of screenshots. Apologies for the bad resolution.
Missing Pieces
There is one thing that is missing from HEΛP: the generation of proper crossreferencing. To do it correctly it will be necessary to somehow make some educated guesses about the content of documentation strings or agreeing on some markup to tag linkable items. Apart from that, at the time of this writing the doc strings are handled as enties in an has table, and that could be improved, as more indexes may be needed.
Of course, a major rewrite may also help, but time is a tyrant.
Any suggestion is welcome.
Try it!
Again, HEΛP is ready for you to try. You can clone the repository from Sourceforge.
... and remember: no Python or Ruby or Shell dependencies: pure CL (plus some Javascript, which is a functional language after all, whose first implmentation was dome in CL).
Enjoy!
'(cheers)

