All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.xml.NodeBuffer.scala Maven / Gradle / Ivy

/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2003-2010, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */


package scala.xml

/**
 * 

* This class acts as a Buffer for nodes. If it is used as a sequence * of nodes Seq[Node], it must be ensured that no updates * occur after that point, because scala.xml.Node is assumed * to be immutable. *

*

* Despite this being a sequence, don't use it as key in a hashtable. * Calling the hashcode function will result in a runtime error. *

* * @author Burak Emir * @version 1.0 */ class NodeBuffer extends scala.collection.mutable.ArrayBuffer[Node] { /** * Append given object to this buffer, returns reference on this NodeBuffer * for convenience. Some rules apply: If o is null, it is ignored. If it is * an Iterator or Iterable, its elements will be added. If o is a node, it is * added as it is. If it is anything else, it gets wrapped in an Atom. * * @param o converts to an xml node and adds to this node buffer * @return this nodebuffer */ def &+(o: Any): NodeBuffer = { o match { case null | _: Unit | Text("") => // ignore case it: Iterator[_] => it foreach &+ case n: Node => super.+=(n) case ns: Iterable[_] => this &+ ns.iterator case ns: Array[_] => this &+ ns.iterator case d => super.+=(new Atom(d)) } this } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy