From therneau at mayo.edu  Tue Jan 24 20:50:15 2012
From: therneau at mayo.edu (Terry Therneau)
Date: Tue, 24 Jan 2012 13:50:15 -0600
Subject: [Rd] Sweave driver extension
Message-ID: <1327434615.8525.38.camel@nemo>

Almost all of the coxme package and an increasing amount of the survival
package are now written in noweb, i.e., .Rnw files.  It would be nice to
process these using the Sweave function + a special driver, which I can
do using a modified version of Sweave.  The primary change is to allow
the following type of construction

<<coxme>>
coxme <- function(formula, data, subset, blah blah  ){
   <<coxme-check-arguments>>
   <<coxme-build>>
   <<coxme-compute>>
   <<coxme-finish>>
}
@

where the parts referred to come later, and will themselves be made up
of other parts.  Since the point of this file is to document source
code, the order in which chunks are defined is driven by "create a
textbook" thoughts and won't match the final code order for R.  
The standard noweb driver only allows one level of recursion, and no
references to things defined further down in the file.   

  The primary change to the function simply breaks the main loop into
two parts: first read through the all the lines and create a list of
code chunks (some with names), then go through the list of chunks and
call driver routines.  There are a couple of other minor details, e.g. a
precheck for infinite recursions, but no change to what is passed to the
driver routines, nor to anything but the Sweave function itself.

Primary question: who on the core team should I be holding this
conversation with?  
Secondary: Testing level?  I have a few vignettes but not many.
    I'll need a "noweb" package anyway to contain the drivers -- should
we just duplicate the modified Sweave under another name?  
    Call the package "noweb", "Rnoweb", ...?  

And before someone asks: Roxygen is a completely different animal and
doesn't address what I need.  I have latex equations just above the code
that impliments them, an annotated graph of the call tree next to the
section parsing a formula, etc. This is stuff that doesn't fit in
comment lines. The text/code ratio is >1.  On the other hand I've
thought very little about integration of manual pages and description
files with the code, issues which Roxygen addresses.

Terry Therneau



[Rd] Sweave driver extension
Terry Therneau