summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-06-20 10:41:49 -0700
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-06-20 15:46:25 -0700
commitef1264b2ff134771a2df4ee30e9a509fb7a78c49 (patch)
treeb441ab1bb4352728bfd569f34471f9a43aa85b34 /src
parentedee7dbfce89841cecdba3996492d3741f9e803e (diff)
downloadscala-ef1264b2ff134771a2df4ee30e9a509fb7a78c49.tar.gz
scala-ef1264b2ff134771a2df4ee30e9a509fb7a78c49.tar.bz2
scala-ef1264b2ff134771a2df4ee30e9a509fb7a78c49.zip
Remove dependency on xml in MarkupParsers
Inlined TextBuffer.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
index 832a9bf63e..70b9bf3168 100755
--- a/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
@@ -10,7 +10,6 @@ import scala.collection.mutable
import mutable.{ Buffer, ArrayBuffer, ListBuffer }
import scala.util.control.ControlThrowable
import scala.tools.nsc.util.CharArrayReader
-import scala.xml.TextBuffer
import scala.xml.parsing.MarkupParserCommon
import scala.reflect.internal.Chars.{ SU, LF }
@@ -172,12 +171,21 @@ trait MarkupParsers {
xTakeUntil(handle.comment, () => r2p(start, start, curOffset), "-->")
}
- def appendText(pos: Position, ts: Buffer[Tree], txt: String) {
- val toAppend =
- if (preserveWS) Seq(txt)
- else TextBuffer.fromString(txt).toText map (_.text)
+ def appendText(pos: Position, ts: Buffer[Tree], txt: String): Unit = {
+ def append(t: String) = ts append handle.text(pos, t)
- toAppend foreach (t => ts append handle.text(pos, t))
+ if (preserveWS) append(txt)
+ else {
+ val sb = new StringBuilder()
+
+ txt foreach { c =>
+ if (!isSpace(c)) sb append c
+ else if (sb.isEmpty || !isSpace(sb.last)) sb append ' '
+ }
+
+ val trimmed = sb.toString.trim
+ if (!trimmed.isEmpty) append(trimmed)
+ }
}
/** adds entity/character to ts as side-effect