123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?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';
- }
- }
|