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/element.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/element.py')
-rw-r--r-- | bs4/element.py | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/bs4/element.py b/bs4/element.py index f236216..9dc7b47 100644 --- a/bs4/element.py +++ b/bs4/element.py @@ -185,18 +185,30 @@ class PageElement(object): return self.HTML_FORMATTERS.get( name, HTMLAwareEntitySubstitution.substitute_xml) - def setup(self, parent=None, previous_element=None): + def setup(self, parent=None, previous_element=None, next_element=None, + previous_sibling=None, next_sibling=None): """Sets up the initial relations between this element and other elements.""" self.parent = parent + self.previous_element = previous_element if previous_element is not None: self.previous_element.next_element = self + self.next_element = next_element - self.previous_sibling = None - self.next_sibling = None - if self.parent is not None and self.parent.contents: - self.previous_sibling = self.parent.contents[-1] + if self.next_element: + self.next_element.previous_element = self + + self.next_sibling = next_sibling + if self.next_sibling: + self.next_sibling.previous_sibling = self + + if (not previous_sibling + and self.parent is not None and self.parent.contents): + previous_sibling = self.parent.contents[-1] + + self.previous_sibling = previous_sibling + if previous_sibling: self.previous_sibling.next_sibling = self nextSibling = _alias("next_sibling") # BS3 |