From d00a2e25a9ee527fa39feb04c3137715501e9fda Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Sun, 2 Nov 2014 00:30:33 -0700 Subject: Moved things into folders, sketched out a broad skeleton of the rest of the book --- .../src/main/scala/scalatex/ScalaTexPlugin.scala | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala') diff --git a/scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala b/scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala index 4808661..910639f 100755 --- a/scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala +++ b/scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala @@ -1,5 +1,7 @@ package scalatex +import java.nio.file.Paths + import scala.reflect.internal.util.BatchSourceFile import scala.reflect.io.VirtualFile import scala.tools.nsc.{ Global, Phase } @@ -19,10 +21,15 @@ class ScalaTexPlugin(val global: Global) extends Plugin { override val runsBefore = List("namer") val phaseName = "Demo" - + val scalatexRoot = "book/src/main/scalatex" override def newPhase(prev: Phase) = new GlobalPhase(prev) { override def run() = { - for (file <- new java.io.File("book/src/main/scalatex/book").listFiles()) { + def recursiveListFiles(f: java.io.File): Array[java.io.File] = { + val these = f.listFiles + val (dirs, files) = f.listFiles().partition(_.isDirectory) + files ++ dirs.flatMap(recursiveListFiles) + } + for (file <- recursiveListFiles(new java.io.File(scalatexRoot))) { val txt = io.Source.fromFile(file).mkString val fakeJfile = new java.io.File(file.getName) val virtualFile = new VirtualFile(file.getName) { @@ -32,8 +39,16 @@ class ScalaTexPlugin(val global: Global) extends Plugin { val unit = new CompilationUnit(sourceFile) val name = file.getName val objectName = name.slice(name.lastIndexOf('/'), name.lastIndexOf('.')) + val pkgName = + Paths.get(scalatexRoot) + .relativize(file.getParentFile.toPath) + .toString + .split("/") + .map(s => s"package $s") + .mkString("\n") + val shim = s""" - package book + $pkgName import Book._ import Utils.sect import scalatags.Text.all._ -- cgit v1.2.3