diff options
Diffstat (limited to 'bs4')
-rw-r--r-- | bs4/element.py | 15 | ||||
-rw-r--r-- | bs4/tests/test_tree.py | 17 |
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): |