Commits

Kirill Simonov committed 9fafc1c

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.

Comments (0)

Files changed (1)

lib/yaml/emitter.py

 
     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
     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
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.