summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi@dropbox.com>2014-11-05 20:47:41 -0800
committerLi Haoyi <haoyi@dropbox.com>2014-11-05 20:47:41 -0800
commit80beed1c4184bb564b2e669cc6f43ef4c6108d06 (patch)
tree8f9a2dafc5dc7558fadfb6eb78a9bbaaffd69cfe
parentc7d96c649cf2b2832a597df405f3c1afcd674009 (diff)
downloadhands-on-scala-js-80beed1c4184bb564b2e669cc6f43ef4c6108d06.tar.gz
hands-on-scala-js-80beed1c4184bb564b2e669cc6f43ef4c6108d06.tar.bz2
hands-on-scala-js-80beed1c4184bb564b2e669cc6f43ef4c6108d06.zip
Trim migration half done
-rw-r--r--scalatexApi/src/main/scala/scalatex/package.scala2
-rw-r--r--scalatexApi/src/main/scala/scalatex/stages/Trim.scala15
-rw-r--r--scalatexApi/src/test/scala/scalatex/ParserTests.scala8
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){