Date: Wed, 23 Feb 2011 23:02:00 -0500 From: Greyson Fischer To: nr@cs.tufts.edu Subject: noweb + interpreter line = noscript Dear Norman, I have been a literate programmer for a few years now. Although I must limit my use of it most of the time due to corporate pressure, it comes in extremely handy for particularly new or challenging tasks. Of course I use noweb for many of my literate programs, preferring it over even cweb for C and C++ (sure, 'int' isn't bold, but at least it's indented the way I like to read). I found myself repeating a pattern when it came to writing in interpreted languages; specifically those that use a shebang to specify their interpreter. I write the literate script, tangle it, and then copy the result off to be used. The problem with this approach comes when I want, or need, to edit the script again later. Although I know it came from noweb (usually because of the complete lack of comments) I couldn't always track down the original source in a timely manner, leading me to make changes to the derived script, rather than the source. So, I came up with a simple fix. noscript tangles a document on the fly (assuming the first line has %!) and executes it inline with the specified interpreter. To use it, take a noweb document (for example: myscript.nw) which tangles <<*>> into, for example, a shell script. Add a "%!/bin/sh" at the top of the file. Run 'noscript myscript.nw'. Done, the script has been executed. I've attached my version 0.1 in case your interested (along with some trivial test documents). It's made it quite a bit easier for me to keep the document and the script together. Perhaps you, or one of your users, might find it of use. Cheers, Greyson Fischer