diff options
Diffstat (limited to 'docs/man/src/man/EmitHtml.scala')
-rw-r--r-- | docs/man/src/man/EmitHtml.scala | 349 |
1 files changed, 0 insertions, 349 deletions
diff --git a/docs/man/src/man/EmitHtml.scala b/docs/man/src/man/EmitHtml.scala deleted file mode 100644 index e6d773c185..0000000000 --- a/docs/man/src/man/EmitHtml.scala +++ /dev/null @@ -1,349 +0,0 @@ -/* NSC -- new Scala compiler - * Copyright 2005-2006 LAMP/EPFL - * @author Stephane Micheloud - * Adapted from Lex Spoon's sbaz manual - */ -//$Id$ - -package man - -object EmitHtml { - import scala.xml.{Node, NodeBuffer, NodeSeq, XML} - import ManPage._ - - val out = Console - - def escape(text: String) = - text.replaceAll("&", "&") - .replaceAll("<", "<") - .replaceAll(">", ">") - -/* */ - def emitSection(section: Section, depth: int): Unit = { - def emitText(text: AbstractText): Unit = - text match { - case seq:SeqText => - seq.components.foreach(emitText) - - case Text(text) => - out.print(escape(text)) - - case MDash => - out.print("—") - - case NDash => - out.print("–") - - case Bold(text) => - out.print("<b>") - emitText(text) - out.print("</b>") - - case Italic(text) => - out.print("<i>") - emitText(text) - out.print("</i>") - - case Emph(text) => - out.print("<em>") - emitText(text) - out.print("</em>") - - case Mono(text) => - out.print("<code>") - emitText(text) - out.print("</code>") - - case Quote(text) => - out.print("\"") - emitText(text) - out.print("\"") - - case DefinitionList(definitions @ _*) => - out.println("<ins><dl>") - for (val d <- definitions) { - out.println("<dt>") - emitText(d.term) - out.println("\n</dt>") - out.println("<dd>") - emitText(d.description) - out.println("</dd>") - } - out.println("</dl></ins>") - - case Link(label, url) => - out.print("<a href=\"" + url + "\">") - emitText(label) - out.print("</a>") - - case _ => - error("unknown text node " + text) - } - - def emitParagraph(para: Paragraph): Unit = - para match { - case TextParagraph(text) => - out.println("<p>") - emitText(text) - out.println("</p>") - - case BlockQuote(text) => - out.println("<blockquote><p>") - emitText(text) - out.println("</p></blockquote>") - - case CodeSample(text) => - out.print("<pre>") - out.print(escape(text)) - out.println("</pre>") - - case lst:BulletList => - out.println("<ul>") - for (val item <- lst.items) { - out.print("<li>") - emitText(item) - out.println("</li>") - } - out.println("</ul>") - - case lst:NumberedList => - out.println("<ol>") - for(val item <- lst.items) { - out.print("<li>") - emitText(item) - } - out.println("</ol>") - - case TitledPara(title, text) => - out.println("<p><strong>" + escape(title) + "</strong></p>") - emitText(text) - - case EmbeddedSection(sect) => - emitSection(sect, depth + 1) - - case _ => - error("unknown paragraph node " + para) - } - - val name = section.title.replaceAll("\\p{Space}", "_").toLowerCase() - out.println("\n<h" + depth + " id=\"" + name + "\">" + - section.title + - "</h" + depth + ">") - section.paragraphs.foreach(emitParagraph) - } - - private def emit3columns(col1: String, col2: String, col3: String) = { - out.println("<div style=\"float:left;\">") - out.println(col1) - out.println("</div>") - out.println("<div style=\"float:right;\">") - out.println(col3) - out.println("</div>") - out.println("<div style=\"text-align:center;\">") - out.println(col2) - out.println("</div>") - } - - private def emitHeader(col1: String, col2: String, col3: String) = { - out.println("<!-- header -->") - out.println("<div style=\"margin: 0 0 2em 0;\">") - emit3columns(col1, col2, col3) - out.println("</div>") - } - - private def emitFooter(col1: String, col2: String, col3: String) = { - out.println("<!-- footer -->") - out.println("<div style=\"margin: 2em 0 0 0;\">") - emit3columns(col1, col2, col3) - out.println("</div>") - } - - def emitDocument(document: Document, addDocType: Boolean) = { - if (addDocType) { - out.println("<?xml version=\"1.1\" encoding=\"" + document.encoding + "\"?>") - out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">") - } - out.println("<html xml:lang=\"en\">") - - out.println("<head>") - out.println("<title>" + document.title + " man page</title>") - out.println("<meta http-equiv=\"Content-Language\" content=\"en\"/>") - out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + - document.encoding + "\"/>") - out.println("<meta name=\"Author\" content=\"" + document.author + "\"/>") - out.println("<style type=\"text/css\">") - out.println(" <!--") - out.println(" blockquote, pre { margin:1em 4em 1em 4em; }") - out.println(" p { margin:0 2em 0 2em; text-align:justify; }") - out.println(" //-->") - out.println("</style>") - out.println("</head>") - - out.println("<body>") - val name = document.title + "(" + document.category.id + ")" - emitHeader(name, "" + document.category, name) - - document.sections.foreach(s => emitSection(s, 3)) - - emitFooter("version " + document.version, document.date, name) - - out.println("</body>") - out.println("</html>") - } -/* */ -/* - private def group(ns: Iterable[NodeSeq]): NodeSeq = { - val zs = new NodeBuffer - for (val z <- ns) { zs &+ z } - zs - } - - def emitSection(section: Section, depth: int): NodeSeq = { - def emitText(text: AbstractText): NodeSeq = text match { - case seq:SeqText => - group(seq.components.toList.map(item => emitText(item))) - - case Text(text) => - scala.xml.Text(escape(text)) - - case MDash => - scala.xml.Text("—") - - case NDash => - scala.xml.Text("–") - - case Bold(text) => - <b>{emitText(text)}</b> - - case Italic(text) => - <i>{emitText(text)}</i> - - case Emph(text) => - <em>{emitText(text)}</em> - - case Mono(text) => - <code>{emitText(text)}</code> - - case Quote(text) => - emitText("\"" & text & "\"") - - case DefinitionList(definitions @ _*) => - <ins><dl> - {definitions.toList.map(d => - <dt>{emitText(d.term)}</dt> - <dd>{emitText(d.description)}</dd> - )} - </dl></ins> - - case Link(label, url) => - <a href={url}>{emitText(label)}</a> - - case _ => - error("unknown text node " + text) - } - - def emitParagraph(para: Paragraph): NodeSeq = para match { - case TextParagraph(text) => - <p>{emitText(text)}</p> - - case BlockQuote(text) => - <blockquote>{emitText(text)}</blockquote> - - case CodeSample(text) => - <blockquote><pre>{escape(text)}</pre></blockquote> - - case lst:BulletList => - <ul> - {lst.items.toList.map(item => <li>{emitText(item)}</li>)} - </ul> - - case lst:NumberedList => - <ol> - {lst.items.toList.map(item => <li>{emitText(item)}</li>)} - </ol> - - case TitledPara(title, text) => - <p><strong>{escape(title)}</strong></p> - {emitText(text)} - - case EmbeddedSection(sect) => - {emitSection(sect, depth + 1)} - - case _ => - error("unknown paragraph node " + para) - } - - val name = section.title.replaceAll("\\p{Space}", "_").toLowerCase() - <h3 id={name}>{section.title}</h3>.concat( - group(section.paragraphs.toList.map(p => emitParagraph(p)))) - } - - private def emit3columns(col1: String, col2: String, col3: String): NodeSeq = - <div style="float:left;">{col1}</div> - <div style="float:right;">{col3}</div> - <div style="text-align:center;">{col2}</div> - <div style="clear:both;"></div> - - private def emitHeader(col1: String, col2: String, col3: String): NodeSeq = - <div style="margin: 0 0 2em 0;"> - {emit3columns(col1, col2, col3)} - </div> - - private def emitFooter(col1: String, col2: String, col3: String): NodeSeq = { - scala.xml.Comment("footer") - <div style="margin: 2em 0 0 0;"> - {emit3columns(col1, col2, col3)} - </div> - } - - def emitDocument(document: Document, addDocType: Boolean) = { - val name = document.title + "(" + document.category.id + ")" - val doc = - <html xml:lang="en"> - <head> - <title>{document.title}</title> - <meta http-equiv="Content-Language" content="en"/> - <meta http-equiv="Content-Type" content={"text/html; charset=" + document.encoding}/> - <meta name="Author" content={document.author}/> - <style type="text/css"> - {" blockquote, pre { margin:1em 4em 1em 4em; }\n" + - " p { margin:1em 2em 1em 2em; text-align:justify; }\n"} - </style> - </head> - <body> - {emitHeader(name, "" + document.category, name)} - {document.sections.map(s => emitSection(s, 2))} - {emitFooter("version " + document.version, document.date, name)} - </body> - </html> - out.println(doc) -/* - val w = new java.io.StringWriter - val id = scala.xml.dtd.PublicID("PUBLIC", null) - val dtd = null //scala.xml.dtd.DEFAULT(true, "") - val doctype = scala.xml.dtd.DocType("html", id, null) //List(dtd)) - XML.write(w, doc, document.encoding, true/ *xmlDecl* /, doctype) - out.println(w.toString()) -*/ - } -*/ - def main(args: Array[String]) = { - if (args.length < 1) { - System.err.println("usage: EmitHtml <classname> [ -short ]") - exit(1) - } - try { - val cl = ClassLoader.getSystemClassLoader() - val clasz = cl.loadClass("man.man1." + args(0)) - val meth = clasz.getDeclaredMethod("manpage", Array[Class]()) - val doc = meth.invoke(null, Array[Object]()).asInstanceOf[Document] - val addDocType = (args.length > 1 && "-doctype".equals(args(1))) - emitDocument(doc, addDocType) - } catch { - case ex: Exception => - ex.printStackTrace() - System.err.println("Error in EmitHtml") - exit(1) - } - } -} |