From 749c11d94c4dec65cafcfd7b19552e74e4667a01 Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Tue, 23 Jul 2019 08:41:15 +0200 Subject: [PATCH] [Yaml] Add flag to dump NULL as ~ --- src/Symfony/Component/Yaml/CHANGELOG.md | 5 +++++ src/Symfony/Component/Yaml/Inline.php | 17 ++++++++++++++--- src/Symfony/Component/Yaml/Tests/DumperTest.php | 5 +++++ src/Symfony/Component/Yaml/Yaml.php | 1 + 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Yaml/CHANGELOG.md b/src/Symfony/Component/Yaml/CHANGELOG.md index 1bc5561ba3db8..51e358b6bbfda 100644 --- a/src/Symfony/Component/Yaml/CHANGELOG.md +++ b/src/Symfony/Component/Yaml/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +4.4.0 +----- + + * Added support to dump `null` as `~` by using the `Yaml::DUMP_NULL_AS_TILDE` flag. + 4.3.0 ----- diff --git a/src/Symfony/Component/Yaml/Inline.php b/src/Symfony/Component/Yaml/Inline.php index 4b12b9b11a9ba..c028ccf071740 100644 --- a/src/Symfony/Component/Yaml/Inline.php +++ b/src/Symfony/Component/Yaml/Inline.php @@ -33,6 +33,7 @@ class Inline private static $objectSupport = false; private static $objectForMap = false; private static $constantSupport = false; + private static $nullAsTilde = false; /** * @param int $flags @@ -45,6 +46,7 @@ public static function initialize($flags, $parsedLineNumber = null, $parsedFilen self::$objectSupport = (bool) (Yaml::PARSE_OBJECT & $flags); self::$objectForMap = (bool) (Yaml::PARSE_OBJECT_FOR_MAP & $flags); self::$constantSupport = (bool) (Yaml::PARSE_CONSTANT & $flags); + self::$nullAsTilde = (bool) (Yaml::DUMP_NULL_AS_TILDE & $flags); self::$parsedFilename = $parsedFilename; if (null !== $parsedLineNumber) { @@ -129,7 +131,7 @@ public static function dump($value, int $flags = 0): string throw new DumpException(sprintf('Unable to dump PHP resources in a YAML file ("%s").', get_resource_type($value))); } - return 'null'; + return self::dumpNull($flags); case $value instanceof \DateTimeInterface: return $value->format('c'); case \is_object($value): @@ -155,11 +157,11 @@ public static function dump($value, int $flags = 0): string throw new DumpException('Object support when dumping a YAML file has been disabled.'); } - return 'null'; + return self::dumpNull($flags); case \is_array($value): return self::dumpArray($value, $flags); case null === $value: - return 'null'; + return self::dumpNull($flags); case true === $value: return 'true'; case false === $value: @@ -256,6 +258,15 @@ private static function dumpArray(array $value, int $flags): string return sprintf('{ %s }', implode(', ', $output)); } + private static function dumpNull(int $flags): string + { + if (Yaml::DUMP_NULL_AS_TILDE & $flags) { + return '~'; + } + + return 'null'; + } + /** * Parses a YAML scalar. * diff --git a/src/Symfony/Component/Yaml/Tests/DumperTest.php b/src/Symfony/Component/Yaml/Tests/DumperTest.php index 24d956b09bb1d..d83733801d8f3 100644 --- a/src/Symfony/Component/Yaml/Tests/DumperTest.php +++ b/src/Symfony/Component/Yaml/Tests/DumperTest.php @@ -513,6 +513,11 @@ public function testNegativeIndentationThrowsException() { new Dumper(-4); } + + public function testDumpNullAsTilde() + { + $this->assertSame('{ foo: ~ }', $this->dumper->dump(['foo' => null], 0, 0, Yaml::DUMP_NULL_AS_TILDE)); + } } class A diff --git a/src/Symfony/Component/Yaml/Yaml.php b/src/Symfony/Component/Yaml/Yaml.php index 94a5e4ad7d7d4..4efceb3e25912 100644 --- a/src/Symfony/Component/Yaml/Yaml.php +++ b/src/Symfony/Component/Yaml/Yaml.php @@ -33,6 +33,7 @@ class Yaml const PARSE_CONSTANT = 256; const PARSE_CUSTOM_TAGS = 512; const DUMP_EMPTY_ARRAY_AS_SEQUENCE = 1024; + const DUMP_NULL_AS_TILDE = 2048; /** * Parses a YAML file into a PHP value. 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