(edicl.github.io) CL-WHO - Yet another Lisp markup language

ROAM_REFS: https://edicl.github.io/cl-who/

** CL-WHO - Yet another Lisp markup language

* Abstract

There are plenty of Lisp Markup Languages out there - every Lisp programmer seems to write at least one during his career - and CL-WHO (where WHO means "with-html-output" for want of a better acronym) is probably just as good or bad as the next one. They are all more or less similar in that they provide convenient means to convert S-expressions intermingled with code into (X)HTML, XML, or whatever but differ with respect to syntax, implementation, and API. So, if you haven't made a choice yet, check out the alternatives as well before you begin to use CL-WHO just because it was the first one you came across. (Was that repelling enough?) If you're looking for a slightly different approach you might also want to look at HTML-TEMPLATE.

I wrote this one in 2002 although at least Tim Bradshaw's htout and AllegroServe's HTML generation facilities by John Foderaro of Franz Inc. were readily available. Actually, I don't remember why I had to write my own library - maybe just because it was fun and didn't take very long. The syntax was obviously inspired by htout although it is slightly different.

CL-WHO tries to create efficient code in that it makes constant strings as long as possible. In other words, the code generated by the CL-WHO macros will usually be a sequence of

WRITE-STRING
forms for constant parts of the output interspersed with arbitrary code inserted by the user of the macro. CL-WHO will make sure that there aren't two adjacent
WRITE-STRING
forms with constant strings. CL-WHO's output is either XHTML (default), 'plain' (SGML) HTML or HTML5 (using HTML syntax) — depending on what you've set
HTML-MODE
to.

CL-WHO is intended to be portable and should work with all conforming Common Lisp implementations. Let us know if you encounter any problems.

It comes with a BSD-style license so you can basically do with it whatever you want.

Local Graph

org-roam 728907af-960f-4d75-8324-e5d2e2f76049 (edicl.github.io) CL-WHO - Yet anothe... //edicl.github.io/cl-who/null https://edicl.github.io/cl-who/null 728907af-960f-4d75-8324-e5d2e2f76049->//edicl.github.io/cl-who/null //www.cliki.net/Lisp%20Markup%20Languages http://www.cliki.net/Lisp%20Markup%20Languages 728907af-960f-4d75-8324-e5d2e2f76049->//www.cliki.net/Lisp%20Markup%20Languages //weitz.de/html-template/ http://weitz.de/html-template/ 728907af-960f-4d75-8324-e5d2e2f76049->//weitz.de/html-template/ //www.cliki.net/htout http://www.cliki.net/htout 728907af-960f-4d75-8324-e5d2e2f76049->//www.cliki.net/htout //opensource.franz.com/aserve/aserve-dist/doc/htmlgen.html http://opensource.franz.com/aserve/aserve-dist/doc/htmlgen.html 728907af-960f-4d75-8324-e5d2e2f76049->//opensource.franz.com/aserve/aserve-dist/doc/htmlgen.html //edicl.github.io/cl-who/#html-mode https://edicl.github.io/cl-who/#html-mode 728907af-960f-4d75-8324-e5d2e2f76049->//edicl.github.io/cl-who/#html-mode //edicl.github.io/cl-who/#mail https://edicl.github.io/cl-who/#mail 728907af-960f-4d75-8324-e5d2e2f76049->//edicl.github.io/cl-who/#mail //www.opensource.org/licenses/bsd-license.php http://www.opensource.org/licenses/bsd-license.php 728907af-960f-4d75-8324-e5d2e2f76049->//www.opensource.org/licenses/bsd-license.php 2a07e4ea-610b-4c9a-bb84-d961fb2450e5 Code and Coffee Book Club 2a07e4ea-610b-4c9a-bb84-d961fb2450e5->728907af-960f-4d75-8324-e5d2e2f76049