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

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

File:
1 edited

Legend:

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

    r25 r36  
    2525import _syck 
    2626 
    27 import sys, re 
     27import sys, re, warnings 
    2828 
    2929__all__ = ['GenericLoader', 'Loader', 
    30     'parse', 'load', 'parse_documents', 'load_documents'] 
     30    'parse', 'load', 'parse_documents', 'load_documents', 
     31    'NotUnicodeInputWarning'] 
     32 
     33class NotUnicodeInputWarning(UserWarning): 
     34    pass 
    3135 
    3236class GenericLoader(_syck.Parser): 
     
    180184        return False 
    181185 
     186    def construct_str(self, node): 
     187        try: 
     188            value = unicode(node.value, 'utf-8') 
     189        except UnicodeDecodeError: 
     190            warnings.warn("scalar value is not utf-8", NotUnicodeInputWarning) 
     191            return node.value 
     192        try: 
     193            return value.encode('ascii') 
     194        except UnicodeEncodeError: 
     195            return value 
     196 
    182197    def construct_numeric_base60(self, num_type, node): 
    183198        digits = [num_type(part) for part in node.value.split(':')] 
Note: See TracChangeset for help on using the changeset viewer.