Completed
Push — master ( 814790...2dd7a5 )
by Mathieu
02:35
created

GenericHelper::cssRequirements()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 6
rs 9.4285
cc 1
eloc 4
nc 1
nop 0
1
<?php
2
3
namespace Charcoal\View\Mustache;
4
5
use \ArrayIterator;
6
use \IteratorAggregate;
7
8
use \Mustache_LambdaHelper;
9
10
/**
11
 * Default mustache render helper. Helpers are global functions available to all the templates.
12
 */
13
class GenericHelper implements IteratorAggregate
14
{
15
    /**
16
     * @var string $js
17
     */
18
    static private $js = '';
19
20
    /**
21
     * @var array $jsRequirements
22
     */
23
    static private $jsRequirements = [];
24
25
    /**
26
     * @var array $cssRequirements
27
     */
28
    static private $cssRequirements = [];
29
    /**
30
     * @var string $css;
31
     */
32
    static private $css = '';
33
34
    /**
35
     * IteratorAggregate > getIterator
36
     * Also ensure this class is `Traversable`
37
     *
38
     * @return ArrayIterator
39
     */
40
    public function getIterator()
41
    {
42
        return new ArrayIterator([
43
            '_t' => function($txt) {
44
                return $txt;
45
            },
46
            'addJs' => function($js, Mustache_LambdaHelper $helper) {
47
                return $this->addJs($js, $helper);
48
            },
49
            'js' => function() {
50
                return $this->js();
51
            },
52
            'addJsRequirement' => function($jsRequirement) {
53
                return $this->addJsRequirement($jsRequirement);
54
            },
55
            'jsRequirements' => function() {
56
                return $this->jsRequirements();
57
            },
58
            'addCss' => function($css, Mustache_LambdaHelper $helper) {
59
                return $this->addCss($css, $helper);
60
            },
61
            'css' => function() {
62
                return $this->css();
63
            },
64
            'addCssRequirement' => function($cssRequirement) {
65
                return $this->addCssRequirement($cssRequirement);
66
            }
67
        ]);
68
    }
69
70
    /**
71
     * @param string               $js
72
     * @param Mustache_LamdaHelper $helper
73
     * @return void
74
     */
75 View Code Duplication
    public function addJs($js, Mustache_LambdaHelper $helper = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
76
    {
77
        if ($helper !== null) {
78
            $js = $helper->render($js);
79
        }
80
        self::$js .= $js;
81
    }
82
83
    /**
84
     * Get the saved js content and purge
85
     *
86
     * @return string
87
     */
88
    public function js()
89
    {
90
        $js = self::$js;
91
        self::$js = '';
92
        return $js;
93
    }
94
95
    /**
96
     * @param string $jsRequirement
97
     * @return void
98
     */
99
    public function addJsRequirement($jsRequirement)
100
    {
101
        if (!in_array($jsRequirement, self::$jsRequirements)) {
102
            self::$jsRequirements[] = $jsRequirement;
103
        }
104
    }
105
106
    /**
107
     * Ouput and reset JS requirements
108
     *
109
     * @return string
110
     */
111
    public function jsRequirements()
112
    {
113
        $req = implode("\n", self::$jsRequirements);
114
        self::$jsRequirements = [];
115
        return $req;
116
    }
117
118
    /**
119
     * @param string $css
120
     * @return void
121
     */
122 View Code Duplication
    public function addCss($css, Mustache_LambdaHelper $helper = null)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
123
    {
124
        if ($helper !== null) {
125
            $css = $helper->render($css);
126
        }
127
        self::$css .= $css;
128
    }
129
130
    /**
131
     * Get the saved css content and purge
132
     *
133
     * @return string
134
     */
135
    public function css()
136
    {
137
        $css = self::$css;
138
        self::$css = '';
139
        return $css;
140
    }
141
142
    /**
143
     * @param string $cssRequirement
144
     * @return string
145
     */
146
    public function addCssRequirement($cssRequirement)
147
    {
148
        if (!in_array($cssRequirement, self::$cssRequirements)) {
149
            self::$cssRequirements[] = $cssRequirement;
150
        }
151
    }
152
153
    /**
154
     * Ouput and reset CSS requirements
155
     *
156
     * @return string
157
     */
158
    public function cssRequirements()
159
    {
160
        $req = implode("\n", self::$cssRequirements);
161
        self::$cssRequirements = [];
162
        return $req;
163
    }
164
}
165