safe_unicode from Products.CMFPlone.utils

pull/96/head
Johannes Raggam 2013-03-18 15:04:42 +01:00
rodzic c094391bdb
commit b79db87fa9
2 zmienionych plików z 33 dodań i 0 usunięć

Wyświetl plik

@ -16,6 +16,20 @@ from icalendar.caselessdict import CaselessDict
logger = logging.getLogger('icalendar')
def safe_unicode(value, encoding='utf-8'):
"""Converts a value to unicode, even if it is already a unicode string.
"""
if isinstance(value, unicode):
return value
elif isinstance(value, basestring):
try:
value = unicode(value, encoding)
except (UnicodeDecodeError):
value = value.decode('utf-8', 'replace')
return value
def escape_char(text):
"""Format value according to iCalendar TEXT escaping rules.
"""

Wyświetl plik

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
import unittest
import icalendar
class TestCalComponent(unittest.TestCase):
def test_cal_Component(self):
safe_unicode = icalendar.parser.safe_unicode
self.assertEqual(safe_unicode('spam'), u'spam')
self.assertEqual(safe_unicode(u'spam'), u'spam')
self.assertEqual(safe_unicode(u'spam'.encode('utf-8')), u'spam')
self.assertEqual(safe_unicode('\xc6\xb5'), u'\u01b5')
self.assertEqual(safe_unicode(u'\xc6\xb5'.encode('iso-8859-1')),
u'\u01b5')
self.assertEqual(safe_unicode('\xc6\xb5', encoding='ascii'), u'\u01b5')
self.assertEqual(safe_unicode(1), 1)
self.assertEqual(safe_unicode(None), None)