Skip to content

Commit a3cf1ea

Browse files
buraqadriaanm
buraq
authored andcommitted
xml library - node traversing
1 parent fc921e5 commit a3cf1ea

File tree

4 files changed

+27
-4
lines changed

4 files changed

+27
-4
lines changed

sources/scala/xml/NodeSeq.scala

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ package scala.xml ;
1111

1212
object NodeSeq {
1313
final val Empty = new NodeSeq { def theSeq = Nil; }
14+
def fromSeq(s:Seq[Node]):NodeSeq = new NodeSeq {
15+
def theSeq = s;
16+
}
17+
def view(s:Seq[Node]):NodeSeq = fromSeq(s);
1418
}
1519

1620
/** a wrapper around Seq[Node] that adds XPath and comprehension methods */

sources/scala/xml/NodeTraverser.scala

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package scala.xml;
2+
3+
import parsing.MarkupHandler;
4+
5+
trait NodeTraverser extends MarkupHandler {
6+
7+
def traverse(n:Node): Unit = n match {
8+
case x:ProcInstr => procInstr(0, x.target, x.text)
9+
case x:Comment => comment(0, x.text)
10+
case x:Text => text(0, x.data)
11+
case x:EntityRef => entityRef(0, x.entityName)
12+
case _ =>
13+
elemStart(0, n.prefix, n.label, n.attributes, n.scope);
14+
for(val m <- n.child)
15+
traverse(m);
16+
elem(0, n.prefix, n.label, n.attributes, n.scope, NodeSeq.fromSeq(n.child));
17+
elemEnd(0, n.prefix, n.label);
18+
}
19+
}

sources/scala/xml/parsing/MarkupHandler.scala

+1-4
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,14 @@ import scala.util.logging._;
2121
* @todo can we ignore more entity declarations (i.e. those with extIDs)?
2222
* @todo expanding entity references
2323
*/
24-
abstract class MarkupHandler extends AnyRef with Logged with ConsoleLogger {
24+
abstract class MarkupHandler extends AnyRef with Logged {
2525

2626
// impl. of Logged
2727
//def log(msg:String) = {}
2828

2929
/** returns true is this markup handler is validing */
3030
val isValidating: Boolean = false;
3131

32-
/** if true, does not remove surplus whitespace */
33-
val preserveWS: Boolean;
34-
3532
var decls: List[Decl] = Nil;
3633

3734
var ent: Map[String, EntityDecl] = new HashMap[String, EntityDecl]();

sources/scala/xml/parsing/MarkupParser.scala

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ abstract class MarkupParser: (MarkupParser with MarkupHandler) extends AnyRef wi
2727

2828
val input: Source;
2929

30+
/** if true, does not remove surplus whitespace */
31+
val preserveWS: Boolean;
32+
3033
def externalSource(systemLiteral: String): Source;
3134

3235
//

0 commit comments

Comments
 (0)