Changeset 44

Show
Ignore:
Timestamp:
05/03/05 18:11:39 (3 years ago)
Author:
steve
Message:

integrated unicode support patch #3 from Andreas Klöckner

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/airspeed.py

    r43 r44  
    33import re, operator, os 
    44 
    5 try: import cStringIO as StringIO 
    6 except ImportError: import StringIO 
     5import StringIO   # cStringIO has issues with unicode 
    76 
    87__all__ = ['Template', 'TemplateError', 'TemplateSyntaxError', 'CachingFileLoader'] 
     
    2827    operator.__eq__ = lambda a, b: a == b 
    2928    operator.__ne__ = lambda a, b: a != b 
     29try: 
     30    basestring 
     31    def is_string(s): return isinstance(s, basestring) 
     32except NameError: 
     33    def is_string(s): return type(s) == type('') 
    3034 
    3135############################################################################### 
     
    406410            if self.silent: value = '' 
    407411            else: value = self.my_text() 
    408         stream.write(str(value)) 
     412        if is_string(value): 
     413            stream.write(value) 
     414        else: 
     415            stream.write(str(value)) 
    409416 
    410417 
  • trunk/airspeed_test.py

    r43 r44  
    11#!/usr/bin/env python 
     2# -*- coding: latin1 -*- 
    23 
    34from unittest import TestCase, main 
     
    439440        value = template.merge({'obj': C(), 'param':'bat'}) 
    440441        self.assertEquals('monkey', value) 
     442 
     443    def test_preserves_unicode_strings(self): 
     444        template = airspeed.Template('$value') 
     445        value = unicode('Grüße', 'latin1') 
     446        self.assertEquals(value, template.merge(locals())) 
     447 
    441448 
    442449#