Completed
Push — master ( dfe684...c4d587 )
by WEBEWEB
06:45
created

AbstractJQueryInputMaskTwigExtension   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 3
dl 0
loc 65
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getRenderer() 0 3 1
A jQueryInputMask() 0 14 2
A setRenderer() 0 4 1
1
<?php
2
3
/**
4
 * This file is part of the core-bundle package.
5
 *
6
 * (c) 2018 WEBEWEB
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 WBW\Bundle\CoreBundle\Twig\Extension\Plugin;
13
14
use Twig_Environment;
15
use WBW\Bundle\CoreBundle\Twig\Extension\AbstractTwigExtension;
16
use WBW\Bundle\CoreBundle\Twig\Extension\RendererTwigExtension;
17
use WBW\Library\Core\Argument\StringHelper;
18
19
/**
20
 * Abstract jQuery input mask Twig extension.
21
 *
22
 * @author webeweb <https://github.com/webeweb/>
23
 * @package WBW\Bundle\Core\Twig\Extension\Plugin
24
 * @abstract
25
 */
26
abstract class AbstractJQueryInputMaskTwigExtension extends AbstractTwigExtension {
27
28
    /**
29
     * Renderer.
30
     *
31
     * @var RendererTwigExtension
32
     */
33
    private $renderer;
34
35
    /**
36
     * Constructor.
37
     *
38
     * @param Twig_Environment $twigEnvironment The twig environment.
39
     * @param RendererTwigExtension $renderer The renderer.
40
     */
41
    protected function __construct(Twig_Environment $twigEnvironment, RendererTwigExtension $renderer) {
42
        parent::__construct($twigEnvironment);
43
        $this->setRenderer($renderer);
44
    }
45
46
    /**
47
     * Get the renderer.
48
     *
49
     * @return RendererTwigExtension Returns the renderer.
50
     */
51
    public function getRenderer() {
52
        return $this->renderer;
53
    }
54
55
    /**
56
     * Displays a jQuery input mask.
57
     *
58
     * @param string $selector The selector.
59
     * @param string $mask The mask.
60
     * @param array $options The options.
61
     * @param bool $scriptTag Script tag ?
62
     * @return string Returns the jQuery input mask.
63
     */
64
    protected function jQueryInputMask($selector, $mask, array $options, $scriptTag) {
65
66
        // Initialize the template.
67
        $template = "$('%selector%').inputmask(\"%mask%\",%arguments%);";
68
69
        // Initialize the parameters.
70
        $innerHTML = StringHelper::replace($template, ["%selector%", "%mask%", "%arguments%"], [$selector, $mask, json_encode($options)]);
71
72
        // Return the HTML
73
        if (true === $scriptTag) {
74
            return $this->getRenderer()->coreScriptFilter($innerHTML);
75
        }
76
        return $innerHTML;
77
    }
78
79
    /**
80
     * Set the renderer.
81
     *
82
     * @param RendererTwigExtension $renderer The renderer.
83
     * @return AbstractJQueryInputMaskTwigExtension Returns this jQuery Twig extension.
84
     */
85
    protected function setRenderer(RendererTwigExtension $renderer) {
86
        $this->renderer = $renderer;
87
        return $this;
88
    }
89
90
}
91