summaryrefslogtreecommitdiff
path: root/bs4
diff options
context:
space:
mode:
Diffstat (limited to 'bs4')
-rw-r--r--bs4/element.py15
-rw-r--r--bs4/tests/test_tree.py17
2 files changed, 32 insertions, 0 deletions
diff --git a/bs4/element.py b/bs4/element.py
index bd4c3aa..7935cb1 100644
--- a/bs4/element.py
+++ b/bs4/element.py
@@ -1036,6 +1036,21 @@ class Tag(PageElement):
s.append("\n")
return ''.join(s)
+ def encode_contents(
+ self, indent_level=None, encoding=DEFAULT_OUTPUT_ENCODING,
+ formatter="minimal"):
+ """Renders the contents of this tag as a bytestring."""
+ contents = self.decode_contents(indent_level, encoding, formatter)
+ return contents.encode(encoding)
+
+ # Old method for BS3 compatibility
+ def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
+ prettyPrint=False, indentLevel=0):
+ if not prettyPrint:
+ indentLevel = None
+ return self.encode_contents(
+ indent_level=indentLevel, encoding=encoding)
+
#Soup methods
def find(self, name=None, attrs={}, recursive=True, text=None,
diff --git a/bs4/tests/test_tree.py b/bs4/tests/test_tree.py
index 4d114b7..76e6bf7 100644
--- a/bs4/tests/test_tree.py
+++ b/bs4/tests/test_tree.py
@@ -1297,6 +1297,23 @@ class TestEncoding(SoupTest):
self.assertRaises(
UnicodeEncodeError, soup.encode, "ascii", errors="strict")
+ def test_decode_contents(self):
+ html = u"<b>\N{SNOWMAN}</b>"
+ soup = self.soup(html)
+ self.assertEquals(u"\N{SNOWMAN}", soup.b.decode_contents())
+
+ def test_encode_contents(self):
+ html = u"<b>\N{SNOWMAN}</b>"
+ soup = self.soup(html)
+ self.assertEquals(
+ u"\N{SNOWMAN}".encode("utf8"), soup.b.encode_contents(
+ encoding="utf8"))
+
+ def test_deprecated_renderContents(self):
+ html = u"<b>\N{SNOWMAN}</b>"
+ soup = self.soup(html)
+ self.assertEquals(u"\N{SNOWMAN}".encode("utf8"), soup.b.renderContents())
+
class TestNavigableStringSubclasses(SoupTest):
def test_cdata(self):