Ignore:
Timestamp:
01/29/06 17:34:38 (9 years ago)
Author:
xi
Message:

Implement new YAML<->Python string conversion (fix #42).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/syck/dumpers.py

    r25 r36  
    109109 
    110110    def represent_str(self, object): 
    111         return _syck.Scalar(str(object), tag="tag:yaml.org,2002:str") 
     111        try: 
     112            return _syck.Scalar(object.encode('ascii'), tag="tag:yaml.org,2002:str") 
     113        except UnicodeDecodeError: 
     114            try: 
     115                return _syck.Scalar(unicode(object, 'utf-8').encode('utf-8'), 
     116                        tag="tag:python.yaml.org,2002:str") 
     117            except UnicodeDecodeError: 
     118                return _syck.Scalar(object.encode('base64'), 
     119                        tag="tag:yaml.org,2002:binary") 
     120 
     121    def represent_unicode(self, object): 
     122        try: 
     123            return _syck.Scalar(object.encode('ascii'), tag="tag:python.yaml.org,2002:unicode") 
     124        except UnicodeEncodeError: 
     125            return _syck.Scalar(object.encode('utf-8'), tag="tag:yaml.org,2002:str") 
    112126 
    113127    def represent_list(self, object): 
     
    139153    def represent_long(self, object): 
    140154        return _syck.Scalar(repr(object), tag="tag:python.yaml.org,2002:long") 
    141  
    142     def represent_unicode(self, object): 
    143         return _syck.Scalar(object.encode('utf-8'), tag="tag:python.yaml.org,2002:unicode") 
    144155 
    145156    def represent_tuple(self, object): 
Note: See TracChangeset for help on using the changeset viewer.