summaryrefslogtreecommitdiff
path: root/codegen
diff options
context:
space:
mode:
authorDaniel Elstner <daniel@src.gnome.org>2009-01-27 16:21:13 +0000
committerDaniel Elstner <daniel@src.gnome.org>2009-01-27 16:21:13 +0000
commit90ca9dac132dc396e0f064ff01556740ca09e2b0 (patch)
treec191d87721e9b3f088ea4e1381dea5aab8ab43dd /codegen
parent90ddf11f06d68deeaa8c59b4d83b07808a892281 (diff)
downloadpygobject-90ca9dac132dc396e0f064ff01556740ca09e2b0.tar.gz
Do not escape the ampersand "&" in entity references (bug #568485).
* codegen/docextract_to_xml.py (escape_text): Do not escape the ampersand "&" in entity references (bug #568485). Replace some unusual entity references in the output with their literal values. svn path=/trunk/; revision=998
Diffstat (limited to 'codegen')
-rwxr-xr-xcodegen/docextract_to_xml.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/codegen/docextract_to_xml.py b/codegen/docextract_to_xml.py
index 76ac85d7..f8d3bae7 100755
--- a/codegen/docextract_to_xml.py
+++ b/codegen/docextract_to_xml.py
@@ -7,21 +7,26 @@
# # ./docextract_to_xml.py -s /gnome/head/cvs/gtk+/gtk/ -s /gnome/head/cvs/gtk+/docs/reference/gtk/tmpl/ > gtk_docs.xml
import getopt
+import re
import string
import sys
import docextract
def escape_text(unescaped_text):
- escaped_text = unescaped_text
+ # Escape every "&" not part of an entity reference
+ escaped_text = re.sub(r'&(?![A-Za-z]+;)', '&amp;', unescaped_text)
+
+ # These weird entities turn up in the output...
+ escaped_text = string.replace(escaped_text, '&mdash;', '&#8212;')
+ escaped_text = string.replace(escaped_text, '&ast;', '*')
+ escaped_text = string.replace(escaped_text, '&percnt;', '%')
+ escaped_text = string.replace(escaped_text, '&commat;', '@')
+
+ # Escape for both tag contents and attribute values
escaped_text = string.replace(escaped_text, '<', '&lt;')
escaped_text = string.replace(escaped_text, '>', '&gt;')
- escaped_text = string.replace(escaped_text, '&', '&amp;')
- escaped_text = string.replace(escaped_text, '\'', '&apos;')
- escaped_text = string.replace(escaped_text, '\"', '&quot;')
-
- #Apparently this is an undefined symbol:
- escaped_text = string.replace(escaped_text, '&mdash;', ' mdash ')
+ escaped_text = string.replace(escaped_text, '"', '&quot;')
return escaped_text