FontIcon::build()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 0
cts 5
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 3
crap 2
1
<?php
2
/**
3
 * HiPanel core package
4
 *
5
 * @link      https://hipanel.com/
6
 * @package   hipanel-core
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2014-2019, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hipanel\helpers;
12
13
use Yii;
14
use yii\helpers\Html;
15
16
class FontIcon extends \yii\base\BaseObject
17
{
18
    public $tag;
19
20
    public $content;
21
22
    public $options = [];
23
24
    public static function i($name, $params = [])
25
    {
26
        return self::build('i', $name, $params);
27
    }
28
29
    public static function build($tag, $name, $params = [])
30
    {
31
        $class = get_called_class();
32
33
        return Yii::createObject(compact('class', 'tag', 'name', 'params'));
34
    }
35
36
    public function __toString()
37
    {
38
        return $this->render();
39
    }
40
41
    public function addClass($class)
42
    {
43
        Html::addCssClass($this->options, $class);
44
45
        return $this;
46
    }
47
48
    public function setName($name)
49
    {
50
        $this->addClass(self::nameClass($name));
51
    }
52
53
    public function setRotate($angle)
54
    {
55
        $this->rotate($angle);
56
    }
57
58
    public function rotate($angle)
59
    {
60
        return $this->addClass("fa-rotate-$angle");
61
    }
62
63
    public function border()
64
    {
65
        return $this->addClass('fa-border');
66
    }
67
68
    public function fixedWidth()
69
    {
70
        return $this->addClass('fa-fw');
71
    }
72
73
    public static function nameClass($name)
74
    {
75
        return (substr($name, 0, 3) === 'fa-' ? 'fa ' : '') . $name;
76
    }
77
78
    public function setParams($params)
79
    {
80
        foreach ($params as $k => $v) {
81
            $this->{$k} = $v;
82
        }
83
    }
84
85
    public function render()
86
    {
87
        return Html::tag($this->tag, $this->content, $this->options);
88
    }
89
}
90