aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/parsing/MarkupParsers.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2014-03-18 11:25:03 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-03-18 11:27:17 +0100
commit517ca50c8b0efb2bc58eec89df9b62469d98e877 (patch)
treea4936677f8f7492a03a8fb91f9b77ece414a6ff9 /src/dotty/tools/dotc/parsing/MarkupParsers.scala
parent027abb4de0710b17ba92499f231d0b0d6467831a (diff)
downloaddotty-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.scala26
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