8000 don't split lines on carriage returns when dumping · symfony/symfony@845eb88 · GitHub
[go: up one dir, main page]

Skip to content

Commit 845eb88

Browse files
committed
don't split lines on carriage returns when dumping
1 parent aae7998 commit 845eb88

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

src/Symfony/Component/Yaml/Dumper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public function dump($input, $inline = 0, $indent = 0, $flags = 0)
9595
$dumpAsMap = Inline::isHash($input);
9696

9797
foreach ($input as $key => $value) {
98-
if ($inline >= 1 && Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK & $flags && is_string($value) && false !== strpos($value, "\n")) {
98+
if ($inline >= 1 && Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK & $flags && is_string($value) && false !== strpos($value, "\n") && false === strpos($value, "\r\n")) {
9999
$output .= sprintf("%s%s%s |\n", $prefix, $dumpAsMap ? Inline::dump($key, $flags).':' : '-', '');
100100

101101
foreach (preg_split('/\n|\r\n/', $value) as $row) {

src/Symfony/Component/Yaml/Tests/DumperTest.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,8 @@ public function testDumpMultiLineStringAsScalarBlock()
443443
$data = array(
444444
'data' => array(
445445
'single_line' => 'foo bar baz',
446-
'multi_line' => "foo\nline with trailing spaces:\n \nbar\r\ninteger like line:\n123456789\nempty line:\n\nbaz",
446+
'multi_line' => "foo\nline with trailing spaces:\n \nbar\ninteger like line:\n123456789\nempty line:\n\nbaz",
447+
'multi_line_with_carriage_return' => "foo\nbar\r\nbaz",
447448
'nested_inlined_multi_line_string' => array(
448449
'inlined_multi_line' => "foo\nbar\r\nempty line:\n\nbaz",
449450
),
@@ -453,6 +454,11 @@ public function testDumpMultiLineStringAsScalarBlock()
453454
$this->assertSame(file_get_contents(__DIR__.'/Fixtures/multiple_lines_as_literal_block.yml'), $this->dumper->dump($data, 2, 0, Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK));
454455
}
455456

457+
public function testCarriageReturnIsMaintainedWhenDumpingAsMultiLineLiteralBlock()
458+
{
459+
$this->assertSame("- \"a\\r\\nb\\nc\"\n", $this->dumper->dump(array("a\r\nb\nc"), 2, 0, Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK));
460+
}
461+
456462
/**
457463
* @expectedException \InvalidArgumentException
458464
* @expectedExceptionMessage The indentation must be greater than zero

src/Symfony/Component/Yaml/Tests/Fixtures/multiple_lines_as_literal_block.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ data:
1010
empty line:
1111
1212
baz
13+
multi_line_with_carriage_return: "foo\nbar\r\nbaz"
1314
nested_inlined_multi_line_string: { inlined_multi_line: "foo\nbar\r\nempty line:\n\nbaz" }

0 commit comments

Comments
 (0)
0