Changeset 153


Ignore:
Timestamp:
05/06/06 18:09:50 (8 years ago)
Author:
xi
Message:

Fix #11 (Thanks to edemaine(at)mit.edu).

Location:
pyyaml/trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • pyyaml/trunk/lib/yaml/__init__.py

    r152 r153  
    188188    return dump_all([data], stream, Dumper=SafeDumper, **kwds) 
    189189 
    190 def add_implicit_detector(tag, regexp, first=None, 
     190def add_implicit_resolver(tag, regexp, first=None, 
    191191        Loader=Loader, Dumper=Dumper): 
    192192    """ 
  • pyyaml/trunk/lib/yaml/emitter.py

    r143 r153  
    698698                line_breaks = True 
    699699            if not (ch == u'\n' or u'\x20' <= ch <= u'\x7E'): 
    700                 if ch < u'\x80' or ch == u'\uFEFF': # '\uFEFF' is BOM. 
    701                     special_characters = True 
    702                 else: 
     700                if (ch == u'\x85' or u'\xA0' <= ch <= u'\uD7FF' 
     701                        or u'\uE000' <= ch <= u'\uFFFD') and ch != u'\uFEFF': 
    703702                    unicode_characters = True 
    704703                    if not self.allow_unicode: 
    705704                        special_characters = True 
     705                else: 
     706                    special_characters = True 
    706707 
    707708            # Spaces, line breaks, and how they are mixed. State machine. 
     
    962963            if ch is None or ch in u'"\\\x85\u2028\u2029\uFEFF' \ 
    963964                    or not (u'\x20' <= ch <= u'\x7E' 
    964                             or (self.allow_unicode and ch > u'\x7F')): 
     965                        or (self.allow_unicode 
     966                            and (u'\xA0' <= ch <= u'\uD7FF' 
     967                                or u'\uE000' <= ch <= u'\uFFFD'))): 
    965968                if start < end: 
    966969                    data = text[start:end] 
  • pyyaml/trunk/lib/yaml/nodes.py

    r136 r153  
    88    def __repr__(self): 
    99        value = self.value 
    10         if isinstance(value, list): 
    11             if len(value) == 0: 
    12                 value = '<empty>' 
    13             elif len(value) == 1: 
    14                 value = '<1 item>' 
    15             else: 
    16                 value = '<%d items>' % len(value) 
    17         else: 
    18             if len(value) > 75: 
    19                 value = repr(value[:70]+u' ... ') 
    20             else: 
    21                 value = repr(value) 
     10        #if isinstance(value, list): 
     11        #    if len(value) == 0: 
     12        #        value = '<empty>' 
     13        #    elif len(value) == 1: 
     14        #        value = '<1 item>' 
     15        #    else: 
     16        #        value = '<%d items>' % len(value) 
     17        #else: 
     18        #    if len(value) > 75: 
     19        #        value = repr(value[:70]+u' ... ') 
     20        #    else: 
     21        #        value = repr(value) 
     22        value = repr(value) 
    2223        return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value) 
    2324 
  • pyyaml/trunk/tests/test_representer.py

    r150 r153  
    77class TestRepresenterTypes(test_appliance.TestAppliance): 
    88 
    9     def _testTypes(self, test_name, data_filename, code_filename): 
     9    def _testTypesUnicode(self, test_name, data_filename, code_filename): 
     10        return self._testTypes(test_name, data_filename, code_filename, allow_unicode=True) 
     11 
     12    def _testTypes(self, test_name, data_filename, code_filename, allow_unicode=False): 
    1013        data1 = eval(file(code_filename, 'rb').read()) 
    1114        data2 = None 
    1215        output = None 
    1316        try: 
    14             output = dump(data1, Dumper=MyDumper) 
     17            output = dump(data1, Dumper=MyDumper, allow_unicode=allow_unicode) 
    1518            data2 = load(output, Loader=MyLoader) 
    1619            self.failUnlessEqual(type(data1), type(data2)) 
     
    4346 
    4447TestRepresenterTypes.add_tests('testTypes', '.data', '.code') 
     48TestRepresenterTypes.add_tests('testTypesUnicode', '.data', '.code') 
    4549 
Note: See TracChangeset for help on using the changeset viewer.