equal
deleted
inserted
replaced
47 } |
47 } |
48 |
48 |
49 |
49 |
50 /* parsing */ |
50 /* parsing */ |
51 |
51 |
52 class BadYXML(msg: String) extends Exception |
52 private def err(msg: String) = error("Malformed YXML: " + msg) |
53 |
|
54 private def err(msg: String) = throw new BadYXML(msg) |
|
55 private def err_attribute() = err("bad attribute") |
53 private def err_attribute() = err("bad attribute") |
56 private def err_element() = err("bad element") |
54 private def err_element() = err("bad element") |
57 private def err_unbalanced(name: String) = |
55 private def err_unbalanced(name: String) = |
58 if (name == "") err("unbalanced element") |
56 if (name == "") err("unbalanced element") |
59 else err("unbalanced element \"" + name + "\"") |
57 else err("unbalanced element \"" + name + "\"") |
113 } |
111 } |
114 |
112 |
115 def parse_failsafe(source: CharSequence) = { |
113 def parse_failsafe(source: CharSequence) = { |
116 try { parse(source) } |
114 try { parse(source) } |
117 catch { |
115 catch { |
118 case e: BadYXML => XML.Elem (Markup.BAD, Nil, |
116 case _: RuntimeException => XML.Elem (Markup.BAD, Nil, |
119 List(XML.Text(source.toString.replace(X_string, "\\<^X>").replace(Y_string, "\\<^Y>")))) |
117 List(XML.Text(source.toString.replace(X_string, "\\<^X>").replace(Y_string, "\\<^Y>")))) |
120 } |
118 } |
121 } |
119 } |
122 |
120 |
123 } |
121 } |