@ function LaTeX2HTML(sLaTeX : value) { local myHTMLDoc; insert myHTMLDoc.sParsingMode = "description"; createVirtualFile(".#f1", sLaTeX); createVirtualFile(".#f2", ""); try { translate("LaTeX2HTML.cwp", myHTMLDoc, ".#f1", ".#f2"); } catch(sError) { traceLine("error in the description:"); traceLine(theVersion.description); error(sError); } local sResult = loadVirtualFile(".#f2"); deleteVirtualFile(".#f2"); deleteVirtualFile(".#f1"); return sResult; } function HTMLAnchor(sLabel) { set sLabel = replaceString("#", "_", sLabel); set sLabel = replaceString("&", "_", sLabel); set sLabel = replaceString(";", "_", sLabel); set sLabel = replaceString(" ", "_", sLabel); set sLabel = replaceString("%", "_", sLabel); set sLabel = replaceString("@", "_", sLabel); set sLabel = replaceString("=", "_", sLabel); set sLabel = replaceString("<", "_", sLabel); set sLabel = replaceString(">", "_", sLabel); set sLabel = replaceString("\"", "_", sLabel); set sLabel = replaceString("'", "_", sLabel); set sLabel = replaceString("/", "_", sLabel); set sLabel = replaceString("-", "_", sLabel); set sLabel = replaceString("+", "_", sLabel); set sLabel = replaceString(".", "_", sLabel); return sLabel; } function fileHTMLDocumentation(sFilename : value) { local myFile; insert myFile.parseAll = true; parseAsBNF("fileDescription.cwp", myFile, sFilename); if myFile.description { @@LaTeX2HTML(myFile.description)@@ } if existVariable(myFile.input) { @

Input files: @ foreach i in myFile.input { if !first(i) { @, @ } @@i@"@ } @. @ } if existVariable(myFile.file) { @

quoted files: @ foreach i in myFile.file { if !first(i) { @, @ } @@i@@ } @. @ } if existVariable(myFile.output) { @

output files: @ foreach i in myFile.output { if !first(i) { @, @ } @@i@@ } @. @ } local bPrecedentWasCode; foreach i in myFile.content { if i.type == "section" { if bPrecedentWasCode { set bPrecedentWasCode = false; @ @ } @

@LaTeX2HTML(i.title)@

@LaTeX2HTML(i.description)@ @ } else if i.type == "paragraph" { if bPrecedentWasCode { set bPrecedentWasCode = false; @ @ } @

@LaTeX2HTML(i.description)@ @ } else { if !bPrecedentWasCode { set bPrecedentWasCode = true; @

@ } else { @
@ } local iIndex = 0; while (iIndex < i.description.length()) && (i.description.charAt(iIndex) == '\t') increment(iIndex); local sText = i.description.composeHTMLLikeString(); if $iIndex > 0$ { set sText = repeatString("    ", iIndex) + sText.subString(iIndex); } @@sText@@ } } if bPrecedentWasCode { @
@ } } if !getProperty("FILE") error("property 'FILE' should be populated with the file to document!"); local sFilename = getProperty("FILE"); local sRelativeFile = sFilename; local iIndex = sRelativeFile.findLastString('/'); if isPositive(iIndex) set sRelativeFile = sRelativeFile.subString($iIndex + 1$); set iIndex = sRelativeFile.findLastString('\\'); if isPositive(iIndex) set sRelativeFile = sRelativeFile.subString($iIndex + 1$); @ @sRelativeFile@

@sRelativeFile@

@ fileHTMLDocumentation(sFilename); @