# -*- coding: utf-8 -*-

class Text:

    def __init__(self, text):        self.text = text    def __unicode__(self, encoding='utf-8', errors='strict'):
        print 'converting to unicode'
        if isinstance(self.text, unicode):            return self.text
        return unicode(self.text, encoding, errors)
    
    def __str__(self):
        print 'converting to string'
        if isinstance(self.text, str):            return self.text
        return self.text.encode('utf-8', 'strict')

print 'init with ascii'       
t = Text('ASCII')
assert unicode(t) == u'ASCII'

print 'init with utf-8'
t = Text('יוניקוד')
assert unicode(t) == u'יוניקוד'

print 'init with unicode'
t = Text(u'יוניקוד')
assert unicode(t) == u'יוניקוד'

print 'insert string into string'
t = Text('ASCII')
assert '%s' % t == 'ASCII' 

print 'insert utf-8 string into string'
t = Text('יוניקוד')
assert '%s' % t == 'יוניקוד'

print 'insert unicode into string'
t = Text(u'יוניקוד')
assert '%s' % t == 'יוניקוד'

print 'insert string into u"unicode"'
t = Text('ASCII')
assert u'%s' % t == u'ASCII'

print 'insert utf-8 string into u"unicode"'
t = Text('יוניקוד')
assert u'%s' % unicode(t) == u'יוניקוד'
print 'insert unicode into u"unicode"'
t = Text(u'יוניקוד')
assert u'%s' % unicode(t) == u'יוניקוד'
