/* __ *\ ** ________ ___ / / ___ Scala API ** ** / __/ __// _ | / / / _ | (c) 2003-2011, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** \* */ package scala.xml // XXX This attempt to make Text not a case class revealed a bug in the pattern // matcher (see ticket #2883) so I've put the case back. (It was/is desirable that // it not be a case class because it is using the antipattern of passing constructor // parameters to the superclass where they become vals, but since they will also be // vals in the subclass, it acquires an underscore to avoid a name clash.) // // object Text { // def apply(data: String) = // if (data != null) new Text(data) // else throw new IllegalArgumentException("tried to construct Text with null") // // def unapply(other: Any): Option[String] = other match { // case x: Text => Some(x.data) // case _ => None // } // } /** The class <code>Text</code> implements an XML node for text (PCDATA). * It is used in both non-bound and bound XML representations. * * @author Burak Emir * * @param text the text contained in this node, may not be null. */ case class Text(_data: String) extends Atom[String](_data) { if (_data == null) throw new IllegalArgumentException("tried to construct Text with null") /** Returns text, with some characters escaped according to the XML * specification. * * @param sb ... * @return ... */ override def buildString(sb: StringBuilder) = Utility.escape(data, sb) }