lpml: Literate Programming Markup Language
what's new ] [ project ] [ language ] [ alpha prototype ] [ examples ]
Finally getting down to business writing a real code documentation system. It'll get put through its paces during coding for the wftk. I'm getting on a real roll with four-letter vowelless acronyms and I like it. (And note that FLVA is not an FLVA.)
STATUS / NEWS
3/20/2000 A sudden brainstorm caused me to start this project. I hope to have something marginally usable today.
3/21/2000 Working code. Tangles and weaves itself. Go look.
3/26/2000 Improved formatting (well, I think so anyway) and added subitems so that smaller structure can be documented on a single page instead of spreading things out over many pages. The tangle item is a bad example but the only example until I rework some of the other areas.
3/29/2000 Darned namespaces. The original name of the project (xmlp) was just too good. So good, in fact, that it was taken. I'm hoping lpml isn't. Sigh.
4/20/2000 Completed (well, it's not complete) a big example. The task list manager component of wftk is about 1200 lines of Tcl code; the XML used to generate that is roughly 2300 lines and 102K -- and I typed it all myself. Writing all this English lately is doing wonders for my typing speed.
5/7/2000 Added support for formatting right in the document by means of the <format>.
 

PROJECT

I'm starting this in conjunction with the coding effort for the open-source workflow toolkit. Since the wftk is my first open-source project (and this will be my second) I feel as though it should be documented to a much higher standard than my earlier work, which has never been for public consumption. I've always commented fairly carefully, but open source should do better than that. Design decisions should be documented and so forth. You know the drill. If you're not familiar with literate programming, by the way, please read my introduction to the topic and maybe follow some of the links. Worth your while.

At any rate, the first run at this will be lpml-alpha, which is a very minimal Perl script which will do very basic tangle and weave. (Tangle and weave are not considered separate operations in this system, but I still talk about those aspects of processing as though they were.)

LPML is financially supported by no-one. If you think you want to send me money or something, I'm sure something can be arranged. Otherwise, if you want to use the beast, feel free. It will be available under the GNU license very soon, and other licensing arrangements can be discussed, of course. More on that when I get something to show, which should be relatively soon, as I feel the Muse on me.

 

LANGUAGE

The XML I'll use for this effort (at least the first time around) will be rather simple; it's the result of maybe five years' thought about literate programming and why I do and don't like it, combined with my sudden recent plunge into XML in the framework of the wftk project. XML is cool, really cool. The more you think about it, the more you wonder why you spent all those years working without it -- I have an introductory topic, of course, but it needs updating because I wrote it before I did much with XML. Months ago.

Anyway, here is the definition of the language, and at some point I may write a valid DTD for it. For the time being, it's sort of bastard XML instead of real live XML, and I don't really care. So there. May 2000 -- I have, however, introduced some basic little XMLish tags which will transform into HTML, so that lpml.xml now is valid XML, for instance. But I still haven't written a DTD because I don't need one at the moment and I have too much else to do. Eventually I'll be working with a DTD-driven XML editor, and at that point I'll surely write a DTD.

 

ALPHA CODE

LPML alpha is a prototype Perl script. It has lots of limitations, up to and including the fact that it really doesn't parse XML all that well, but it does take an XML-like source code, tangle and weave it, and produce results. Of course, the only thing I've used it to produce is itself (and that was rife with meta-confusion!) but I hope that will change soon. (May 2000 -- and in fact I've used it on the example litprogs below, and a couple that aren't on that list even. It's starting to be a usable tool. Still needs a lot of work, but I'm finding it quite useful in the day-to-day.)

Go look at it, and even download it and give it a whirl if you want to give me a little feedback. I'd like to hear what you have to think.

It's just a taste of what's to come, I hope.

 

EXAMPLE LITERATE PROGRAMS

 






Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.