|
| 1 | +Index: src/html5lib/treebuilders/dom.py |
| 2 | +=================================================================== |
| 3 | +--- src/html5lib/treebuilders/dom.py (revision 1118) |
| 4 | ++++ src/html5lib/treebuilders/dom.py (working copy) |
| 5 | +@@ -137,16 +137,21 @@ |
| 6 | + rv = [] |
| 7 | + def serializeElement(element, indent=0): |
| 8 | + if element.nodeType == Node.DOCUMENT_TYPE_NODE: |
| 9 | +- if element.name: |
| 10 | +- rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.name)) |
| 11 | ++ if element.publicId: |
| 12 | ++ if element.systemId: |
| 13 | ++ rv.append('|%s<!DOCTYPE %s PUBLIC "%s" "%s">'%(' '*indent, element.name or "", element.publicId, element.systemId)) |
| 14 | ++ else: |
| 15 | ++ rv.append('|%s<!DOCTYPE %s PUBLIC "%s">'%(' '*indent, element.name or "", element.publicId)) |
| 16 | ++ elif element.systemId: |
| 17 | ++ rv.append('|%s<!DOCTYPE %s SYSTEM "%s">'%(' '*indent, element.name or "", element.systemId)) |
| 18 | + else: |
| 19 | +- rv.append("|%s<!DOCTYPE >"%(' '*indent,)) |
| 20 | ++ rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.name or "")) |
| 21 | + elif element.nodeType == Node.DOCUMENT_NODE: |
| 22 | + rv.append("#document") |
| 23 | + elif element.nodeType == Node.DOCUMENT_FRAGMENT_NODE: |
| 24 | + rv.append("#document-fragment") |
| 25 | + elif element.nodeType == Node.COMMENT_NODE: |
| 26 | +- rv.append("|%s<!-- %s -->"%(' '*indent, element.nodeValue)) |
| 27 | ++ rv.append("|%s<!--%s-->"%(' '*indent, element.nodeValue)) |
| 28 | + elif element.nodeType == Node.TEXT_NODE: |
| 29 | + rv.append("|%s\"%s\"" %(' '*indent, element.nodeValue)) |
| 30 | + else: |
| 31 | +Index: src/html5lib/treebuilders/etree.py |
| 32 | +=================================================================== |
| 33 | +--- src/html5lib/treebuilders/etree.py (revision 1118) |
| 34 | ++++ src/html5lib/treebuilders/etree.py (working copy) |
| 35 | +@@ -169,7 +169,15 @@ |
| 36 | + if not(hasattr(element, "tag")): |
| 37 | + element = element.getroot() |
| 38 | + if element.tag == "<!DOCTYPE>": |
| 39 | +- rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.text)) |
| 40 | ++ if element.get("publicId"): |
| 41 | ++ if element.get("systemId"): |
| 42 | ++ rv.append('|%s<!DOCTYPE %s PUBLIC "%s" "%s">'%(' '*indent, element.text, element.get("publicId"), element.get("systemId"))) |
| 43 | ++ else: |
| 44 | ++ rv.append('|%s<!DOCTYPE %s PUBLIC "%s">'%(' '*indent, element.text, element.get("publicId"))) |
| 45 | ++ elif element.get("systemId"): |
| 46 | ++ rv.append('|%s<!DOCTYPE %s SYSTEM "%s">'%(' '*indent, element.text, element.get("systemId"))) |
| 47 | ++ else: |
| 48 | ++ rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.text)) |
| 49 | + elif element.tag == "<DOCUMENT_ROOT>": |
| 50 | + rv.append("#document") |
| 51 | + if element.text: |
| 52 | +@@ -177,7 +185,7 @@ |
| 53 | + if element.tail: |
| 54 | + finalText = element.tail |
| 55 | + elif type(element.tag) == type(ElementTree.Comment): |
| 56 | +- rv.append("|%s<!-- %s -->"%(' '*indent, element.text)) |
| 57 | ++ rv.append("|%s<!--%s-->"%(' '*indent, element.text)) |
| 58 | + else: |
| 59 | + rv.append("|%s<%s>"%(' '*indent, element.tag)) |
| 60 | + if hasattr(element, "attrib"): |
| 61 | +Index: src/html5lib/treebuilders/etree_lxml.py |
| 62 | +=================================================================== |
| 63 | +--- src/html5lib/treebuilders/etree_lxml.py (revision 1118) |
| 64 | ++++ src/html5lib/treebuilders/etree_lxml.py (working copy) |
| 65 | +@@ -50,12 +50,19 @@ |
| 66 | + if not hasattr(element, "tag"): |
| 67 | + rv.append("#document") |
| 68 | + if element.docinfo.internalDTD: |
| 69 | +- if not (element.docinfo.public_id or element.docinfo.system_url): |
| 70 | ++ if element.docinfo.public_id: |
| 71 | ++ if element.docinfo.system_url: |
| 72 | ++ dtd_str = """<!DOCTYPE %s PUBLIC "%s" "%s">"""%( |
| 73 | ++ element.docinfo.root_name, element.docinfo.public_id, |
| 74 | ++ element.docinfo.system_url) |
| 75 | ++ else: |
| 76 | ++ dtd_str = """<!DOCTYPE %s PUBLIC "%s">"""%( |
| 77 | ++ element.docinfo.root_name, element.docinfo.public_id) |
| 78 | ++ elif element.docinfo.system_url: |
| 79 | ++ dtd_str = """<!DOCTYPE %s SYSTEM "%s">"""%( |
| 80 | ++ element.docinfo.root_name, element.docinfo.system_url) |
| 81 | ++ else: |
| 82 | + dtd_str = "<!DOCTYPE %s>"%element.docinfo.root_name |
| 83 | +- else: |
| 84 | +- dtd_str = """<!DOCTYPE %s PUBLIC "%s" "%s">"""%( |
| 85 | +- element.docinfo.root_name, element.docinfo.public_id, |
| 86 | +- element.docinfo.system_url) |
| 87 | + rv.append("|%s%s"%(' '*(indent+2), dtd_str)) |
| 88 | + next_element = element.getroot() |
| 89 | + while next_element.getprevious() is not None: |
| 90 | +@@ -64,7 +71,7 @@ |
| 91 | + serializeElement(next_element, indent+2) |
| 92 | + next_element = next_element.getnext() |
| 93 | + elif type(element.tag) == type(etree.Comment): |
| 94 | +- rv.append("|%s<!-- %s -->"%(' '*indent, element.text)) |
| 95 | ++ rv.append("|%s<!--%s-->"%(' '*indent, element.text)) |
| 96 | + else: |
| 97 | + rv.append("|%s<%s>"%(' '*indent, element.tag)) |
| 98 | + if hasattr(element, "attrib"): |
| 99 | +Index: src/html5lib/treebuilders/simpletree.py |
| 100 | +=================================================================== |
| 101 | +--- src/html5lib/treebuilders/simpletree.py (revision 1118) |
| 102 | ++++ src/html5lib/treebuilders/simpletree.py (working copy) |
| 103 | +@@ -112,7 +112,15 @@ |
| 104 | + self.systemId = u"" |
| 105 | + |
| 106 | + def __unicode__(self): |
| 107 | +- return u"<!DOCTYPE %s>" % self.name |
| 108 | ++ if self.publicId: |
| 109 | ++ if self.systemId: |
| 110 | ++ return u'<!DOCTYPE %s PUBLIC "%s" "%s">'%(self.name, self.publicId, self.systemId) |
| 111 | ++ else: |
| 112 | ++ return u'<!DOCTYPE %s PUBLIC "%s">'%(self.name, self.publicId) |
| 113 | ++ elif self.systemId: |
| 114 | ++ return u'<!DOCTYPE %s SYSTEM "%s">'%(self.name, self.systemId) |
| 115 | ++ else: |
| 116 | ++ return u"<!DOCTYPE %s>"%self.name |
| 117 | + |
| 118 | + toxml = __unicode__ |
| 119 | + |
| 120 | +@@ -186,7 +194,7 @@ |
| 121 | + self.data = data |
| 122 | + |
| 123 | + def __unicode__(self): |
| 124 | +- return "<!-- %s -->" % self.data |
| 125 | ++ return u"<!--%s-->" % self.data |
| 126 | + |
| 127 | + def toxml(self): |
| 128 | + return "<!--%s-->" % self.data |
| 129 | +Index: tests/support.py |
| 130 | +=================================================================== |
| 131 | +--- tests/support.py (revision 1118) |
| 132 | ++++ tests/support.py (working copy) |
| 133 | +@@ -11,10 +11,10 @@ |
| 134 | + |
| 135 | + #Define the location of the tests as this changes in release versions |
| 136 | + #RELEASE remove |
| 137 | +-test_dir = os.path.join(os.path.pardir,os.path.pardir,'testdata') |
| 138 | ++test_dir = os.path.join(os.path.pardir,os.path.pardir,os.path.pardir,'html5-tests') |
| 139 | + #END RELEASE |
| 140 | + #RELEASE add |
| 141 | +-#test_dir = './testdata' |
| 142 | ++#test_dir = './html5-tests' |
| 143 | + #END RELEASE |
| 144 | + |
| 145 | + try: |
0 commit comments