Skip to content

Commit cec6d6c

Browse files
committed
Merge pull request #2 from ashawley/fix-72-xmleventreader-apos
Fix scala#72 XMLEventReader does not handle ' properly
2 parents 9908250 + 3254347 commit cec6d6c

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

src/main/scala/scala/xml/Utility.scala

+3-5
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,11 @@ object Utility extends AnyRef with parsing.TokenTests {
9797
"lt" -> '<',
9898
"gt" -> '>',
9999
"amp" -> '&',
100-
"quot" -> '"'
101-
// enigmatic comment explaining why this isn't escaped --
102-
// is valid xhtml but not html, and IE doesn't know it, says jweb
103-
// "apos" -> '\''
100+
"quot" -> '"',
101+
"apos" -> '\''
104102
)
105103
val escMap = pairs map { case (s, c) => c -> ("&%s;" format s) }
106-
val unescMap = pairs ++ Map("apos" -> '\'')
104+
val unescMap = pairs
107105
}
108106
import Escapes.{ escMap, unescMap }
109107

src/test/scala/scala/xml/pull/XMLEventReaderTest.scala

+26
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,30 @@ class XMLEventReaderTest {
7070
while(er.hasNext) er.next()
7171
er.stop()
7272
}
73+
74+
@Test
75+
def entityRefTest: Unit = { // SI-7796
76+
val source = Source.fromString("<text>&quot;&apos;&lt;&gt;&amp;</text>")
77+
val er = new XMLEventReader(source)
78+
79+
assertTrue(er.next match {
80+
case EvElemStart(_, "text", _, _) => true
81+
case _ => false
82+
})
83+
84+
val entities = Seq(
85+
EvEntityRef("quot"),
86+
EvEntityRef("apos"),
87+
EvEntityRef("lt"),
88+
EvEntityRef("gt"),
89+
EvEntityRef("amp"))
90+
91+
assertEquals(entities, er.take(entities.size).toSeq)
92+
93+
assertTrue(er.next match {
94+
case EvElemEnd(_, "text") => true
95+
case _ => false
96+
})
97+
assertTrue(er.isEmpty)
98+
}
7399
}

0 commit comments

Comments
 (0)