summaryrefslogtreecommitdiff
path: root/src/manual/scala/tools
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2006-06-12 14:18:13 +0000
committermichelou <michelou@epfl.ch>2006-06-12 14:18:13 +0000
commit1c43cfe216a0d759568a964a16345ea773f32211 (patch)
treecc9c93e37b6817c14e1334d910b9012e408c85b8 /src/manual/scala/tools
parentde843e4a74769be951e28d7f744dc812e3eed83e (diff)
downloadscala-1c43cfe216a0d759568a964a16345ea773f32211.tar.gz
scala-1c43cfe216a0d759568a964a16345ea773f32211.tar.bz2
scala-1c43cfe216a0d759568a964a16345ea773f32211.zip
moved docs/man/src to src/manual and updated bu...
moved docs/man/src to src/manual and updated build.xml
Diffstat (limited to 'src/manual/scala/tools')
-rw-r--r--src/manual/scala/tools/docutil/EmitHtml.scala349
-rw-r--r--src/manual/scala/tools/docutil/EmitManPage.scala165
-rw-r--r--src/manual/scala/tools/docutil/ManPage.scala68
-rw-r--r--src/manual/scala/tools/docutil/resources/css/style.css66
-rw-r--r--src/manual/scala/tools/docutil/resources/images/external.gifbin0 -> 289 bytes
-rw-r--r--src/manual/scala/tools/docutil/resources/images/scala_logo.pngbin0 -> 4751 bytes
-rw-r--r--src/manual/scala/tools/docutil/resources/index.html211
7 files changed, 859 insertions, 0 deletions
diff --git a/src/manual/scala/tools/docutil/EmitHtml.scala b/src/manual/scala/tools/docutil/EmitHtml.scala
new file mode 100644
index 0000000000..a7c10fd24a
--- /dev/null
+++ b/src/manual/scala/tools/docutil/EmitHtml.scala
@@ -0,0 +1,349 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2006 LAMP/EPFL
+ * @author Stephane Micheloud
+ * Adapted from Lex Spoon's sbaz manual
+ */
+//$Id: $
+
+package scala.tools.docutil
+
+object EmitHtml {
+ import scala.xml.{Node, NodeBuffer, NodeSeq, XML}
+ import ManPage._
+
+ val out = Console
+
+ def escape(text: String) =
+ text.replaceAll("&", "&amp;")
+ .replaceAll("<", "&lt;")
+ .replaceAll(">", "&gt;")
+
+/* */
+ 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("&#8212;")
+
+ case NDash =>
+ out.print("&#8211;")
+
+ 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("&#8212;")
+
+ case NDash =>
+ scala.xml.Text("&#8211;")
+
+ 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(args(0))
+ val meth = clasz.getDeclaredMethod("manpage", Predef.Array[Class]())
+ val doc = meth.invoke(null, Predef.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)
+ }
+ }
+}
diff --git a/src/manual/scala/tools/docutil/EmitManPage.scala b/src/manual/scala/tools/docutil/EmitManPage.scala
new file mode 100644
index 0000000000..888a4cac5a
--- /dev/null
+++ b/src/manual/scala/tools/docutil/EmitManPage.scala
@@ -0,0 +1,165 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2006 LAMP/EPFL
+ * @author Stephane Micheloud
+ * Adapted from Lex Spoon's sbaz manual
+ */
+//$Id: $
+
+package scala.tools.docutil
+
+// For help on man pages see:
+// - http://www.linuxfocus.org/English/November2003/article309.shtml
+// - http://www.schweikhardt.net/man_page_howto.html
+
+object EmitManPage {
+ import ManPage._
+
+ val out = Console
+
+ def escape(text: String) =
+ text.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 NDash | MDash =>
+ out.print("\\-")
+
+ case Bold(text) =>
+ out.print("\\fB")
+ emitText(text)
+ out.print("\\fR")
+
+ case Italic(text) =>
+ out.print("\\fI")
+ emitText(text)
+ out.print("\\fR")
+
+ case Emph(text) =>
+ out.print("\\fI")
+ emitText(text)
+ out.print("\\fI")
+
+ case Mono(text) =>
+ out.print("")
+ emitText(text)
+ out.print("")
+
+ case Quote(text) =>
+ out.print("\"")
+ emitText(text)
+ out.print("\"")
+
+ case DefinitionList(definitions @ _*) =>
+ var n = definitions.length
+ for (val d <- definitions) {
+ out.println(".TP")
+ emitText(d.term)
+ out.println
+ emitText(d.description)
+ if (n > 1) { out.println; n = n - 1 }
+ }
+
+ case Link(label, url) =>
+ emitText(label)
+
+ case _ =>
+ error("unknown text node " + text)
+ }
+
+ def emitParagraph(para: Paragraph): Unit =
+ para match {
+ case TextParagraph(text) =>
+ out.println(".PP")
+ emitText(text)
+ out.println
+
+ case BlockQuote(text) =>
+ out.println(".TP")
+ emitText(text)
+ out.println
+
+ case CodeSample(text) =>
+ out.println("\n.nf")
+ out.print(text)
+ out.println("\n.fi")
+
+ case lst:BulletList =>
+ out.println("<ul>")
+ for(val item <- lst.items) {
+ out.print("<li>")
+ emitText(item)
+ }
+ 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>")
+ emitText(text)
+
+ case EmbeddedSection(sect) =>
+ emitSection(sect, depth+1)
+
+ case _ =>
+ error("unknown paragraph node " + para)
+ }
+
+ out.println(".\\\"")
+ out.println(".\\\" ############################## " + section.title + " ###############################")
+ out.println(".\\\"")
+ val tag = if (depth > 1) ".SS" else ".SH"
+ val title =
+ if (section.title.indexOf(" ") > 0) "\"" + section.title + "\""
+ else section.title
+ out.println(tag + " " + title)
+
+ section.paragraphs.foreach(emitParagraph)
+ }
+
+ def emitDocument(doc: Document) = {
+ out.println(".\\\" ##########################################################################")
+ out.println(".\\\" # __ #")
+ out.println(".\\\" # ________ ___ / / ___ Scala 2 On-line Manual Pages #")
+ out.println(".\\\" # / __/ __// _ | / / / _ | (c) 2002-2006, LAMP/EPFL #")
+ out.println(".\\\" # __\\ \\/ /__/ __ |/ /__/ __ | #")
+ out.println(".\\\" # /____/\\___/_/ |_/____/_/ | | http://scala.epfl.ch/ #")
+ out.println(".\\\" # |/ #")
+ out.println(".\\\" ##########################################################################")
+ out.println(".\\\"")
+ out.println(".\\\" Process this file with nroff -man scala.1")
+ out.println(".\\\"")
+ out.println(".TH " + doc.title + " " + doc.category.id +
+ " \"" + doc.date + "\" \"version " + doc.version +
+ "\" \"" + doc.category + "\"")
+
+ doc.sections.foreach(s => emitSection(s, 1))
+ }
+
+ def main(args: Array[String]) =
+ try {
+ val cl = ClassLoader.getSystemClassLoader()
+ val clasz = cl.loadClass(args(0))
+ val meth = clasz.getDeclaredMethod("manpage", Predef.Array[Class]())
+ val doc = meth.invoke(null, Predef.Array[Object]()).asInstanceOf[Document]
+ emitDocument(doc)
+ } catch {
+ case ex: Exception =>
+ ex.printStackTrace()
+ System.err.println("Error in EmitManPage")
+ exit(1)
+ }
+
+}
diff --git a/src/manual/scala/tools/docutil/ManPage.scala b/src/manual/scala/tools/docutil/ManPage.scala
new file mode 100644
index 0000000000..3d23d69064
--- /dev/null
+++ b/src/manual/scala/tools/docutil/ManPage.scala
@@ -0,0 +1,68 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2006 LAMP/EPFL
+ * @author Stephane Micheloud
+ * Adapted from Lex Spoon's sbaz manual
+ */
+//$Id: $
+
+package scala.tools.docutil
+
+object ManPage {
+ abstract class AbstractText {
+ def &(more: AbstractText) = SeqText(this, more)
+ }
+
+ case class SeqText(components: AbstractText*) extends AbstractText
+ case class Text(text: String) extends AbstractText
+ case object MDash extends AbstractText
+ case object NDash extends AbstractText
+ case class Bold(contents: AbstractText) extends AbstractText
+ case class Italic(contents: AbstractText) extends AbstractText
+ case class Emph(contents: AbstractText) extends AbstractText
+ case class Mono(contents: AbstractText) extends AbstractText
+ case class Quote(contents: AbstractText) extends AbstractText
+ implicit def str2text(str: String) = Text(str)
+
+ case class Definition(term: AbstractText, description: AbstractText)
+ case class DefinitionList(definitions: Definition*) extends AbstractText
+ case class Link(label: AbstractText, url: String) extends AbstractText
+
+ case class DefnItem(header: String, text: AbstractText)
+
+ abstract class Paragraph
+ case class TextParagraph(text: AbstractText) extends Paragraph
+ case class CodeSample(text: String) extends Paragraph
+ case class BlockQuote(text: AbstractText) extends Paragraph
+ implicit def text2para(text: AbstractText): Paragraph = TextParagraph(text)
+ implicit def str2para(str: String) = text2para(str2text(str))
+
+ case class BulletList(items: AbstractText*) extends Paragraph
+ case class NumberedList(items: AbstractText*) extends Paragraph
+ case class TitledPara(title: String, text: AbstractText) extends Paragraph
+
+ case class EmbeddedSection(section: Section) extends Paragraph
+ implicit def section2Para(section: Section) = EmbeddedSection(section)
+
+ case class Section(title: String, paragraphs: Paragraph*)
+
+ object Category extends Enumeration {
+ val USER_COMMANDS = Value(1, "USER COMMANDS")
+ val SYSTEM_CALLS = Value(2, "SYSTEM CALLS")
+ val SUBROUTINES = Value(3, "SUBROUTINES")
+ val DEVICES = Value(4, "DEVICES")
+ val FILE_FORMATS = Value(5, "FILE FORMAT DESCRIPTIONS")
+ val GAMES = Value(6, "GAMES")
+ val MISCELLANEOUS = Value(7, "MISCELLANEOUS")
+ }
+
+ abstract class Document {
+ import Category._
+ var title: String = ""
+ var author: String = ""
+ var date: String = ""
+ var version: String = ""
+ var category: Value = USER_COMMANDS
+ var encoding: String = "iso-8859-1"
+ var sections: List[Section] = Nil
+ }
+}
diff --git a/src/manual/scala/tools/docutil/resources/css/style.css b/src/manual/scala/tools/docutil/resources/css/style.css
new file mode 100644
index 0000000000..3072be4012
--- /dev/null
+++ b/src/manual/scala/tools/docutil/resources/css/style.css
@@ -0,0 +1,66 @@
+.SansSerif {
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+.ContentList { font-size: 90%; style: margin-left: 3.4em; }
+
+.Note {
+ margin-left: 4em;
+ margin-right: 4em;
+ font-size: 90%;
+}
+
+/* see http://www.maxdesign.com.au/presentation/external/ */
+a.external span {
+ position: absolute;
+ left: -5000px;
+ width: 4000px;
+}
+
+a.external:link {
+ background: url(../images/external.gif) no-repeat 100% 0;
+ padding: 0px 20px 0px 0px;
+}
+
+a.external:visited {
+ color: purple;
+ background-color: white;
+ background: url(../images/external.gif) no-repeat 100% -100px;
+ padding: 0px 20px 0px 0px;
+}
+
+a.external:hover {
+ color: red;
+ background-color: white;
+ background: url(../images/external.gif) no-repeat 100% -200px;
+ padding: 0px 20px 0px 0px;
+}
+
+h2 { font-family: Arial, Helvetica, sans-serif; }
+
+h3 {
+ margin-left: 1.4em;
+ margin-bottom: .1em;
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+hr {
+ margin: 1em 0 1em 0;
+}
+
+img {
+ border:none;
+}
+
+li {
+ margin-left: 1.7em;
+}
+
+span.tool {
+ font-family: Courier, Sans-Serif;
+ font-weight: bold;
+}
+
+th {
+ white-space: nowrap;
+}
diff --git a/src/manual/scala/tools/docutil/resources/images/external.gif b/src/manual/scala/tools/docutil/resources/images/external.gif
new file mode 100644
index 0000000000..dc962b779d
--- /dev/null
+++ b/src/manual/scala/tools/docutil/resources/images/external.gif
Binary files differ
diff --git a/src/manual/scala/tools/docutil/resources/images/scala_logo.png b/src/manual/scala/tools/docutil/resources/images/scala_logo.png
new file mode 100644
index 0000000000..f89a81c1af
--- /dev/null
+++ b/src/manual/scala/tools/docutil/resources/images/scala_logo.png
Binary files differ
diff --git a/src/manual/scala/tools/docutil/resources/index.html b/src/manual/scala/tools/docutil/resources/index.html
new file mode 100644
index 0000000000..3a728604ca
--- /dev/null
+++ b/src/manual/scala/tools/docutil/resources/index.html
@@ -0,0 +1,211 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xml:lang="en">
+
+<head>
+ <title>Scala Development Tools</title>
+ <meta http-equiv="Content-Script-Type" content="text/javascript"/>
+ <meta http-equiv="Content-Style-Type" content="text/css"/>
+ <meta http-equiv="Content-Language" content="en"/>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+ <meta name="Copyright" content="(C) 2002-2006 LAMP/EPFL"/>
+ <meta name="Language" content="en"/>
+ <meta name="Description" content="The Scala Programming Language"/>
+ <meta name="Author" content="Stephane Micheloud"/>
+ <link rel="stylesheet" type="text/css" media="all" href="./css/style.css"/>
+</head>
+
+<body>
+<div style="float:left; width:20%;">
+ <a href="http://scala.epfl.ch/">
+ <img src="images/scala_logo.png" alt="Scala" width="80" height="55"/></a>
+</div>
+<div style="float:right; width:20%;">
+ &nbsp; <!-- Documentation Contents -->
+</div>
+<div style="text-align:center; margin:1em;">
+ <h2>Scala Tools and Utilities</h2>
+</div>
+<div style="clear:both;"/>
+
+<div style="background-color:#eeeeee; margin:1.6em; padding:0.4em;">
+
+<h3>General</h3>
+
+<ul class="ContentList">
+ <li>
+ <a href="#general"><b class="SansSerif">General Information</b></a>
+ <!--(file structure, classpath, how classes are found, changes)-->
+ (classpath, how classes are found)
+ </li>
+</ul>
+
+<h3>Standard Scala Tools and Utilities</h3>
+
+<ul class="ContentList">
+ <li>
+ <a href="#basic"><b class="SansSerif">Basic Tools</b></a> (<code>sbaz</code>,
+ <code>scala</code>, <code>scalac</code>, <code>scaladoc</code>,
+ <code>scalaint</code>, <code>scalap</code>, <code>scalascript</code>)
+ </li>
+</ul>
+</div>
+
+<p style="font-size: 90%; margin-left: 2em; margin-right: 2em;">
+ <b>NOTE</b> - Some tools have separate reference pages for Windows, Linux and Solaris
+ to accommodate minor differences in configuration and usage -- for example, the character
+ used to specify directory separators may be different.
+</p>
+
+<hr/>
+
+<h2 id="general">
+ General Information
+</h2>
+<p>
+ The following documents contain important information you will need to
+ know to get the most out of the SDK tools.
+</p>
+
+
+<table cellspacing="0" cellpadding="2">
+<!--
+<tr>
+ <td>
+ <b>JDK File Structure</B>
+ </td>
+ <td NOWRAP>
+ [<A href="solaris/jdkfiles.html">Solaris</A>]
+ [<A href="linux/jdkfiles.html">Linux</A>]
+ [<A href="windows/jdkfiles.html">Windows</A>]
+ </td>
+</tr>
+-->
+<tr>
+ <td>
+ <b>Setting the Classpath</B>
+ </td>
+ <td>
+ [<a class="external"
+ href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/classpath.html">Solaris and Linux</a>]
+ [<a class="external"
+ href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/classpath.html">Windows</a>]
+ </td>
+</tr>
+
+<tr>
+ <td>
+ <b>How Classes are Found</B>
+ </td>
+ <td>
+ [<a class="external"
+ href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/findingclasses.html">Solaris, Linux and Windows</a>]
+ </td>
+</tr>
+</table>
+
+<hr>
+<h2 id="basic">
+ Basic Tools
+</h2>
+
+<p>
+ These tools are the foundation of the Scala SDK. They are the tools you
+ use to create and build applications.
+</p>
+
+<table cellspacing="0" cellpadding="2" style="width:100%;">
+ <tr>
+ <th>Tool Name</th>
+ <th>Brief Description</th>
+ <th>Links to Reference Pages</th>
+ </tr>
+ <tr>
+ <td width="13%" valign="top">
+ <span class="tool">sbaz</span>
+ </td>
+ <td width="70%" valign="top">
+ The Scala sharing tool.
+ </td>
+ <td width="17%" valign="top">
+ [<a href="sbaz.html">Solaris, Linux and Windows</a>]
+ </td>
+ </tr>
+ <tr>
+ <td width="13%" valign="top">
+ <span class="tool">scala</span>
+ </td>
+ <td width="70%" valign="top">
+ The launcher for Scala applications.
+ </td>
+ <td width="17%" valign="top">
+ [<a href="scala.html">Solaris, Linux and Windows</a>]
+ </td>
+ </tr>
+ <tr>
+ <td width="13%" valign="top">
+ <span class="tool">scalac</span>
+ </td>
+ <td width="70%" valign="top">
+ The compiler for the Scala programming language.
+ </td>
+ <td width="17%" valign="top">
+ [<a href="scalac.html">Solaris, Linux and Windows</a>]
+ </td>
+ </tr>
+ <tr>
+ <td width="13%" valign="top">
+ <span class="tool">scaladoc</span>
+ </td>
+ <td width="70%" valign="top">
+ The API document generator.
+ </td>
+ <td width="17%" valign="top">
+ [<a href="scaladoc.html">Solaris, Linux and Windows</a>]
+ </td>
+ </tr>
+ <tr>
+ <td width="13%" valign="top">
+ <span class="tool">scalaint</span>
+ </td>
+ <td width="70%" valign="top">
+ The interactive interpreter to the Scala programming language.
+ </td>
+ <td width="17%" valign="top">
+ [<a href="scalaint.html">Solaris, Linux and Windows</a>]
+ </td>
+ </tr>
+ <tr>
+ <td width="13%" valign="top">
+ <span class="tool">scalap</span>
+ </td>
+ <td width="70%" valign="top">
+ The Scala class file decoder.
+ </td>
+ <td width="17%" valign="top">
+ [<a href="scalap.html">Solaris, Linux and Windows</a>]
+ </td>
+ </tr>
+ <tr>
+ <td width="13%" valign="top">
+ <span class="tool">scalascript</span>
+ </td>
+ <td width="70%" valign="top">
+ The Scala scripting tool.
+ </td>
+ <td width="17%" valign="top">
+ [<a href="scalascript.html">Solaris, Linux and Windows</a>]
+ </td>
+ </tr>
+</table>
+
+ <hr/>
+
+ <div style="font-size:x-small;">
+ Copyright (c) 2002-2006 <a href="http://www.epfl.ch/">EPFL</a>,
+ Lausanne, unless specified otherwise.<br/>
+ All rights reserved.
+ </div>
+
+</body>
+</html>