summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS.txt3
-rw-r--r--bs4/element.py8
-rw-r--r--bs4/tests/test_tree.py10
3 files changed, 17 insertions, 4 deletions
diff --git a/NEWS.txt b/NEWS.txt
index af8fd16..9a1ac3f 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -9,6 +9,9 @@
* Fixed a test failure that occured on Python 3.x when chardet was
installed.
+* Made prettify() return Unicode by default, so it will look nice on
+ Python 3 when passed into print().
+
= 4.0.0b8 (20110224) =
* All tree builders now preserve namespace information in the
diff --git a/bs4/element.py b/bs4/element.py
index e50f639..650bacf 100644
--- a/bs4/element.py
+++ b/bs4/element.py
@@ -848,9 +848,11 @@ class Tag(PageElement):
s = ''.join(s)
return s
- def prettify(self, encoding=DEFAULT_OUTPUT_ENCODING,
- formatter="minimal"):
- return self.encode(encoding, True, formatter)
+ def prettify(self, encoding=None, formatter="minimal"):
+ if encoding is None:
+ return self.decode(True, formatter=formatter)
+ else:
+ return self.encode(encoding, True, formatter=formatter)
def decode_contents(self, indent_level=None,
eventual_encoding=DEFAULT_OUTPUT_ENCODING,
diff --git a/bs4/tests/test_tree.py b/bs4/tests/test_tree.py
index c75b561..4dda90e 100644
--- a/bs4/tests/test_tree.py
+++ b/bs4/tests/test_tree.py
@@ -1201,7 +1201,15 @@ class TestSubstitutions(SoupTest):
def test_prettify_accepts_formatter(self):
soup = BeautifulSoup("<html><body>foo</body></html>")
pretty = soup.prettify(formatter = lambda x: x.upper())
- self.assertTrue(b"FOO" in pretty)
+ self.assertTrue("FOO" in pretty)
+
+ def test_prettify_outputs_unicode_by_default(self):
+ soup = self.soup("<a></a>")
+ self.assertEqual(unicode, type(soup.prettify()))
+
+ def test_prettify_can_encode_data(self):
+ soup = self.soup("<a></a>")
+ self.assertEqual(bytes, type(soup.prettify("utf-8")))
def test_html_entity_substitution_off_by_default(self):
markup = u"<b>Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!</b>"