summaryrefslogtreecommitdiff
path: root/bs4/element.py
diff options
context:
space:
mode:
Diffstat (limited to 'bs4/element.py')
-rw-r--r--bs4/element.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/bs4/element.py b/bs4/element.py
index b176777..478d285 100644
--- a/bs4/element.py
+++ b/bs4/element.py
@@ -190,6 +190,34 @@ class PageElement(object):
"""Appends the given tag to the contents of this tag."""
self.insert(len(self.contents), tag)
+ def insert_before(self, successor):
+ """Makes this element the immediate predecessor of the given element.
+
+ The two elements will have the same parent, and this element
+ will be immediately before the given one.
+ """
+ parent = successor.parent
+ if parent is None:
+ raise ValueError(
+ "Destination has no parent, so 'before' has no meaning.")
+ self.extract()
+ index = parent.index(successor)
+ parent.insert(index, self)
+
+ def insert_after(self, predecessor):
+ """Makes this element the immediate successor of the given element.
+
+ The two elements will have the same parent, and this element
+ will be immediately after the given one.
+ """
+ parent = predecessor.parent
+ if parent is None:
+ raise ValueError(
+ "Destination has no parent, so 'after' has no meaning.")
+ self.extract()
+ index = parent.index(predecessor)
+ parent.insert(index+1, self)
+
def find_next(self, name=None, attrs={}, text=None, **kwargs):
"""Returns the first item that matches the given criteria and
appears after this Tag in the document."""