diff options
| author | Leonard Richardson <leonardr@segfault.org> | 2018-12-31 11:32:26 -0500 |
|---|---|---|
| committer | Leonard Richardson <leonardr@segfault.org> | 2018-12-31 11:32:26 -0500 |
| commit | a60fa31cd217d0111c0ed75fc0dd87bfa179e387 (patch) | |
| tree | 41f9afe76c2718881e0380a0ce13f517251c2801 /bs4/element.py | |
| parent | 601b019c7ae9c708a3a05aa132538bebecb7c46b (diff) | |
Improved and tested error checking for insert_before and insert_after.
Diffstat (limited to 'bs4/element.py')
| -rw-r--r-- | bs4/element.py | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/bs4/element.py b/bs4/element.py index c959c3e..c367dee 100644 --- a/bs4/element.py +++ b/bs4/element.py @@ -451,13 +451,13 @@ class PageElement(object): The elements will have the same parent, and the given elements will be immediately before this one. """ - for predecessor in args: - if self is predecessor: + parent = self.parent + if parent is None: + raise ValueError( + "Element has no parent, so 'before' has no meaning.") + if self in args: raise ValueError("Can't insert an element before itself.") - parent = self.parent - if parent is None: - raise ValueError( - "Element has no parent, so 'before' has no meaning.") + for predecessor in args: # Extract first so that the index won't be screwed up if they # are siblings. if isinstance(predecessor, PageElement): @@ -471,15 +471,16 @@ class PageElement(object): The elements will have the same parent, and the given elements will be immediately after this one. """ - + # Do all error checking before modifying the tree. + parent = self.parent + if parent is None: + raise ValueError( + "Element has no parent, so 'after' has no meaning.") + if self in args: + raise ValueError("Can't insert an element after itself.") + offset = 0 for successor in args: - if self is successor: - raise ValueError("Can't insert an element after itself.") - parent = self.parent - if parent is None: - raise ValueError( - "Element has no parent, so 'after' has no meaning.") # Extract first so that the index won't be screwed up if they # are siblings. if isinstance(successor, PageElement): |
