mirror of
https://gitee.com/openharmony/third_party_pyyaml
synced 2024-11-30 13:51:57 +00:00
Fixed a problem with emitting block scalars (thanks to Andrey Somov): no longer emit indentation spaces when they are not needed; emit the correct number of leading breaks for folded scalars; emit the '+' chomping indicator for a single break scalar.
This commit is contained in:
parent
b78e4948ab
commit
6282bda857
@ -1009,25 +1009,22 @@ class Emitter(object):
|
||||
|
||||
def determine_block_hints(self, text):
|
||||
hints = u''
|
||||
if text and text[0] in u' \n\x85\u2028\u2029':
|
||||
hints += unicode(self.best_indent)
|
||||
tail = text[-2:]
|
||||
while len(tail) < 2:
|
||||
tail = u' '+tail
|
||||
if tail[-1] in u'\n\x85\u2028\u2029':
|
||||
if tail[-2] in u'\n\x85\u2028\u2029':
|
||||
if text:
|
||||
if text[0] in u' \n\x85\u2028\u2029':
|
||||
hints += unicode(self.best_indent)
|
||||
if text[-1] not in u'\n\x85\u2028\u2029':
|
||||
hints += u'-'
|
||||
elif len(text) == 1 or text[-2] in u'\n\x85\u2028\u2029':
|
||||
hints += u'+'
|
||||
else:
|
||||
hints += u'-'
|
||||
return hints
|
||||
|
||||
def write_folded(self, text):
|
||||
hints = self.determine_block_hints(text)
|
||||
self.write_indicator(u'>'+hints, True)
|
||||
self.write_indent()
|
||||
leading_space = False
|
||||
self.write_line_break()
|
||||
leading_space = True
|
||||
spaces = False
|
||||
breaks = False
|
||||
breaks = True
|
||||
start = end = 0
|
||||
while end <= len(text):
|
||||
ch = None
|
||||
@ -1075,8 +1072,8 @@ class Emitter(object):
|
||||
def write_literal(self, text):
|
||||
chomp = self.determine_block_hints(text)
|
||||
self.write_indicator(u'|'+chomp, True)
|
||||
self.write_indent()
|
||||
breaks = False
|
||||
self.write_line_break()
|
||||
breaks = True
|
||||
start = end = 0
|
||||
while end <= len(text):
|
||||
ch = None
|
||||
|
Loading…
Reference in New Issue
Block a user