From a07a28ac10e5686d096fd0f4225e01ff137ec80f Mon Sep 17 00:00:00 2001 From: Geoffrey Sneddon Date: Tue, 8 Dec 2015 16:02:57 +0000 Subject: Fix foster parenting with html5lib. This makes all of the html5lib tests pass. Yay! --- bs4/builder/_html5lib.py | 8 +++++--- bs4/tests/test_html5lib.py | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'bs4') diff --git a/bs4/builder/_html5lib.py b/bs4/builder/_html5lib.py index a535747..755518d 100644 --- a/bs4/builder/_html5lib.py +++ b/bs4/builder/_html5lib.py @@ -217,8 +217,10 @@ class Element(html5lib.treebuilders._base.Node): child = node elif node.element.__class__ == NavigableString: string_child = child = node.element + node.parent = self else: child = node.element + node.parent = self if not isinstance(child, basestring) and child.parent is not None: node.element.extract() @@ -283,11 +285,11 @@ class Element(html5lib.treebuilders._base.Node): attributes = property(getAttributes, setAttributes) def insertText(self, data, insertBefore=None): + text = TextNode(self.soup.new_string(data), self.soup) if insertBefore: - text = TextNode(self.soup.new_string(data), self.soup) - self.insertBefore(data, insertBefore) + self.insertBefore(text, insertBefore) else: - self.appendChild(data) + self.appendChild(text) def insertBefore(self, node, refNode): index = self.element.index(refNode.element) diff --git a/bs4/tests/test_html5lib.py b/bs4/tests/test_html5lib.py index 65536c2..34883fe 100644 --- a/bs4/tests/test_html5lib.py +++ b/bs4/tests/test_html5lib.py @@ -96,3 +96,8 @@ class HTML5LibBuilderSmokeTest(SoupTest, HTML5TreeBuilderSmokeTest): a1, a2 = soup.find_all('a') self.assertEqual(a1, a2) assert a1 is not a2 + + def test_foster_parenting(self): + markup = b"""A""" + soup = self.soup(markup) + self.assertEqual(u"A
", soup.body.decode()) -- cgit v1.2.3