|
Scala example source code file (IndexScript.scala)
The Scala IndexScript.scala source codepackage 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)) }) : _*) } } Other Scala examples (source code examples)Here is a short list of links related to this Scala IndexScript.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.