@@ -384,6 +384,7 @@ private function doParse($value, $flags)
384
384
if (0 === $ this ->currentLineNb ) {
385
385
$ parseError = false ;
386
386
$ previousLineWasNewline = false ;
387
+ $ previousLineWasTerminatedWithBackslash = false ;
387
388
$ value = '' ;
388
389
389
390
foreach ($ this ->lines as $ line ) {
@@ -401,13 +402,25 @@ private function doParse($value, $flags)
401
402
402
403
if ('' === trim ($ parsedLine )) {
403
404
$ value .= "\n" ;
404
- $ previousLineWasNewline = true ;
405
- } elseif ($ previousLineWasNewline ) {
405
+ } elseif (!$ previousLineWasNewline && !$ previousLineWasTerminatedWithBackslash ) {
406
+ $ value .= ' ' ;
407
+ }
408
+
409
+ if ('' !== trim ($ parsedLine ) && '\\' === substr ($ parsedLine , -1 )) {
410
+ $ value .= ltrim (substr ($ parsedLine , 0 , -1 ));
411
+ } elseif ('' !== trim ($ parsedLine )) {
406
412
$ value .= trim ($ parsedLine );
413
+ }
414
+
415
+ if ('' === trim ($ parsedLine )) {
416
+ $ previousLineWasNewline = true;
417
+ $ previousLineWasTerminatedWithBackslash = false ;
418
+ } elseif ('\\' === substr ($ parsedLine , -1 )) {
407
419
$ previousLineWasNewline = false ;
420
+ $ previousLineWasTerminatedWithBackslash = true ;
408
421
} else {
409
- $ value .= ' ' .trim ($ parsedLine );
410
422
$ previousLineWasNewline = false ;
423
+ $ previousLineWasTerminatedWithBackslash = false ;
411
424
}
412
425
} catch (ParseException $ e ) {
413
426
$ parseError = true ;
@@ -416,7 +429,7 @@ private function doParse($value, $flags)
416
429
}
417
430
418
431
if (!$ parseError ) {
419
- return trim ($ value );
432
+ return Inline:: parse ( trim ($ value) );
420
433
}
421
434
}
422
435
0 commit comments