summaryrefslogtreecommitdiff
path: root/scanner.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2018-08-05 12:27:52 +0200
committerAnthon van der Neut <anthon@mnt.org>2018-08-05 12:27:52 +0200
commit06ea5a9886a6abb88b7a81481c6600477088f2c6 (patch)
treec8f72ab953eab349348714b2f5b65ce5356622d6 /scanner.py
parent9b15f5f59e52ce2257a579900d8315cd7d46e4c9 (diff)
downloadruamel.yaml-06ea5a9886a6abb88b7a81481c6600477088f2c6.tar.gz
leading empty lines and comments on root level literal scalars not preserved0.15.49
added test, fixed both now you can have --- !some_tag | # with a comment this is a multi- line literal scalar
Diffstat (limited to 'scanner.py')
-rw-r--r--scanner.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/scanner.py b/scanner.py
index 92fbf52..dd77a12 100644
--- a/scanner.py
+++ b/scanner.py
@@ -1111,7 +1111,8 @@ class Scanner(object):
# Scan the header.
self.reader.forward()
chomping, increment = self.scan_block_scalar_indicators(start_mark)
- self.scan_block_scalar_ignored_line(start_mark)
+ # block scalar comment e.g. : |+ # comment text
+ block_scalar_comment = self.scan_block_scalar_ignored_line(start_mark)
# Determine the indentation level and go to the first non-empty line.
min_indent = self.indent + 1
@@ -1193,6 +1194,8 @@ class Scanner(object):
# We are done.
token = ScalarToken("".join(chunks), False, start_mark, end_mark, style)
+ if block_scalar_comment is not None:
+ token.add_pre_comments([block_scalar_comment])
if len(trailing) > 0:
# print('trailing 1', trailing) # XXXXX
# Eat whitespaces and comments until we reach the next token.
@@ -1261,10 +1264,15 @@ class Scanner(object):
def scan_block_scalar_ignored_line(self, start_mark):
# type: (Any) -> Any
# See the specification for details.
+ prefix = ''
+ comment = None
while self.reader.peek() == ' ':
+ prefix += self.reader.peek()
self.reader.forward()
if self.reader.peek() == '#':
+ comment = prefix
while self.reader.peek() not in _THE_END:
+ comment += self.reader.peek()
self.reader.forward()
ch = self.reader.peek()
if ch not in _THE_END:
@@ -1275,6 +1283,7 @@ class Scanner(object):
self.reader.get_mark(),
)
self.scan_line_break()
+ return comment
def scan_block_scalar_indentation(self):
# type: () -> Any