TextColorManager   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 0
cbo 2
dl 0
loc 70
ccs 18
cts 18
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __callstatic() 0 15 1
A getKnownColors() 0 15 1
A getColorClass() 0 4 1
1
<?php
2
3
namespace Matks\Vivian\Color;
4
5
use Matks\Vivian\Output\TextElement;
6
7
/**
8
 * Foreground Color manager
9
 *
10
 * Thanks Thijs Lensselink
11
 *
12
 * @link http://blog.lenss.nl/2012/05/adding-colors-to-php-cli-script-output/
13
 */
14
class TextColorManager extends AbstractColorManager
15
{
16
    const BLACK  = 'black';
17
    const RED    = 'red';
18
    const GREEN  = 'green';
19
    const YELLOW = 'yellow';
20
    const BLUE   = 'blue';
21
    const PURPLE = 'purple';
22
    const CYAN   = 'cyan';
23
    const WHITE  = 'white';
24
25
    const BASH_FOREGROUND_BLACK  = 30;
26
    const BASH_FOREGROUND_RED    = 31;
27
    const BASH_FOREGROUND_GREEN  = 32;
28
    const BASH_FOREGROUND_YELLOW = 33;
29
    const BASH_FOREGROUND_BLUE   = 34;
30
    const BASH_FOREGROUND_PURPLE = 35;
31
    const BASH_FOREGROUND_CYAN   = 36;
32
    const BASH_FOREGROUND_WHITE  = 37;
33
34
    /**
35
     * Static calls interface to allow calls such as green('hello');
36
     */
37
    public static function __callstatic($name, $params)
38
    {
39 1
        $knownColors = static::getKnownColors();
40 1
        $colorID     = $knownColors[$name];
41
42 1
        $color = static::color($colorID);
43
44
        // target string is expected to be:
45 1
        $targetString = $params[0][0];
46
47 1
        $element = new TextElement($targetString);
48 1
        $element->setTextColor($color);
49
50 1
        return $element->render();
51
    }
52
53
    /**
54
     * Get allowed colors
55
     *
56
     * @return string[]
57
     */
58
    public static function getKnownColors()
59
    {
60
        $colors = array(
61 1
            static::BLACK  => static::BASH_FOREGROUND_BLACK,
62 1
            static::RED    => static::BASH_FOREGROUND_RED,
63 1
            static::GREEN  => static::BASH_FOREGROUND_GREEN,
64 1
            static::YELLOW => static::BASH_FOREGROUND_YELLOW,
65 1
            static::BLUE   => static::BASH_FOREGROUND_BLUE,
66 1
            static::PURPLE => static::BASH_FOREGROUND_PURPLE,
67 1
            static::CYAN   => static::BASH_FOREGROUND_CYAN,
68 1
            static::WHITE  => static::BASH_FOREGROUND_WHITE
69 1
        );
70
71 1
        return $colors;
72
    }
73
74
    /**
75
     * Get Color class
76
     *
77
     * @return string
78
     */
79
    public static function getColorClass()
80
    {
81 1
        return '\Matks\Vivian\Color\TextColor';
82
    }
83
}
84