Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Component/Serialization/YamlSymfony.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Component/Serialization/YamlSymfony.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,51 @@ +<?php + +namespace Drupal\Component\Serialization; + +use Drupal\Component\Serialization\Exception\InvalidDataTypeException; +use Symfony\Component\Yaml\Parser; +use Symfony\Component\Yaml\Dumper; +use Symfony\Component\Yaml\Yaml as SymfonyYaml; + +/** + * Default serialization for YAML using the Symfony component. + */ +class YamlSymfony implements SerializationInterface { + + /** + * {@inheritdoc} + */ + public static function encode($data) { + try { + // Set the indentation to 2 to match Drupal's coding standards. + $yaml = new Dumper(2); + return $yaml->dump($data, PHP_INT_MAX, 0, SymfonyYaml::DUMP_EXCEPTION_ON_INVALID_TYPE); + } + catch (\Exception $e) { + throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e); + } + } + + /** + * {@inheritdoc} + */ + public static function decode($raw) { + try { + $yaml = new Parser(); + // Make sure we have a single trailing newline. A very simple config like + // 'foo: bar' with no newline will fail to parse otherwise. + return $yaml->parse($raw, SymfonyYaml::PARSE_EXCEPTION_ON_INVALID_TYPE); + } + catch (\Exception $e) { + throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e); + } + } + + /** + * {@inheritdoc} + */ + public static function getFileExtension() { + return 'yml'; + } + +}