From a6d94c1b53e105732add1b0b4fad949dbaf11113 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Tue, 31 Jan 2017 12:07:40 +0100 Subject: [PATCH 1/3] [Yaml] Allow dumping empty array as YAML sequence --- src/Symfony/Component/Yaml/CHANGELOG.md | 9 +++++++++ src/Symfony/Component/Yaml/Inline.php | 2 +- .../Component/Yaml/Tests/DumperTest.php | 18 ++++++++++++++++++ src/Symfony/Component/Yaml/Yaml.php | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Yaml/CHANGELOG.md b/src/Symfony/Component/Yaml/CHANGELOG.md index 45c331f986962..e80d4973cb429 100644 --- a/src/Symfony/Component/Yaml/CHANGELOG.md +++ b/src/Symfony/Component/Yaml/CHANGELOG.md @@ -1,6 +1,15 @@ CHANGELOG ========= +3.2.3 +----- + + * Added support for dumping empty PHP arrays as YAML sequences: + + ```php + Yaml::dump([], 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE); + ``` + 3.2.0 ----- diff --git a/src/Symfony/Component/Yaml/Inline.php b/src/Symfony/Component/Yaml/Inline.php index c82c45b303be1..3278ed22854f1 100644 --- a/src/Symfony/Component/Yaml/Inline.php +++ b/src/Symfony/Component/Yaml/Inline.php @@ -252,7 +252,7 @@ public static function isHash(array $value) private static function dumpArray($value, $flags) { // array - if ($value && !self::isHash($value)) { + if (($value || Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE & $flags) && !self::isHash($value)) { $output = array(); foreach ($value as $val) { $output[] = self::dump($val, $flags); diff --git a/src/Symfony/Component/Yaml/Tests/DumperTest.php b/src/Symfony/Component/Yaml/Tests/DumperTest.php index 06e9d3f5c38a9..b46261f581667 100644 --- a/src/Symfony/Component/Yaml/Tests/DumperTest.php +++ b/src/Symfony/Component/Yaml/Tests/DumperTest.php @@ -246,6 +246,24 @@ public function testObjectSupportDisabledWithExceptionsPassingTrue() $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, true); } + public function testEmptyArray() + { + $dump = $this->dumper->dump(array()); + $this->assertEquals('{ }', $dump); + + $dump = $this->dumper->dump(array(), 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE); + $this->assertEquals('[]', $dump); + + $dump = $this->dumper->dump(array(), 9, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE); + $this->assertEquals('[]', $dump); + + $dump = $this->dumper->dump(new \ArrayObject(), 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE | Yaml::DUMP_OBJECT_AS_MAP); + $this->assertEquals('[]', $dump); + + $dump = $this->dumper->dump(new \stdClass(), 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE | Yaml::DUMP_OBJECT_AS_MAP); + $this->assertEquals('[]', $dump); + } + /** * @dataProvider getEscapeSequences */ diff --git a/src/Symfony/Component/Yaml/Yaml.php b/src/Symfony/Component/Yaml/Yaml.php index 46e6ef5c17a83..611ae91a61634 100644 --- a/src/Symfony/Component/Yaml/Yaml.php +++ b/src/Symfony/Component/Yaml/Yaml.php @@ -29,6 +29,7 @@ class Yaml const DUMP_OBJECT_AS_MAP = 64; const DUMP_MULTI_LINE_LITERAL_BLOCK = 128; const PARSE_CONSTANT = 256; + const DUMP_EMPTY_ARRAY_AS_SEQUENCE = 512; /** * Parses YAML into a PHP value. From af7067c3cf9f2853bbf2d408d5e87f1bfd4c718f Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Tue, 31 Jan 2017 14:59:05 +0100 Subject: [PATCH 2/3] Dump empty object as mapping --- src/Symfony/Component/Yaml/Inline.php | 2 +- src/Symfony/Component/Yaml/Tests/DumperTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Yaml/Inline.php b/src/Symfony/Component/Yaml/Inline.php index 3278ed22854f1..30935e53f9f1c 100644 --- a/src/Symfony/Component/Yaml/Inline.php +++ b/src/Symfony/Component/Yaml/Inline.php @@ -164,7 +164,7 @@ public static function dump($value, $flags = 0) } if (Yaml::DUMP_OBJECT_AS_MAP & $flags && ($value instanceof \stdClass || $value instanceof \ArrayObject)) { - return self::dumpArray((array) $value, $flags); + return self::dumpArray((array) $value, $flags & ~Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE); } if (Yaml::DUMP_EXCEPTION_ON_INVALID_TYPE & $flags) { diff --git a/src/Symfony/Component/Yaml/Tests/DumperTest.php b/src/Symfony/Component/Yaml/Tests/DumperTest.php index b46261f581667..9306a1b858ca8 100644 --- a/src/Symfony/Component/Yaml/Tests/DumperTest.php +++ b/src/Symfony/Component/Yaml/Tests/DumperTest.php @@ -258,10 +258,10 @@ public function testEmptyArray() $this->assertEquals('[]', $dump); $dump = $this->dumper->dump(new \ArrayObject(), 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE | Yaml::DUMP_OBJECT_AS_MAP); - $this->assertEquals('[]', $dump); + $this->assertEquals('{ }', $dump); $dump = $this->dumper->dump(new \stdClass(), 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE | Yaml::DUMP_OBJECT_AS_MAP); - $this->assertEquals('[]', $dump); + $this->assertEquals('{ }', $dump); } /** From 87ffaf2b77543a18ba288e53ea5ea62fa48c23e7 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Fri, 17 Feb 2017 08:57:20 +0100 Subject: [PATCH 3/3] Bump version number --- src/Symfony/Component/Yaml/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Yaml/CHANGELOG.md b/src/Symfony/Component/Yaml/CHANGELOG.md index e80d4973cb429..9cc639e3f7162 100644 --- a/src/Symfony/Component/Yaml/CHANGELOG.md +++ b/src/Symfony/Component/Yaml/CHANGELOG.md @@ -1,7 +1,7 @@ CHANGELOG ========= -3.2.3 +3.3.0 ----- * Added support for dumping empty PHP arrays as YAML sequences: pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy