Commit c3f222e4 authored by jbeder's avatar jbeder
Browse files

Fixed the whitespace tracking when we escape a newline in a double-quoted string

parent e8beb6c9
...@@ -31,6 +31,7 @@ namespace YAML ...@@ -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 ...@@ -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 ...@@ -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;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment