diff options
-rw-r--r-- | scalatexApi/src/main/scala/scalatex/package.scala | 2 | ||||
-rw-r--r-- | scalatexApi/src/main/scala/scalatex/stages/Trim.scala | 15 | ||||
-rw-r--r-- | scalatexApi/src/test/scala/scalatex/ParserTests.scala | 8 |
3 files changed, 15 insertions, 10 deletions
diff --git a/scalatexApi/src/main/scala/scalatex/package.scala b/scalatexApi/src/main/scala/scalatex/package.scala index e2566cf..1f00b72 100644 --- a/scalatexApi/src/main/scala/scalatex/package.scala +++ b/scalatexApi/src/main/scala/scalatex/package.scala @@ -78,7 +78,7 @@ package object scalatex { def compile(s: String): c.Tree = { val realPos = new OffsetPosition(source, point).asInstanceOf[c.universe.Position] - Compiler(c)(realPos, Parser(stages.Trim(s))) + Compiler(c)(realPos, Parser(stages.Trim.old(s))) } diff --git a/scalatexApi/src/main/scala/scalatex/stages/Trim.scala b/scalatexApi/src/main/scala/scalatex/stages/Trim.scala index 02d9cc4..1ac7be1 100644 --- a/scalatexApi/src/main/scala/scalatex/stages/Trim.scala +++ b/scalatexApi/src/main/scala/scalatex/stages/Trim.scala @@ -8,16 +8,21 @@ package scalatex.stages * * Remove all trailing whitespace from each line. */ -object Trim extends (String => String){ +object Trim extends (String => (String, Int)){ def apply(str: String) = { - val lines = str.split("\n") + val lines = str.split("\n", -1) val offset = lines.iterator .filter(_.length > 0) .next() .takeWhile(_ == ' ') .length - lines.iterator - .map(_.drop(offset).replaceFirst("\\s+$", "")) - .mkString("\n") + val res = lines.iterator + .map(_.replaceFirst("\\s+$", "")) + .mkString("\n") + (res, offset) + } + def old(str: String) = { + val (res, offset) = this.apply(str) + res.split("\n", -1).map(_.drop(offset)).mkString("\n") } } diff --git a/scalatexApi/src/test/scala/scalatex/ParserTests.scala b/scalatexApi/src/test/scala/scalatex/ParserTests.scala index 401cfae..7454fbb 100644 --- a/scalatexApi/src/test/scala/scalatex/ParserTests.scala +++ b/scalatexApi/src/test/scala/scalatex/ParserTests.scala @@ -19,7 +19,7 @@ object ParserTests extends utest.TestSuite{ 'Trim{ def wrap(s: String) = "|" + s + "|" * - { - val trimmed = wrap(stages.Trim(""" + val trimmed = wrap(stages.Trim.old(""" i am cow hear me moo i weigh twice as much as you @@ -33,7 +33,7 @@ object ParserTests extends utest.TestSuite{ } * - { - val trimmed = wrap(stages.Trim( + val trimmed = wrap(stages.Trim.old( """ @{"lol" * 3} @{ @@ -55,7 +55,7 @@ object ParserTests extends utest.TestSuite{ } 'dropTrailingWhitespace - { - val trimmed = wrap(stages.Trim( + val trimmed = wrap(stages.Trim.old( Seq( " i am a cow ", " hear me moo ", @@ -222,7 +222,7 @@ object ParserTests extends utest.TestSuite{ ) ) 'ifBlockElseBraceBlockNested - { - val res = Parser(Trim( + val res = Parser(Trim.old( """ @p @if(true){ |