efe3039df76497af4bbe5e634047b8059ccc2e93
[yaffs-website] / web / core / lib / Drupal / Component / Serialization / YamlSymfony.php
1 <?php
2
3 namespace Drupal\Component\Serialization;
4
5 use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
6 use Symfony\Component\Yaml\Parser;
7 use Symfony\Component\Yaml\Dumper;
8 use Symfony\Component\Yaml\Yaml as SymfonyYaml;
9
10 /**
11  * Default serialization for YAML using the Symfony component.
12  */
13 class YamlSymfony implements SerializationInterface {
14
15   /**
16    * {@inheritdoc}
17    */
18   public static function encode($data) {
19     try {
20       // Set the indentation to 2 to match Drupal's coding standards.
21       $yaml = new Dumper(2);
22       return $yaml->dump($data, PHP_INT_MAX, 0, SymfonyYaml::DUMP_EXCEPTION_ON_INVALID_TYPE);
23     }
24     catch (\Exception $e) {
25       throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
26     }
27   }
28
29   /**
30    * {@inheritdoc}
31    */
32   public static function decode($raw) {
33     try {
34       $yaml = new Parser();
35       // Make sure we have a single trailing newline. A very simple config like
36       // 'foo: bar' with no newline will fail to parse otherwise.
37       return $yaml->parse($raw, SymfonyYaml::PARSE_EXCEPTION_ON_INVALID_TYPE | SymfonyYaml::PARSE_KEYS_AS_STRINGS);
38     }
39     catch (\Exception $e) {
40       throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
41     }
42   }
43
44   /**
45    * {@inheritdoc}
46    */
47   public static function getFileExtension() {
48     return 'yml';
49   }
50
51 }