Version 1
[yaffs-website] / vendor / symfony / config / Definition / Builder / NormalizationBuilder.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\Config\Definition\Builder;
13
14 /**
15  * This class builds normalization conditions.
16  *
17  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
18  */
19 class NormalizationBuilder
20 {
21     protected $node;
22     public $before = array();
23     public $remappings = array();
24
25     /**
26      * Constructor.
27      *
28      * @param NodeDefinition $node The related node
29      */
30     public function __construct(NodeDefinition $node)
31     {
32         $this->node = $node;
33     }
34
35     /**
36      * Registers a key to remap to its plural form.
37      *
38      * @param string $key    The key to remap
39      * @param string $plural The plural of the key in case of irregular plural
40      *
41      * @return $this
42      */
43     public function remap($key, $plural = null)
44     {
45         $this->remappings[] = array($key, null === $plural ? $key.'s' : $plural);
46
47         return $this;
48     }
49
50     /**
51      * Registers a closure to run before the normalization or an expression builder to build it if null is provided.
52      *
53      * @param \Closure $closure
54      *
55      * @return ExprBuilder|$this
56      */
57     public function before(\Closure $closure = null)
58     {
59         if (null !== $closure) {
60             $this->before[] = $closure;
61
62             return $this;
63         }
64
65         return $this->before[] = new ExprBuilder($this->node);
66     }
67 }