equal
deleted
inserted
replaced
38 } |
38 } |
39 case class Text(content: String) extends Tree with Trav { |
39 case class Text(content: String) extends Tree with Trav { |
40 private lazy val hash: Int = content.hashCode() |
40 private lazy val hash: Int = content.hashCode() |
41 override def hashCode(): Int = hash |
41 override def hashCode(): Int = hash |
42 } |
42 } |
43 |
|
44 def elem(markup: Markup): XML.Elem = XML.Elem(markup, Nil) |
|
45 def elem(name: String, body: Body): XML.Elem = XML.Elem(Markup(name, Nil), body) |
|
46 def elem(name: String): XML.Elem = XML.Elem(Markup(name, Nil), Nil) |
|
47 |
|
48 val no_text: Text = Text("") |
|
49 val newline: Text = Text("\n") |
|
50 |
|
51 def string(s: String): Body = if (s.isEmpty) Nil else List(Text(s)) |
|
52 |
|
53 def enclose(bg: String, en:String, body: Body): Body = |
|
54 string(bg) ::: body ::: string(en) |
|
55 |
43 |
56 trait Traversal { |
44 trait Traversal { |
57 def text(s: String): Unit |
45 def text(s: String): Unit |
58 def elem(markup: Markup, end: Boolean = false): Unit |
46 def elem(markup: Markup, end: Boolean = false): Unit |
59 def end_elem(name: String): Unit |
47 def end_elem(name: String): Unit |
72 } |
60 } |
73 trav(trees) |
61 trav(trees) |
74 } |
62 } |
75 } |
63 } |
76 |
64 |
|
65 def elem(markup: Markup): XML.Elem = XML.Elem(markup, Nil) |
|
66 def elem(name: String, body: Body): XML.Elem = XML.Elem(Markup(name, Nil), body) |
|
67 def elem(name: String): XML.Elem = XML.Elem(Markup(name, Nil), Nil) |
|
68 |
|
69 val no_text: Text = Text("") |
|
70 val newline: Text = Text("\n") |
|
71 |
|
72 def string(s: String): Body = if (s.isEmpty) Nil else List(Text(s)) |
|
73 |
|
74 def enclose(bg: String, en:String, body: Body): Body = |
|
75 string(bg) ::: body ::: string(en) |
|
76 |
77 |
77 |
78 /* name space */ |
78 /* name space */ |
79 |
79 |
80 object Namespace { |
80 object Namespace { |
81 def apply(prefix: String, target: String): Namespace = |
81 def apply(prefix: String, target: String): Namespace = |