Changeset 153
- Timestamp:
- 05/06/06 18:09:50 (2 years ago)
- Files:
-
- pyyaml/trunk/lib/yaml/__init__.py (modified) (1 diff)
- pyyaml/trunk/lib/yaml/emitter.py (modified) (2 diffs)
- pyyaml/trunk/lib/yaml/nodes.py (modified) (1 diff)
- pyyaml/trunk/tests/data/emitting-unacceptable-unicode-character-bug.code (added)
- pyyaml/trunk/tests/data/emitting-unacceptable-unicode-character-bug.data (added)
- pyyaml/trunk/tests/test_representer.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pyyaml/trunk/lib/yaml/__init__.py
r152 r153 188 188 return dump_all([data], stream, Dumper=SafeDumper, **kwds) 189 189 190 def add_implicit_ detector(tag, regexp, first=None,190 def add_implicit_resolver(tag, regexp, first=None, 191 191 Loader=Loader, Dumper=Dumper): 192 192 """ pyyaml/trunk/lib/yaml/emitter.py
r143 r153 698 698 line_breaks = True 699 699 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': 703 702 unicode_characters = True 704 703 if not self.allow_unicode: 705 704 special_characters = True 705 else: 706 special_characters = True 706 707 707 708 # Spaces, line breaks, and how they are mixed. State machine. … … 962 963 if ch is None or ch in u'"\\\x85\u2028\u2029\uFEFF' \ 963 964 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'))): 965 968 if start < end: 966 969 data = text[start:end] pyyaml/trunk/lib/yaml/nodes.py
r136 r153 8 8 def __repr__(self): 9 9 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) 22 23 return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value) 23 24 pyyaml/trunk/tests/test_representer.py
r150 r153 7 7 class TestRepresenterTypes(test_appliance.TestAppliance): 8 8 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): 10 13 data1 = eval(file(code_filename, 'rb').read()) 11 14 data2 = None 12 15 output = None 13 16 try: 14 output = dump(data1, Dumper=MyDumper )17 output = dump(data1, Dumper=MyDumper, allow_unicode=allow_unicode) 15 18 data2 = load(output, Loader=MyLoader) 16 19 self.failUnlessEqual(type(data1), type(data2)) … … 43 46 44 47 TestRepresenterTypes.add_tests('testTypes', '.data', '.code') 48 TestRepresenterTypes.add_tests('testTypesUnicode', '.data', '.code') 45 49
