Blame | Last modification | View Log | Download | RSS feed
<?xml version="1.0"?><!DOCTYPE SSource SYSTEM "/home/duncan/Projects/org/omegahat/XML/RS/examples/SSource.dtd"[<!-- Temporarily use _ rather thant <- as it screws things up. --><!ENTITY sgets "_" ><!ENTITY Latex "LaTex" >]><SSource><overview>Here we define some</overview><function><sname>prompt.xml</sname><selfDoc><description></description><args><arg name="file">this is the name of the file into which the documentationis placed. In the future, this will be a connection object.</arg><arg name="header">this is text that is to be placed immediatelyafter the <![CDATA[<?xml version="1.0"?>]]>string emitted as the first part of the text.In the future, we will want to append/insertcontent into existing documents and so we will have to recognizenot to add this PI again, etc.</arg></args></selfDoc><def><![CDATA[function(object, file = NULL, ..., header='<!DOCTYPE Rhelp system "Rhelp.dtd">\n\n<Rhelp>',footer="</Rhelp>"){local <- list(...)name <- substitute(object)# Taken from prompt.defaultis.missing.arg <- function(arg) typeof(arg) == "symbol" &&deparse(arg) == ""if (is.language(name) && !is.name(name))name <- eval(name)name <- as.character(name)fn <- get(name)xml <- xmlWriteBuffer()if(!is.null(header))xml$add(header)xml$addTag("sname",name)xml$addTag("alias",name)xml$addTag("title"," ~~function to do ... ~~ ")xml$addTag("description","~~ A concise (1-5 lines) description of what the function does. ~~")xml$addTag("usage", close=F)# Now handle arguments and generate the call.s <- seq(length = n <- length(argls <- formals(fn)))if (n > 0) {arg.names <- names(argls)}xml$addTag("sname", name,sep="")for (i in s) {xml$addTag("arg", xml$tagString("argName", arg.names[i]), close=F)if(!is.missing.arg(argls[[i]])) {xml$addTag("defaultValue", deparse(argls[[i]]),sep="")}xml$closeTag("arg")if(i < n)xml$addTag("next")}xml$add("</usage>")xml$addTag("arguments", close=F)for(i in arg.names) {xml$addTag("argument", xml$tagString("argDescriptionName", i), "\n<argDescription>","~~Describe ",i," here~~", "</argDescription>")}xml$add("</arguments>")xml$addTag("details"," ~~ If necessary, more details than the __description__ above ~~")xml$addTag("value", "~Describe the value returned"," If it is a LIST, use", " \\item{comp1 }{Description of `comp1'}"," \\item{comp2 }{Description of `comp2'}", " ...")xml$addTag("references", ifelse(!is.null(local$references), local$references, ""))xml$addTag("author", ifelse(!is.null(local$author), local$author, ""))xml$addTag("note")xml$addTag("seeAlso", xml$tagString("a", attrs=list("href"="\"\"")))xml$addTag("examples", xml$tagString("example"))xml$addTag("keywords", xml$tagString("keyword"))if(!is.null(footer))xml$add(footer)val <- xml$value()if(!missing(file))cat(val, file=file)val}]]></def><examples><example><description></description><code># Always start with the perverse one!xmlPrompt(xmlPrompt)</code></example></examples></function><function><sname>xmlWriteBuffer</sname><selfDoc><description>Want to check with the DTD whether a tag is legitimateattributes are valid, etc.Add an indentation level.Need to escape characters via entities:<![CDATA[<- => %sgets;< => %lt;> => %gt;]]>etc.</description></selfDoc><def><![CDATA[function(dtd = NULL){paste0 <- function(...) paste(..., sep = "")buf <- "<?xml version=\"1.0\"?>"add <- function(..., sep="\n") {buf <<- paste(buf, paste0(...), sep=sep)}tagString <- function(tag, ..., attrs, close=F) {tmp <- ""if(!missing(attrs)) {tmp <- paste(" ", paste(names(attrs), attrs,sep="=", collapse=" "),sep="")}return(paste0("<", tag,tmp, ">",...,"</",tag,">"))}addTag <- function(tag, ..., attrs=NULL, sep="\n", close=T) {tmp <- ""if(!missing(attrs)) {tmp <- paste(" ", paste(names(attrs), attrs,sep="=", collapse=" "),sep="")}add(paste("<",tag, tmp, ">", sep=""))if(length(list(...)) > 0) {add(..., sep=sep)}if(close) {add(paste("</",tag, ">", sep=""), sep="")}NULL}closeTag <- function(name) {add("\n", "</",name,">", sep="")}list( value=function() {buf},add = add,addTag = addTag,closeTag = closeTag,tagString = tagString)}]]></def><examples><example><description></description><code></code></example></examples></function></SSource>