diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-03-18 11:25:03 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-03-18 11:27:17 +0100 |
commit | 517ca50c8b0efb2bc58eec89df9b62469d98e877 (patch) | |
tree | a4936677f8f7492a03a8fb91f9b77ece414a6ff9 /src/dotty/tools/dotc/parsing/MarkupParsers.scala | |
parent | 027abb4de0710b17ba92499f231d0b0d6467831a (diff) | |
download | dotty-517ca50c8b0efb2bc58eec89df9b62469d98e877.tar.gz dotty-517ca50c8b0efb2bc58eec89df9b62469d98e877.tar.bz2 dotty-517ca50c8b0efb2bc58eec89df9b62469d98e877.zip |
Remove dependency on scala-xml.
Mimic https://github.com/scala/scala/commit/4e9b33ab24bb3bf922c37a05a79af364b7b32b84
Diffstat (limited to 'src/dotty/tools/dotc/parsing/MarkupParsers.scala')
-rw-r--r-- | src/dotty/tools/dotc/parsing/MarkupParsers.scala | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/dotty/tools/dotc/parsing/MarkupParsers.scala b/src/dotty/tools/dotc/parsing/MarkupParsers.scala index 5d86121e0..3afaf171c 100644 --- a/src/dotty/tools/dotc/parsing/MarkupParsers.scala +++ b/src/dotty/tools/dotc/parsing/MarkupParsers.scala @@ -5,15 +5,12 @@ package parsing import scala.collection.mutable import mutable.{ Buffer, ArrayBuffer, ListBuffer } import scala.util.control.ControlThrowable -import util.SourceFile -import scala.xml.{ Text, TextBuffer } -import scala.xml.Utility.{ isNameStart, isNameChar, isSpace } -import scala.reflect.internal.Chars.{ SU, LF } +import scala.reflect.internal.Chars.SU import Parsers._ import util.Positions._ import core._ -import ast.Trees._ import Constants._ +import Utility._ // XXX/Note: many/most of the functions in here are almost direct cut and pastes @@ -50,7 +47,7 @@ object MarkupParsers { class MarkupParser(parser: Parser, final val preserveWS: Boolean) extends MarkupParserCommon { - import Tokens.{ EMPTY, LBRACE, RBRACE } + import Tokens.{ LBRACE, RBRACE } type PositionType = Position type InputType = CharArrayReader @@ -181,11 +178,20 @@ object MarkupParsers { } def appendText(pos: Position, ts: Buffer[Tree], txt: String): Unit = { - val toAppend = - if (preserveWS) Seq(txt) - else TextBuffer.fromString(txt).toText map (_.text) + 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 |