Skip to content

Commit d0d5186

Browse files
committed
Serialize system/public id in tests
--HG-- extra : convert_revision : svn%3Aacbfec75-9323-0410-a652-858a13e371e0/trunk%401130
1 parent c86e113 commit d0d5186

File tree

4 files changed

+37
-5
lines changed

4 files changed

+37
-5
lines changed

src/html5lib/treebuilders/dom.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,13 @@ def testSerializer(element):
138138
def serializeElement(element, indent=0):
139139
if element.nodeType == Node.DOCUMENT_TYPE_NODE:
140140
if element.name:
141-
rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.name))
141+
if element.publicId or element.systemId:
142+
publicId = element.publicId or ""
143+
systemId = element.systemId or ""
144+
rv.append( """|%s<!DOCTYPE %s PUBLIC "%s" "%s">"""%(
145+
' '*indent, element.name, publicId, systemId))
146+
else:
147+
rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.name))
142148
else:
143149
rv.append("|%s<!DOCTYPE >"%(' '*indent,))
144150
elif element.nodeType == Node.DOCUMENT_NODE:

src/html5lib/treebuilders/etree.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,13 @@ def serializeElement(element, indent=0):
169169
if not(hasattr(element, "tag")):
170170
element = element.getroot()
171171
if element.tag == "<!DOCTYPE>":
172-
rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.text))
172+
if element.get("publicId") or element.get("systemId"):
173+
publicId = element.get("publicId") or ""
174+
systemId = element.get("systemId") or ""
175+
rv.append( """<!DOCTYPE %s PUBLIC "%s" "%s">"""%(
176+
element.text, publicId, systemId))
177+
else:
178+
rv.append("<!DOCTYPE %s>"%(element.text,))
173179
elif element.tag == "<DOCUMENT_ROOT>":
174180
rv.append("#document")
175181
if element.text:
@@ -206,7 +212,13 @@ def serializeElement(element):
206212
element = element.getroot()
207213

208214
if element.tag == "<!DOCTYPE>":
209-
rv.append("<!DOCTYPE %s>"%(element.text,))
215+
if element.get("publicId") or element.get("systemId"):
216+
publicId = element.get("publicId") or ""
217+
systemId = element.get("systemId") or ""
218+
rv.append( """<!DOCTYPE %s PUBLIC "%s" "%s">"""%(
219+
element.text, publicId, systemId))
220+
else:
221+
rv.append("<!DOCTYPE %s>"%(element.text,))
210222
elif element.tag == "<DOCUMENT_ROOT>":
211223
if element.text:
212224
rv.append(element.text)

src/html5lib/treebuilders/simpletree.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,15 @@ def __init__(self, name):
112112
self.systemId = u""
113113

114114
def __unicode__(self):
115-
return u"<!DOCTYPE %s>" % self.name
115+
if self.publicId or self.systemId:
116+
publicId = self.publicId or ""
117+
systemId = self.systemId or ""
118+
return """<!DOCTYPE %s PUBLIC "%s" "%s">"""%(
119+
self.name, publicId, systemId)
120+
121+
else:
122+
return u"<!DOCTYPE %s>" % self.name
123+
116124

117125
toxml = __unicode__
118126

src/html5lib/treebuilders/soup.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,12 @@ def documentClass(self):
104104
return Element(self.soup, self.soup)
105105

106106
def insertDoctype(self, name, publicId, systemId):
107-
self.soup.insert(0, Declaration(name))
107+
if publicId or systemId:
108+
publicId = publicId or ""
109+
systemId = systemId or ""
110+
self.soup.insert(0, Declaration("%s PUBLIC \"%s\" \"%s\""%(name, publicId, systemId)))
111+
else:
112+
self.soup.insert(0, Declaration(name))
108113

109114
def elementClass(self, name):
110115
return Element(Tag(self.soup, name), self.soup)
@@ -134,6 +139,7 @@ def testSerializer(element):
134139
def serializeElement(element, indent=0):
135140
if isinstance(element, Declaration):
136141
rv.append("|%s<!DOCTYPE %s>"%(' '*indent, element.string))
142+
137143
elif isinstance(element, BeautifulSoup):
138144
if element.name == "[document_fragment]":
139145
rv.append("#document-fragment")

0 commit comments

Comments
 (0)