diff options
author | Vlad Ureche <vlad.ureche@gmail.com> | 2012-06-16 18:47:40 +0200 |
---|---|---|
committer | Vlad Ureche <vlad.ureche@gmail.com> | 2012-07-02 13:34:15 +0200 |
commit | 44ec110bf059a089f54c06469ff2a54275d0f05f (patch) | |
tree | 61d4c0d455ca3001262d887f059274d3439373f2 /src/compiler/scala/tools/nsc/doc/html/Page.scala | |
parent | b0d70beb50e9d7946166f0218cf42bc1d9850754 (diff) | |
download | scala-44ec110bf059a089f54c06469ff2a54275d0f05f.tar.gz scala-44ec110bf059a089f54c06469ff2a54275d0f05f.tar.bz2 scala-44ec110bf059a089f54c06469ff2a54275d0f05f.zip |
Scaladoc diff-firendly output
Scaladoc can create raw content files that we can easily diff and spot
any modifications. There is a cool project by Stefan Zeiger to export
the scaladoc model in JSON, but with the language and scaladoc being so
quick to evolve, it'll be a pain to properly maintain. In the long-run,
the plan is to sample a couple of raw files on each build and email me
the diff. If I spot anything that may be wrong I can fix it, revert the
commit or at least file a bug.
For now, .html.raw files are generated on-demand, using
ant -Dscaladoc.raw.output="yes" <targets>
Also added a script that will do the job of diff-ing.
Review by @jsuereth.
Conflicts:
src/compiler/scala/tools/nsc/doc/Settings.scala
Diffstat (limited to 'src/compiler/scala/tools/nsc/doc/html/Page.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/doc/html/Page.scala | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/doc/html/Page.scala b/src/compiler/scala/tools/nsc/doc/html/Page.scala index c5bf3e0e37..72b62dd482 100644 --- a/src/compiler/scala/tools/nsc/doc/html/Page.scala +++ b/src/compiler/scala/tools/nsc/doc/html/Page.scala @@ -8,6 +8,8 @@ package scala.tools.nsc.doc.html import scala.tools.nsc.doc.model._ import java.io.{FileOutputStream, File} import scala.reflect.NameTransformer +import java.nio.channels.Channels +import java.io.Writer abstract class Page { thisPage => @@ -20,8 +22,8 @@ abstract class Page { def absoluteLinkTo(path: List[String]) = path.reverse.mkString("/") - def createFileOutputStream(site: HtmlFactory) = { - val file = new File(site.siteRoot, absoluteLinkTo(thisPage.path)) + def createFileOutputStream(site: HtmlFactory, suffix: String = "") = { + val file = new File(site.siteRoot, absoluteLinkTo(thisPage.path) + suffix) val folder = file.getParentFile if (! folder.exists) { folder.mkdirs @@ -29,6 +31,18 @@ abstract class Page { new FileOutputStream(file.getPath) } + def writeFile(site: HtmlFactory, suffix: String = "")(fn: Writer => Unit) = { + val fos = createFileOutputStream(site, suffix) + val w = Channels.newWriter(fos.getChannel, site.encoding) + try { + fn(w) + } + finally { + w.close() + fos.close() + } + } + /** Writes this page as a file. The file's location is relative to the * generator's site root, and the encoding is also defined by the generator. * @param generator The generator that is writing this page. */ |