kopia lustrzana https://github.com/collective/icalendar
safe_unicode from Products.CMFPlone.utils
rodzic
c094391bdb
commit
b79db87fa9
|
@ -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.
|
||||
"""
|
||||
|
|
|
@ -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)
|
Ładowanie…
Reference in New Issue