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;
23: public $remappings;
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: $this->keys = false;
34: $this->remappings = array();
35: $this->before = array();
36: }
37:
38: /**
39: * Registers a key to remap to its plural form.
40: *
41: * @param string $key The key to remap
42: * @param string $plural The plural of the key in case of irregular plural
43: *
44: * @return NormalizationBuilder
45: */
46: public function remap($key, $plural = null)
47: {
48: $this->remappings[] = array($key, null === $plural ? $key.'s' : $plural);
49:
50: return $this;
51: }
52:
53: /**
54: * Registers a closure to run before the normalization or an expression builder to build it if null is provided.
55: *
56: * @param \Closure $closure
57: *
58: * @return ExprBuilder|NormalizationBuilder
59: */
60: public function before(\Closure $closure = null)
61: {
62: if (null !== $closure) {
63: $this->before[] = $closure;
64:
65: return $this;
66: }
67:
68: return $this->before[] = new ExprBuilder($this->node);
69: }
70: }
71: