Ignore:
Timestamp:
04/10/06 20:34:16 (8 years ago)
Author:
xi
Message:

Implement yaml.dump().

File:
1 edited

Legend:

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

    r132 r133  
    7777        # Formatting details. 
    7878        self.canonical = False 
     79        self.allow_unicode = False 
    7980        self.best_line_break = u'\n' 
    8081        self.best_indent = 2 
     
    141142            self.encoding = self.event.encoding 
    142143            self.canonical = self.event.canonical 
     144            self.allow_unicode = self.event.allow_unicode 
    143145            if self.event.indent and self.event.indent > 1: 
    144146                self.best_indent = self.event.indent 
     
    622624                    if followed_by_space or last: 
    623625                        contains_block_indicator = True 
    624                 if ch == u'-' and followed_by_space or last: 
     626                if ch == u'-' and (followed_by_space or last): 
    625627                    contains_flow_indicator = True 
    626628                    contains_block_indicator = True 
     
    632634                    if followed_by_space or last: 
    633635                        contains_block_indicator = True 
    634                 if ch == u'#' and preceeded_by_space: 
     636                if ch == u'#' and (preceeded_by_space or first): 
    635637                    contains_flow_indicator = True 
    636638                    contains_block_indicator = True 
     
    641643                    contains_special_characters = True 
    642644                else: 
    643                     contains_special_characters = True 
    644                     # TODO: We need an option to allow unescaped unicode 
    645                     # characters. 
    646645                    contains_unicode_characters = True 
    647646            if ch == u' ': 
     
    692691            followed_by_space = (index+1 < len(scalar) and 
    693692                    scalar[index+1] in u'\0 \t\r\n\x85\u2028\u2029') 
     693        if contains_unicode_characters and not self.allow_unicode: 
     694            contains_special_characters = True 
    694695        allow_flow_plain = not (contains_flow_indicator or contains_special_characters 
    695696            or contains_leading_spaces or contains_leading_breaks 
     
    854855            if end < len(text): 
    855856                ch = text[end] 
    856             if ch is None or not (u'\x20' <= ch <= u'\x7E') or ch in u'"\\': 
     857            if ch is None or ch in u'"\\'   \ 
     858                    or not (u'\x20' <= ch <= u'\x7E' 
     859                            or (self.allow_unicode and ch > u'\x7F' 
     860                                and ch not in u'\x85\u2028\u2029')): 
    857861                if start < end: 
    858862                    data = text[start:end] 
Note: See TracChangeset for help on using the changeset viewer.