diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-01 00:56:30 -0700 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-01 00:56:30 -0700 |
commit | aae594fd3c8397abca4cd4e55f538d41b172b4e3 (patch) | |
tree | cef34e2404599a8547d864f3d5c158b5297783f0 /scalatexPlugin/src | |
parent | 3d73267c4b3ecf3cdca54ded8dfd8a2caeeb3ca9 (diff) | |
download | hands-on-scala-js-aae594fd3c8397abca4cd4e55f538d41b172b4e3.tar.gz hands-on-scala-js-aae594fd3c8397abca4cd4e55f538d41b172b4e3.tar.bz2 hands-on-scala-js-aae594fd3c8397abca4cd4e55f538d41b172b4e3.zip |
added everything
Diffstat (limited to 'scalatexPlugin/src')
-rwxr-xr-x | scalatexPlugin/src/main/resources/scalac-plugin.xml | 4 | ||||
-rwxr-xr-x | scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala | 54 |
2 files changed, 58 insertions, 0 deletions
diff --git a/scalatexPlugin/src/main/resources/scalac-plugin.xml b/scalatexPlugin/src/main/resources/scalac-plugin.xml new file mode 100755 index 0000000..d4062fa --- /dev/null +++ b/scalatexPlugin/src/main/resources/scalac-plugin.xml @@ -0,0 +1,4 @@ +<plugin> + <name>demo-plugin</name> + <classname>scalatex.ScalaTexPlugin</classname> +</plugin>
\ No newline at end of file diff --git a/scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala b/scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala new file mode 100755 index 0000000..4808661 --- /dev/null +++ b/scalatexPlugin/src/main/scala/scalatex/ScalaTexPlugin.scala @@ -0,0 +1,54 @@ +package scalatex + +import scala.reflect.internal.util.BatchSourceFile +import scala.reflect.io.VirtualFile +import scala.tools.nsc.{ Global, Phase } +import scala.tools.nsc.plugins.{ Plugin, PluginComponent } + +class ScalaTexPlugin(val global: Global) extends Plugin { + import global._ + println(options) + val name = "scalatex-plugin" + val description = "Enforces coding standards" + val components = List[PluginComponent](DemoComponent) + private object DemoComponent extends PluginComponent { + val global = ScalaTexPlugin.this.global + import global._ + + override val runsAfter = List("parser") + override val runsBefore = List("namer") + + val phaseName = "Demo" + + override def newPhase(prev: Phase) = new GlobalPhase(prev) { + override def run() = { + for (file <- new java.io.File("book/src/main/scalatex/book").listFiles()) { + val txt = io.Source.fromFile(file).mkString + val fakeJfile = new java.io.File(file.getName) + val virtualFile = new VirtualFile(file.getName) { + override def file = fakeJfile + } + val sourceFile = new BatchSourceFile(virtualFile, txt) + val unit = new CompilationUnit(sourceFile) + val name = file.getName + val objectName = name.slice(name.lastIndexOf('/'), name.lastIndexOf('.')) + val shim = s""" + package book + import Book._ + import Utils.sect + import scalatags.Text.all._ + object $objectName{ + val template = scalatex.twf("${file.getPath}") + } + """ + unit.body = global.newUnitParser(shim).parse() + global.currentRun.compileLate(unit) + } + } + + def name: String = phaseName + + def apply(unit: global.CompilationUnit): Unit = {} + } + } +} |