added parse_failsafe;
authorwenzelm
Sat, 23 Aug 2008 19:42:14 +0200
changeset 27960 65b10d8ef0c6
parent 27959 d6a4d7b013f7
child 27961 2cd133df7587
added parse_failsafe;
src/Pure/General/yxml.scala
--- 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>"))))
+    }
+  }
+
 }