--- a/src/Pure/General/yxml.scala Sat Aug 23 19:42:13 2008 +0200
+++ b/src/Pure/General/yxml.scala Sat Aug 23 19:42:14 2008 +0200
@@ -16,6 +16,7 @@
private val X = '\5'
private val Y = '\6'
+ private val X_string = X.toString
private val Y_string = Y.toString
def detect(source: CharSequence) = {
@@ -110,4 +111,13 @@
case Nil => XML.Text("")
case _ => err("multiple results")
}
+
+ def parse_failsafe(source: CharSequence) = {
+ try { parse(source) }
+ catch {
+ case e: BadYXML => XML.Elem (Markup.MALFORMED, Nil,
+ List(XML.Text(source.toString.replace(X_string, "\\<^X>").replace(Y_string, "\\<^Y>"))))
+ }
+ }
+
}