diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-06-20 10:41:49 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-06-20 15:46:25 -0700 |
commit | ef1264b2ff134771a2df4ee30e9a509fb7a78c49 (patch) | |
tree | b441ab1bb4352728bfd569f34471f9a43aa85b34 /src | |
parent | edee7dbfce89841cecdba3996492d3741f9e803e (diff) | |
download | scala-ef1264b2ff134771a2df4ee30e9a509fb7a78c49.tar.gz scala-ef1264b2ff134771a2df4ee30e9a509fb7a78c49.tar.bz2 scala-ef1264b2ff134771a2df4ee30e9a509fb7a78c49.zip |
Remove dependency on xml in MarkupParsers
Inlined TextBuffer.
Diffstat (limited to 'src')
-rwxr-xr-x | src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala | 20 |
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 |