fix some HTML issues in annotation file
authorStefan Behnel <stefan_ml@behnel.de>
Sun, 1 Sep 2013 19:56:54 +0000 (21:56 +0200)
committerStefan Behnel <stefan_ml@behnel.de>
Sun, 1 Sep 2013 19:56:54 +0000 (21:56 +0200)
Cython/Compiler/Annotate.py

index f85b6a3..65796ca 100644 (file)
@@ -11,9 +11,11 @@ from Code import CCodeWriter
 from Cython import Utils
 
 # need one-characters subsitutions (for now) so offsets aren't off
-special_chars = [(u'<', u'\xF0', u'&lt;'),
-                 (u'>', u'\xF1', u'&gt;'),
-                 (u'&', u'\xF2', u'&amp;')]
+special_chars = [
+    (u'&', u'\xF2', u'&amp;'),
+    (u'<', u'\xF0', u'&lt;'),
+    (u'>', u'\xF1', u'&gt;'),
+]
 
 line_pos_comment = re.compile(r'/\*.*?<<<<<<<<<<<<<<.*?\*/\n*', re.DOTALL)
 
@@ -57,8 +59,7 @@ class AnnotationCCodeWriter(CCodeWriter):
         self.mark_pos(None)
         f = Utils.open_source_file(source_filename)
         lines = f.readlines()
-        for k in range(len(lines)):
-            line = lines[k]
+        for k, line in enumerate(lines):
             for c, cc, html in special_chars:
                 line = line.replace(c, cc)
             lines[k] = line
@@ -86,6 +87,7 @@ class AnnotationCCodeWriter(CCodeWriter):
 
         html_filename = os.path.splitext(target_filename)[0] + ".html"
         f = codecs.open(html_filename, "w", encoding="UTF-8")
+        f.write(u'<!DOCTYPE html>\n')
         f.write(u'<!-- Generated by Cython %s -->\n' % Version.watermark)
         f.write(u'<html>\n')
         f.write(u"""
@@ -147,8 +149,9 @@ function toggleDiv(id) {
                 code = code_source_file[k]
             except KeyError:
                 code = ''
-
-            code = code.replace('<', '<code><</code>')
+            else:
+                for c, cc, html in special_chars:
+                    code = code.replace(c, html)
 
             code, py_c_api_calls = py_c_api.subn(ur"<span class='py_c_api'>\1</span>(", code)
             code, pyx_c_api_calls = pyx_c_api.subn(ur"<span class='pyx_c_api'>\1</span>(", code)