summaryrefslogtreecommitdiff
path: root/bs4/__init__.py
diff options
context:
space:
mode:
authorLeonard Richardson <leonardr@segfault.org>2015-06-23 22:34:46 -0400
committerLeonard Richardson <leonardr@segfault.org>2015-06-23 22:34:46 -0400
commitf094508cd0d46e65190995d2c7a99b3ab8959a26 (patch)
tree6e8ae30665cda01624eb05a66a14fb8118ec63e6 /bs4/__init__.py
parent1023fcb63bc75a3f41ca385b655d6943d1273278 (diff)
Made the previous fix nicer by adding arguments to setup() that let us preserve a tag's existing place in the tree.
Diffstat (limited to 'bs4/__init__.py')
-rw-r--r--bs4/__init__.py20
1 files changed, 5 insertions, 15 deletions
diff --git a/bs4/__init__.py b/bs4/__init__.py
index cc4b27f..c78c54e 100644
--- a/bs4/__init__.py
+++ b/bs4/__init__.py
@@ -302,28 +302,18 @@ class BeautifulSoup(Tag):
def object_was_parsed(self, o, parent=None, most_recent_element=None):
"""Add an object to the parse tree."""
parent = parent or self.currentTag
- most_recent_element = most_recent_element or self._most_recent_element
+ previous_element = most_recent_element or self._most_recent_element
+ next_element = previous_sibling = next_sibling = None
if isinstance(o, Tag):
next_element = o.next_element
next_sibling = o.next_sibling
previous_sibling = o.previous_sibling
- previous_element = o.previous_element
+ if not previous_element:
+ previous_element = o.previous_element
- o.setup(parent, most_recent_element)
+ o.setup(parent, previous_element, next_element, previous_sibling, next_sibling)
- if isinstance(o, Tag):
- if next_element:
- o.next_element = next_element
- if next_sibling:
- o.next_sibling = next_sibling
- if previous_sibling:
- o.previous_sibling = previous_sibling
- if previous_element:
- o.previous_element = previous_element
-
- if most_recent_element is not None:
- most_recent_element.next_element = o
self._most_recent_element = o
parent.contents.append(o)