diff options
author | Leonard Richardson <leonardr@segfault.org> | 2015-06-23 22:34:46 -0400 |
---|---|---|
committer | Leonard Richardson <leonardr@segfault.org> | 2015-06-23 22:34:46 -0400 |
commit | f094508cd0d46e65190995d2c7a99b3ab8959a26 (patch) | |
tree | 6e8ae30665cda01624eb05a66a14fb8118ec63e6 /bs4/__init__.py | |
parent | 1023fcb63bc75a3f41ca385b655d6943d1273278 (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__.py | 20 |
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) |