scala.tools.nsc.doc.html.page.Source.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scala-compiler Show documentation
Show all versions of scala-compiler Show documentation
Compiler for the Scala Programming Language
/* NSC -- new Scala compiler
* Copyright 2007-2013 LAMP/EPFL
* @author David Bernard, Manohar Jonnalagedda
*/
package scala.tools.nsc
package doc
package html
package page
import model._
import scala.xml.{NodeSeq, Unparsed}
import java.io.File
class Source(sourceFile: File) extends HtmlPage {
val path = List("source.html")
val title = "Scaladoc: page source"
val headers =
NodeSeq.Empty
val body =
Page source is not implemented yet
/*
def readTextFromSrcDir(subPath: String) :Option[String] = {
readTextFromFile(new File(sourceDir, subPath))
}
def readTextFromFile(f : File) :Option[String] = {
if (f.exists) {
Some(Source.fromFile(f)(Codec.default).getLines().mkString(""))
} else {
None
}
}
def writeTextToFile(f : File, txt : String, header: Option[String], footer: Option[String]) {
val out = new FileOutputStream(f)
try {
val enc = "UTF-8"
header.foreach(s => out.write(s.getBytes(enc)))
out.write(txt.getBytes(enc))
footer.foreach(s => out.write(s.getBytes(enc)))
} finally {
try {
out.close()
} catch {
case _ => //ignore
}
}
}
trait SourceHtmlizer {
def scalaToHtml(src :File) : Option[File]
}
lazy val sourceHtmlizer : SourceHtmlizer = {
if (cfg.htmlizeSource) {
new SourceHtmlizer {
val inDir: File = cfg.sourcedir
val outDir: File = cfg.outputdir
private def relativize(uri: URI, from: URI) = linkHelper.relativize(uri, from).getOrElse("__notFound__" + uri.getPath)
def header(dest: URI) = Some("""
""")
def footer(dest: URI) = Some("""
""")
//TODO: escape the source code
def scalaToHtml(src :File) = {
val dest = new File(outDir, fileHelper.relativePathUnderDir(src, inDir) + ".html")
if (!dest.exists || dest.lastModified < src.lastModified) {
//we need to verify whether the directory we are trying to write to has already been created or not
if(!dest.getParentFile.exists) dest.getParentFile.mkdirs
val uri = linkHelper.uriFor(dest).get
var txt = fileHelper.readTextFromFile(src).getOrElse("")
txt = txt.replace("<", "<")
fileHelper.writeTextToFile(dest, txt, header(uri), footer(uri))
}
Some(dest)
}
def copyResources() {
val loader = this.getClass().getClassLoader()
val buf = new Array[Byte](1024)
def copyResource(name: String) = fileHelper.copyResource("/scala/tools/nsc/doc/html/resource/", name, outDir, loader, buf)
copyResource("_highlighter/clipboard.swf")
copyResource("_highlighter/shAll.js")
copyResource("_highlighter/SyntaxHighlighter.css")
}
copyResources()
}
} else {
new SourceHtmlizer {
def scalaToHtml(src :File) = None
}
}
}
*/
}