changeset 423:56bbe1d94da0 trunk

Applied patch for #106 (handling of hex charrefs in HTML parser).
author cmlenz
date Tue, 20 Mar 2007 18:27:52 +0000
parents 5d08a744636e
children 11355f9db50c
files genshi/input.py genshi/tests/input.py
diffstat 2 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/input.py
+++ b/genshi/input.py
@@ -338,7 +338,10 @@
         self._enqueue(TEXT, text)
 
     def handle_charref(self, name):
-        text = unichr(int(name))
+        if name.lower().startswith('x'):
+            text = unichr(int(name[1:], 16))
+        else:
+            text = unichr(int(name))
         self._enqueue(TEXT, text)
 
     def handle_entityref(self, name):
--- a/genshi/tests/input.py
+++ b/genshi/tests/input.py
@@ -222,6 +222,14 @@
         self.assertEqual((Stream.END, 'b'), events[3][:2])
         self.assertEqual((Stream.END, 'span'), events[4][:2])
 
+    def test_hex_charref(self):
+        text = '<span>&#x27;</span>'
+        events = list(HTMLParser(StringIO(text)))
+        self.assertEqual(3, len(events))
+        self.assertEqual((Stream.START, ('span', ())), events[0][:2])
+        self.assertEqual((Stream.TEXT, "'"), events[1][:2])
+        self.assertEqual((Stream.END, 'span'), events[2][:2])
+
 
 def suite():
     suite = unittest.TestSuite()
Copyright (C) 2012-2017 Edgewall Software