Commit af2b04dc by Chris Jerdonek

Added Reader.unicode().

parent 43cc3d1f
...@@ -42,17 +42,18 @@ class Reader(object): ...@@ -42,17 +42,18 @@ class Reader(object):
self.decode_errors = decode_errors self.decode_errors = decode_errors
self.encoding = encoding self.encoding = encoding
def unicode(self, text, encoding=None):
if encoding is None:
encoding = self.encoding
return unicode(text, encoding, self.decode_errors)
def read(self, path, encoding=None): def read(self, path, encoding=None):
""" """
Read the template at the given path, and return it as a unicode string. Read the template at the given path, and return it as a unicode string.
""" """
if encoding is None:
encoding = self.encoding
with open(path, 'r') as f: with open(path, 'r') as f:
text = f.read() text = f.read()
text = unicode(text, encoding, self.decode_errors) return self.unicode(text, encoding)
return text
...@@ -36,6 +36,45 @@ class ReaderTestCase(unittest.TestCase): ...@@ -36,6 +36,45 @@ class ReaderTestCase(unittest.TestCase):
reader = Reader(encoding='foo') reader = Reader(encoding='foo')
self.assertEquals(reader.encoding, 'foo') self.assertEquals(reader.encoding, 'foo')
def test_unicode(self):
"""
Test unicode(): default values.
"""
reader = Reader()
actual = reader.unicode("foo")
self.assertEquals(type(actual), unicode)
self.assertEquals(actual, u"foo")
def test_unicode__encoding_attribute(self):
"""
Test unicode(): encoding attribute.
"""
reader = Reader()
non_ascii = u'é'.encode('utf-8')
self.assertRaises(UnicodeDecodeError, reader.unicode, non_ascii)
reader.encoding = 'utf-8'
self.assertEquals(reader.unicode(non_ascii), u"é")
def test_unicode__encoding_argument(self):
"""
Test unicode(): encoding argument.
"""
reader = Reader()
non_ascii = u'é'.encode('utf-8')
self.assertRaises(UnicodeDecodeError, reader.unicode, non_ascii)
self.assertEquals(reader.unicode(non_ascii, encoding='utf-8'), u'é')
def test_read(self): def test_read(self):
""" """
Test read(). Test read().
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment