Completed
Pull Request — 2.x (#43)
by jake
02:49 queued 50s
created

HelperLocatorFactory   C

Complexity

Total Complexity 3

Size/Duplication

Total Lines 101
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 23

Test Coverage

Coverage 33.33%

Importance

Changes 10
Bugs 0 Features 5
Metric Value
wmc 3
c 10
b 0
f 5
lcom 1
cbo 23
dl 0
loc 101
ccs 4
cts 12
cp 0.3333
rs 5.5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
B newInstance() 0 27 1
B newInputInstance() 0 31 1
1
<?php
2
/**
3
 *
4
 * This file is part of Aura for PHP.
5
 *
6
 * @license http://opensource.org/licenses/bsd-license.php BSD
7
 *
8
 */
9
namespace Aura\Html;
10
11
use Aura\Html\Helper;
12
use Aura\Html\Escaper;
13
14
/**
15
 *
16
 * Factory to create a HelperLocator object with all helpers.
17
 *
18
 * @package Aura.Html
19
 *
20
 */
21
class HelperLocatorFactory
22
{
23
    /**
24
     *
25
     * The Escaper for the helpers.
26
     *
27
     * @var Escaper
28
     *
29
     */
30
    protected $escaper;
31
32
    /**
33
     *
34
     * Constructor.
35
     *
36
     * @param string $encoding The encoding for the escapers.
37
     *
38
     * @param int $flags The `htmlspecialchars()` flags for the escapers.
39
     *
40
     */
41
    public function __construct($encoding = null, $flags = null)
42
    {
43
        $escaper_factory = new EscaperFactory($encoding, $flags);
44
        $this->escaper = $escaper_factory->newInstance();
45
        Escaper::setStatic($this->escaper);
46
    }
47
48
    /**
49
     *
50
     * Returns a new HelperLocator with all helpers.
51
     *
52
     * @return HelperLocator
53
     *
54
     */
55 1
    public function newInstance()
56
    {
57 1
        $escaper = $this->escaper;
58
        $input = $this->newInputInstance();
59
        return new HelperLocator(array(
60
            'a'                 => function () use ($escaper) { return new Helper\Anchor($escaper); },
61
            'anchor'            => function () use ($escaper) { return new Helper\Anchor($escaper); },
62
            'aRaw'              => function () use ($escaper) { return new Helper\AnchorRaw($escaper); },
63
            'anchorRaw'         => function () use ($escaper) { return new Helper\AnchorRaw($escaper); },
64
            'base'              => function () use ($escaper) { return new Helper\Base($escaper); },
65
            'escape'            => function () use ($escaper) { return $escaper; },
66
            'form'              => function () use ($escaper) { return new Helper\Form($escaper); },
67
            'img'               => function () use ($escaper) { return new Helper\Img($escaper); },
68
            'image'             => function () use ($escaper) { return new Helper\Img($escaper); },
69
            'input'             => function () use ($input)   { return $input; },
70
            'label'             => function () use ($escaper) { return new Helper\Label($escaper); },
71
            'links'             => function () use ($escaper) { return new Helper\Links($escaper); },
72
            'metas'             => function () use ($escaper) { return new Helper\Metas($escaper); },
73
            'ol'                => function () use ($escaper) { return new Helper\Ol($escaper); },
74
            'scripts'           => function () use ($escaper) { return new Helper\Scripts($escaper); },
75
            'scriptsFoot'       => function () use ($escaper) { return new Helper\Scripts($escaper); },
76
            'styles'            => function () use ($escaper) { return new Helper\Styles($escaper); },
77
            'tag'               => function () use ($escaper) { return new Helper\Tag($escaper); },
78
            'title'             => function () use ($escaper) { return new Helper\Title($escaper); },
79
            'ul'                => function () use ($escaper) { return new Helper\Ul($escaper); },
80
        ));
81
    }
82
83
    /**
84
     *
85
     * Returns a new Input helper locator.
86
     *
87
     * @return Helper\Input
88
     *
89
     */
90 1
    public function newInputInstance()
91
    {
92 1
        $escaper = $this->escaper;
93
        return new Helper\Input(array(
94
            'button'            => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
95
            'checkbox'          => function () use ($escaper) { return new Helper\Input\Checkbox($escaper); },
96
            'color'             => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
97
            'date'              => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
98
            'datetime'          => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
99
            'datetime-local'    => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
100
            'email'             => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
101
            'file'              => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
102
            'hidden'            => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
103
            'image'             => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
104
            'month'             => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
105
            'number'            => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
106
            'password'          => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
107
            'radio'             => function () use ($escaper) { return new Helper\Input\Radio($escaper); },
108
            'range'             => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
109
            'reset'             => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
110
            'search'            => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
111
            'select'            => function () use ($escaper) { return new Helper\Input\Select($escaper); },
112
            'submit'            => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
113
            'tel'               => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
114
            'text'              => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
115
            'textarea'          => function () use ($escaper) { return new Helper\Input\Textarea($escaper); },
116
            'time'              => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
117
            'url'               => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
118
            'week'              => function () use ($escaper) { return new Helper\Input\Generic($escaper); },
119
        ));
120
    }
121
}
122