[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [docbook-apps] documenting code
I may be completely off base here; but will RoboDoc do what you want? http://www.xs4all.nl/~rfsber/Robo/robodoc.html - Casey -----Original Message----- From: Dave Pawson [mailto:davep@dpawson.co.uk] Sent: Wednesday, January 07, 2009 7:15 AM To: Allan Stavely Cc: Docbook Apps Subject: Re: [docbook-apps] documenting code Allan Stavely wrote: > > May I jump in? Please. > > John sometimes does slightly more complicated things in his Python > scripts, things that aren't as easy to do with XSLT. Myself, I usually > just use XSLT -- most of the time it does everything I need. Here's what > I use for most of my projects (eleven lines at its most > complicated): > > http://www.nmt.edu/~al/Literate-programming/Examples/Extractcode Looks very similar to the way I'm going, except I'm adapting the role attribute for the language? So that I can get the revision history from the docbook, and appropriately comment the revhistory in the tangled python/xslt whatever >> Not possible when the resultant command line needs to be on one line. >> Embedded markup allows for better documentation. Again, easy >> enough to strip out using XSLT. > > Exactly, but this can just be another variation on the theme, if you > don't mind customizing your tools for your own needs. If DocBook doesn't > have the construct you mention, use it anyway and consider your notation > an "extended DocBook". Write one XSLT transform to convert to standard > DocBook for use as a document (perhaps using a <programlisting> in this > case), and have your code-extractor transform do the other processing > you want (line concatentation in this case). I've done this sort of > thing many a time. Yes, one new empty element added to <define name="db.verbatim.inlines"> <choice> <choice> <ref name="db.all.inlines"/> <ref name="db.lineannotation"/> <ref name='dp.linebreak'/> <!-- DP extension --> </choice> <ref name="db.co"/> </choice> </define> <define name='dp.linebreak'> <element name='linebreak'> <empty/> </element> </define> > > >>> Another reply on this thread said that they prefer to keep the >>> documentation inside the code, rather than the literate approach >>> wherein the code is inside the documentation. >> >> I prefer XML to wrap code simply to enable XSLT processing. >> >> >> The drawback to >>> their approach is that you need a different extractor for each >>> language. >> >> Or a more GP 'filter'. XSLT seems optimum to me. > > I agree, at least for what I want to do most of the time. But it's very > easy with Python too, or with lots of other programming languages. To > each his own. Fair comment > > What we ought to be optimizing is (1) the writing process and (2) the > end-product, so that reading is optimized. Details of exactly what the > toolchain looks like are very, very trivial by comparison. The > transforms and scripts are a few dozen lines, but we'll use them to > write many thousands of lines of product. > > The important idea is putting the code inside the documentation, instead > of trying to so it the other way round, and I'm completely sold on that > idea. I agree with the approach, the xslt is trivial and I'm looking at an ant setup to pull individual or all scripts/code out of the source, passing a) id of the element holding the code (currently sect1) b) An output file name (which seems redundant; I'm using the xml:id of the sect1 as the filename? <sect1 xml:id='tangle.xslt' role='xslt'> ... That provides all that I need for code extraction. Documentation simply means a single template for the linebreak element. output <br /> for html and fo:block for pdf regards -- Dave Pawson XSLT XSL-FO FAQ. http://www.dpawson.co.uk --------------------------------------------------------------------- To unsubscribe, e-mail: docbook-apps-unsubscribe@lists.oasis-open.org For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]