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