Skip to content

Commit 87e6983

Browse files
committed
Transformers
1 parent e266dcc commit 87e6983

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package scala.xml
2+
3+
import scala.xml.transform._
4+
5+
import org.junit.Test
6+
import org.junit.Assert.assertTrue
7+
import org.junit.Assert.assertEquals
8+
9+
class Transformers {
10+
11+
12+
def transformer = new RuleTransformer(new RewriteRule {
13+
override def transform(n: Node): NodeSeq = n match {
14+
case <t>{ _* }</t> => <q/>
15+
case n => n
16+
}
17+
})
18+
19+
@Test
20+
def transform = // SI-2124
21+
assertEquals(transformer.transform(<p><lost/><t><s><r></r></s></t></p>),
22+
<p><lost/><q/></p>)
23+
24+
@Test
25+
def transformNamespaced = // SI-2125
26+
assertEquals(transformer.transform(<xml:group><p><lost/><t><s><r></r></s></t></p></xml:group>),
27+
Group(<p><lost/><q/></p>))
28+
29+
@Test
30+
def rewriteRule = { // SI-2276
31+
val inputXml: Node =
32+
<root>
33+
<subnode>
34+
<version>1</version>
35+
</subnode>
36+
<contents>
37+
<version>1</version>
38+
</contents>
39+
</root>
40+
41+
object t1 extends RewriteRule {
42+
override def transform(n: Node): Seq[Node] = n match {
43+
case <version>{ x }</version> if x.toString.toInt < 4 => <version>{ x.toString.toInt + 1 }</version>
44+
case other => other
45+
}
46+
}
47+
48+
val ruleTransformer = new RuleTransformer(t1)
49+
JUnitAssertsForXML.assertEquals(ruleTransformer(inputXml).toString, // TODO: why do we need toString?
50+
<root>
51+
<subnode>
52+
<version>2</version>
53+
</subnode>
54+
<contents>
55+
<version>2</version>
56+
</contents>
57+
</root>)
58+
}
59+
}

0 commit comments

Comments
 (0)