diff options
author | Kato Kazuyoshi <kato.kazuyoshi@gmail.com> | 2011-06-20 14:20:45 +0000 |
---|---|---|
committer | Kato Kazuyoshi <kato.kazuyoshi@gmail.com> | 2011-06-20 14:20:45 +0000 |
commit | 2627ab313f0d9f33e1b97e8aeda4447cf34bd27d (patch) | |
tree | b119264c47c6c990395ba3610209905aaf270b51 /src/compiler/scala/tools/nsc/doc/html/page | |
parent | d2fd3d61d1cceb79c731a4be46977384c7cb7c9b (diff) | |
download | scala-2627ab313f0d9f33e1b97e8aeda4447cf34bd27d.tar.gz scala-2627ab313f0d9f33e1b97e8aeda4447cf34bd27d.tar.bz2 scala-2627ab313f0d9f33e1b97e8aeda4447cf34bd27d.zip |
Separete index.js to parallelize downloads.
Diffstat (limited to 'src/compiler/scala/tools/nsc/doc/html/page')
-rw-r--r-- | src/compiler/scala/tools/nsc/doc/html/page/Index.scala | 70 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/doc/html/page/IndexScript.scala | 68 |
2 files changed, 69 insertions, 69 deletions
diff --git a/src/compiler/scala/tools/nsc/doc/html/page/Index.scala b/src/compiler/scala/tools/nsc/doc/html/page/Index.scala index 4fc10b2ec2..7203230084 100644 --- a/src/compiler/scala/tools/nsc/doc/html/page/Index.scala +++ b/src/compiler/scala/tools/nsc/doc/html/page/Index.scala @@ -48,23 +48,7 @@ class Index(universe: doc.Universe, index: doc.Index) extends HtmlPage { </div> </body> - - def isExcluded(dtpl: DocTemplateEntity) = { - val qname = dtpl.qualifiedName - ( ( qname.startsWith("scala.Tuple") || qname.startsWith("scala.Product") || - qname.startsWith("scala.Function") || qname.startsWith("scala.runtime.AbstractFunction") - ) && !( - qname == "scala.Tuple1" || qname == "scala.Tuple2" || - qname == "scala.Product" || qname == "scala.Product1" || qname == "scala.Product2" || - qname == "scala.Function" || qname == "scala.Function1" || qname == "scala.Function2" || - qname == "scala.runtime.AbstractFunction0" || qname == "scala.runtime.AbstractFunction1" || - qname == "scala.runtime.AbstractFunction2" - ) - ) - } - def browser = - <xml:group> <div id="browser" class="ui-layout-west"> <div class="ui-west-center"> <div id="filter"></div> @@ -121,60 +105,8 @@ class Index(universe: doc.Universe, index: doc.Index) extends HtmlPage { </xml:group> } packageElem(universe.rootPackage) - }</div></div>{ scriptElement } + }</div></div><script src="index.js"></script> </div> - </xml:group> - - def mergeByQualifiedName(source: List[DocTemplateEntity]): Map[String, List[DocTemplateEntity]]= { - var result = Map[String, List[DocTemplateEntity]]() - - for (t <- source) { - val k = t.qualifiedName - result += k -> (result.getOrElse(k, List()) :+ t) - } - - result - } - - def scriptElement = { - val packages = allPackagesWithTemplates.toIterable.map(_ match { - case (pack, templates) => { - val merged = mergeByQualifiedName(templates) - - val ary = merged.keys.toList.sortBy(_.toLowerCase).map(key => { - val pairs = merged(key).map( - t => docEntityKindToString(t) -> relativeLinkTo(t) - ) :+ ("name" -> key) - - JSONObject(scala.collection.immutable.Map(pairs : _*)) - }) - - pack.qualifiedName -> JSONArray(ary) - } - }).toSeq - - val obj = - JSONObject(scala.collection.immutable.Map(packages : _*)).toString() - - <script type="text/javascript"> - Index.PACKAGES = {scala.xml.Unparsed(obj)}; - </script> - } - - def allPackagesWithTemplates: Map[Package, List[DocTemplateEntity]] = { - Map(allPackages.map((key) => { - key -> key.templates.filter(t => !t.isPackage && !isExcluded(t)) - }) : _*) - } - - def allPackages: List[Package] = { - def f(parent: Package): List[Package] = { - parent.packages.flatMap( - p => f(p) :+ p - ) - } - f(universe.rootPackage).sortBy(_.toString) - } def packageQualifiedName(ety: DocTemplateEntity): String = if (ety.inTemplate.isPackage) ety.name else (packageQualifiedName(ety.inTemplate) + "." + ety.name) diff --git a/src/compiler/scala/tools/nsc/doc/html/page/IndexScript.scala b/src/compiler/scala/tools/nsc/doc/html/page/IndexScript.scala new file mode 100644 index 0000000000..2cafe6caa3 --- /dev/null +++ b/src/compiler/scala/tools/nsc/doc/html/page/IndexScript.scala @@ -0,0 +1,68 @@ +package scala.tools.nsc.doc.html.page +import scala.tools.nsc.doc +import scala.tools.nsc.doc.model.{Package, DocTemplateEntity} +import scala.tools.nsc.doc.html.{Page, HtmlFactory} +import java.nio.channels.Channels +import scala.util.parsing.json.{JSONObject, JSONArray} + +class IndexScript(universe: doc.Universe, index: doc.Index) extends Page { + def path = List("index.js") + + override def writeFor(site: HtmlFactory): Unit = { + val stream = createFileOutputStream(site) + val writer = Channels.newWriter(stream.getChannel, site.encoding) + try { + writer.write("Index.PACKAGES = " + packages.toString() + ";") + } + finally { + writer.close + stream.close + } + } + + val packages = { + val pairs = allPackagesWithTemplates.toIterable.map(_ match { + case (pack, templates) => { + val merged = mergeByQualifiedName(templates) + + val ary = merged.keys.toList.sortBy(_.toLowerCase).map(key => { + val pairs = merged(key).map( + t => docEntityKindToString(t) -> relativeLinkTo(t) + ) :+ ("name" -> key) + + JSONObject(scala.collection.immutable.Map(pairs : _*)) + }) + + pack.qualifiedName -> JSONArray(ary) + } + }).toSeq + + JSONObject(scala.collection.immutable.Map(pairs : _*)) + } + + def mergeByQualifiedName(source: List[DocTemplateEntity]) = { + var result = Map[String, List[DocTemplateEntity]]() + + for (t <- source) { + val k = t.qualifiedName + result += k -> (result.getOrElse(k, List()) :+ t) + } + + result + } + + def allPackages = { + def f(parent: Package): List[Package] = { + parent.packages.flatMap( + p => f(p) :+ p + ) + } + f(universe.rootPackage).sortBy(_.toString) + } + + def allPackagesWithTemplates = { + Map(allPackages.map((key) => { + key -> key.templates.filter(t => !t.isPackage && !isExcluded(t)) + }) : _*) + } +} |