TCss::addClass()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 8
c 2
b 0
f 0
dl 0
loc 11
ccs 8
cts 8
cp 1
rs 10
cc 3
nc 3
nop 1
crap 3
1
<?php
2
3
namespace kalanis\kw_templates\HtmlElement;
4
5
6
use kalanis\kw_templates\Interfaces\IAttributes;
7
8
9
/**
10
 * Trait TCss
11
 * @package kalanis\kw_templates\Template
12
 * Trait for work with cascade style sheets - via classes
13
 * Extend child of AHtmlElement
14
 * @author Adam Dornak original
15
 * @author Petr Plsek refactored
16
 */
17
trait TCss
18
{
19
    /**
20
     * Add class into attribute class
21
     * @param string $name
22
     */
23 1
    public function addClass(string $name): void
24
    {
25 1
        $class = $this->getAttribute(IAttributes::ATTR_NAME_CLASS);
26 1
        if (!empty($class)) {
27 1
            $class = explode(IAttributes::ATTR_SEP_CLASS, $class);
28 1
            if (!in_array($name, $class)) {
29 1
                $class[] = $name;
30 1
                $this->setAttribute(IAttributes::ATTR_NAME_CLASS, implode(IAttributes::ATTR_SEP_CLASS, $class));
31
            }
32
        } else {
33 1
            $this->setAttribute(IAttributes::ATTR_NAME_CLASS, $name);
34
        }
35 1
    }
36
37
    /**
38
     * Remote class from attribute class
39
     * @param string $name
40
     */
41 1
    public function removeClass(string $name): void
42
    {
43 1
        $class = $this->getAttribute(IAttributes::ATTR_NAME_CLASS);
44 1
        if (!empty ($class)) {
45 1
            $class = explode(IAttributes::ATTR_SEP_CLASS, $class);
46 1
            if (in_array($name, $class)) {
47 1
                $class = array_flip($class);
48 1
                unset ($class[$name]);
49 1
                $class = array_flip($class);
50 1
                $this->setAttribute(IAttributes::ATTR_NAME_CLASS, implode(IAttributes::ATTR_SEP_CLASS, $class));
51
            }
52
        }
53 1
    }
54
55
    abstract public function getAttribute(string $name): ?string;
56
57
    abstract public function setAttribute(string $name, string $value): void;
58
}
59