mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Fixed the whitespace tracking when we escape a newline in a double-quoted string
This commit is contained in:
@@ -31,6 +31,7 @@ namespace YAML
|
|||||||
// Phase #1: scan until line ending
|
// Phase #1: scan until line ending
|
||||||
|
|
||||||
std::size_t lastNonWhitespaceChar = scalar.size();
|
std::size_t lastNonWhitespaceChar = scalar.size();
|
||||||
|
bool escapedNewline = false;
|
||||||
while(!params.end.Matches(INPUT) && !Exp::Break.Matches(INPUT)) {
|
while(!params.end.Matches(INPUT) && !Exp::Break.Matches(INPUT)) {
|
||||||
if(!INPUT)
|
if(!INPUT)
|
||||||
break;
|
break;
|
||||||
@@ -48,10 +49,11 @@ namespace YAML
|
|||||||
|
|
||||||
// escaped newline? (only if we're escaping on slash)
|
// escaped newline? (only if we're escaping on slash)
|
||||||
if(params.escape == '\\' && Exp::EscBreak.Matches(INPUT)) {
|
if(params.escape == '\\' && Exp::EscBreak.Matches(INPUT)) {
|
||||||
int n = Exp::EscBreak.Match(INPUT);
|
// eat escape character and get out (but preserve trailing whitespace!)
|
||||||
INPUT.eat(n);
|
INPUT.get();
|
||||||
lastNonWhitespaceChar = scalar.size();
|
lastNonWhitespaceChar = scalar.size();
|
||||||
continue;
|
escapedNewline = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// escape this?
|
// escape this?
|
||||||
@@ -149,7 +151,7 @@ namespace YAML
|
|||||||
case FOLD_FLOW:
|
case FOLD_FLOW:
|
||||||
if(nextEmptyLine)
|
if(nextEmptyLine)
|
||||||
scalar += "\n";
|
scalar += "\n";
|
||||||
else if(!emptyLine && !nextEmptyLine)
|
else if(!emptyLine && !nextEmptyLine && !escapedNewline)
|
||||||
scalar += " ";
|
scalar += " ";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user