summaryrefslogtreecommitdiff
path: root/scanner.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2019-05-16 00:31:23 +0200
committerAnthon van der Neut <anthon@mnt.org>2019-05-16 00:31:23 +0200
commitfd003083b6954ec1d5827984abb8ed61de400915 (patch)
tree3cef27f13dd41f9a3c019e06912805245a78f715 /scanner.py
parent399330be1abc4ab510cc4dabe8ff1bb2378dc08f (diff)
downloadruamel.yaml-fd003083b6954ec1d5827984abb8ed61de400915.tar.gz
fix comments on anchored nodes in block sequence0.15.95
fixes issue #288
Diffstat (limited to 'scanner.py')
-rw-r--r--scanner.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/scanner.py b/scanner.py
index 46247f1..9ed711a 100644
--- a/scanner.py
+++ b/scanner.py
@@ -1794,7 +1794,7 @@ class RoundTripScanner(Scanner):
if isinstance(self.tokens[0], CommentToken):
self.tokens_taken += 1
comment = self.tokens.pop(0)
- # print 'dropping2', comment
+ # nprint('dropping2', comment)
comments.append(comment)
if len(comments) >= 1:
self.tokens[0].add_pre_comments(comments)
@@ -1825,6 +1825,26 @@ class RoundTripScanner(Scanner):
):
self.tokens_taken += 1
self.tokens[0].add_post_comment(self.tokens.pop(1))
+ elif (
+ len(self.tokens) > 1
+ and isinstance(self.tokens[0], ScalarToken)
+ and isinstance(self.tokens[1], CommentToken)
+ and self.tokens[0].end_mark.line != self.tokens[1].start_mark.line
+ ):
+ self.tokens_taken += 1
+ c = self.tokens.pop(1)
+ c.value = (
+ '\n' * (c.start_mark.line - self.tokens[0].end_mark.line)
+ + (' ' * c.start_mark.column)
+ + c.value
+ )
+ self.tokens[0].add_post_comment(c)
+ self.fetch_more_tokens()
+ while len(self.tokens) > 1 and isinstance(self.tokens[1], CommentToken):
+ self.tokens_taken += 1
+ c1 = self.tokens.pop(1)
+ c.value = c.value + (' ' * c.start_mark.column) + c1.value
+ self.fetch_more_tokens()
self.tokens_taken += 1
return self.tokens.pop(0)
return None