diff options
author | xi <xi@18f92427-320e-0410-9341-c67f048884a3> | 2006-04-12 22:26:41 +0000 |
---|---|---|
committer | xi <xi@18f92427-320e-0410-9341-c67f048884a3> | 2006-04-12 22:26:41 +0000 |
commit | 5b3ffc5848ec0b8c5555fc66e6f67b9baab4739a (patch) | |
tree | fb4fff27a2574aa992a8b6a81b6c7e46f7b95211 | |
parent | c2522283bae63cbde4350067ef3636cbe3c6bc74 (diff) | |
download | pyyaml-5b3ffc5848ec0b8c5555fc66e6f67b9baab4739a.tar.gz |
Fix allow_unicode (ticket:3).
git-svn-id: http://svn.pyyaml.org/pyyaml/trunk@135 18f92427-320e-0410-9341-c67f048884a3
-rw-r--r-- | lib/yaml/__init__.py | 4 | ||||
-rw-r--r-- | lib/yaml/representer.py | 17 | ||||
-rw-r--r-- | lib/yaml/serializer.py | 2 |
3 files changed, 14 insertions, 9 deletions
diff --git a/lib/yaml/__init__.py b/lib/yaml/__init__.py index 6097345..e6a3526 100644 --- a/lib/yaml/__init__.py +++ b/lib/yaml/__init__.py @@ -67,7 +67,7 @@ def emit(events, writer=None, Emitter=Emitter): def dump_all(natives, writer=None, Emitter=Emitter, Serializer=Serializer, Representer=Representer, - encoding=None, line_break=None, canonical=None, + encoding='utf-8', line_break=None, canonical=None, indent=None, width=None, allow_unicode=None): if writer is None: try: @@ -91,7 +91,7 @@ def dump_all(natives, writer=None, Emitter=Emitter, def safe_dump_all(natives, writer=None, Emitter=Emitter, Serializer=Serializer, Representer=SafeRepresenter, - encoding=None, line_break=None, canonical=None, + encoding='utf-8', line_break=None, canonical=None, indent=None, width=None, allow_unicode=None): return dump_all(natives, writer, Emitter, Serializer, Representer, encoding, line_break, canonical, indent, width, allow_unicode) diff --git a/lib/yaml/representer.py b/lib/yaml/representer.py index caf06c6..6fe74fc 100644 --- a/lib/yaml/representer.py +++ b/lib/yaml/representer.py @@ -119,14 +119,19 @@ class SafeRepresenter(Detector, BaseRepresenter): u'null') def represent_str(self, native): + encoding = None try: - native.encode('ascii') - ascii = True - except (UnicodeDecodeError, UnicodeEncodeError): - ascii = False - if ascii: + unicode(native, 'ascii') + encoding = 'ascii' + except UnicodeDecodeError: + try: + unicode(native, 'utf-8') + encoding = 'utf-8' + except UnicodeDecodeError: + pass + if encoding: return self.represent_scalar(u'tag:yaml.org,2002:str', - unicode(native, 'ascii')) + unicode(native, encoding)) else: return self.represent_scalar(u'tag:yaml.org,2002:binary', unicode(native.encode('base64')), style='|') diff --git a/lib/yaml/serializer.py b/lib/yaml/serializer.py index 6a5aafc..5807a3a 100644 --- a/lib/yaml/serializer.py +++ b/lib/yaml/serializer.py @@ -19,7 +19,7 @@ class Serializer: self.anchors = {} self.last_anchor_id = 0 self.closed = None - self.open(encoding, line_break, canonical, indent, width) + self.open(encoding, line_break, canonical, indent, width, allow_unicode) def open(self, encoding=None, line_break=None, canonical=None, indent=None, width=None, allow_unicode=None): |