summaryrefslogtreecommitdiff
path: root/bs4/builder/_html5lib.py
diff options
context:
space:
mode:
authorLeonard Richardson <leonardr@segfault.org>2012-08-21 09:13:11 -0400
committerLeonard Richardson <leonardr@segfault.org>2012-08-21 09:13:11 -0400
commit1bdebd326cec9699cd18f040a32a79b8b925eb84 (patch)
treec33860d35fc43f81af423703130fbd7c68505c20 /bs4/builder/_html5lib.py
parentd95ac0003965b4c70157d456fce4d5f1e03ab2d6 (diff)
Fixed a problem with the html5lib builder not handling comments correctly.
Diffstat (limited to 'bs4/builder/_html5lib.py')
-rw-r--r--bs4/builder/_html5lib.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/bs4/builder/_html5lib.py b/bs4/builder/_html5lib.py
index 6001e38..29650a6 100644
--- a/bs4/builder/_html5lib.py
+++ b/bs4/builder/_html5lib.py
@@ -72,6 +72,22 @@ class TreeBuilderForHtml5lib(html5lib.treebuilders._base.TreeBuilder):
doctype = Doctype.for_name_and_ids(name, publicId, systemId)
self.soup.object_was_parsed(doctype)
+ def insertComment(self, token, parent=None):
+ comment = Comment(token['data'])
+ parent = parent or self.soup
+ # We can't rely on self.soup.previousElement, because this
+ # comment may have been parsed a long time ago and inserted.
+ if parent is None:
+ parent = self.soup.currentTag
+ else:
+ parent = parent.element
+ if len(parent.contents) > 0:
+ previous_element = parent.contents[-1]
+ else:
+ previous_element = parent
+
+ self.soup.object_was_parsed(comment, parent, previous_element)
+
def elementClass(self, name, namespace):
tag = self.soup.new_tag(name, namespace)
return Element(tag, self.soup, namespace)