Security update for Core, with self-updated composer
[yaffs-website] / vendor / symfony / serializer / Encoder / YamlEncoder.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\Serializer\Encoder;
13
14 use Symfony\Component\Yaml\Dumper;
15 use Symfony\Component\Yaml\Parser;
16
17 /**
18  * Encodes YAML data.
19  *
20  * @author Kévin Dunglas <dunglas@gmail.com>
21  */
22 class YamlEncoder implements EncoderInterface, DecoderInterface
23 {
24     const FORMAT = 'yaml';
25
26     private $dumper;
27     private $parser;
28     private $defaultContext = array('yaml_inline' => 0, 'yaml_indent' => 0, 'yaml_flags' => 0);
29
30     public function __construct(Dumper $dumper = null, Parser $parser = null, array $defaultContext = array())
31     {
32         $this->dumper = $dumper ?: new Dumper();
33         $this->parser = $parser ?: new Parser();
34         $this->defaultContext = array_merge($this->defaultContext, $defaultContext);
35     }
36
37     /**
38      * {@inheritdoc}
39      */
40     public function encode($data, $format, array $context = array())
41     {
42         $context = array_merge($this->defaultContext, $context);
43
44         return $this->dumper->dump($data, $context['yaml_inline'], $context['yaml_indent'], $context['yaml_flags']);
45     }
46
47     /**
48      * {@inheritdoc}
49      */
50     public function supportsEncoding($format)
51     {
52         return self::FORMAT === $format;
53     }
54
55     /**
56      * {@inheritdoc}
57      */
58     public function decode($data, $format, array $context = array())
59     {
60         $context = array_merge($this->defaultContext, $context);
61
62         return $this->parser->parse($data, $context['yaml_flags']);
63     }
64
65     /**
66      * {@inheritdoc}
67      */
68     public function supportsDecoding($format)
69     {
70         return self::FORMAT === $format;
71     }
72 }