Passed
Push — master ( f4abb1...e0c00d )
by Kacper
02:47
created

DebugFormatter   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 0
cbo 2
dl 0
loc 52
ccs 0
cts 34
cp 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
C format() 0 49 7
1
<?php
2
/**
3
 * Highlighter
4
 *
5
 * Copyright (C) 2015, Some right reserved.
6
 *
7
 * @author Kacper "Kadet" Donat <[email protected]>
8
 *
9
 * Contact with author:
10
 * Xmpp: [email protected]
11
 * E-mail: [email protected]
12
 *
13
 * From Kadet with love.
14
 */
15
16
namespace Kadet\Highlighter\Formatter;
17
18
use Kadet\Highlighter\Parser\Token;
19
use Kadet\Highlighter\Parser\TokenIterator;
20
use Kadet\Highlighter\Utils\Console;
21
22
/**
23
 * Class CliFormatter
24
 *
25
 * @package Kadet\Highlighter\Formatter
26
 */
27
class DebugFormatter implements FormatterInterface
28
{
29
    public function format(TokenIterator $tokens, $leveled = true)
30
    {
31
        $source = $tokens->getSource();
32
33
        $result = '';
34
        $last = 0;
35
36
        $level = 0;
37
38
        /** @var Token $token */
39
        foreach ($tokens as $token) {
40
            $content = trim(substr($source, $last, $token->pos - $last));
41
            if(!empty($content)) {
42
                if($leveled) {
43
                    $result .= str_repeat('    ', $level);
44
                }
45
                $result .= $content.PHP_EOL;
46
            }
47
48
            if ($token->isStart()) {
49
                if($leveled) {
50
                    $result .= str_repeat('    ', $level);
51
                }
52
53
                $result .=
54
                    Console::styled(['color' => 'green'], 'Open: ').
55
                    Console::styled(['color' => 'yellow'], $token->name).' '.
56
                    Console::styled(['color' => 'blue'], get_class($token)).
57
                    PHP_EOL;
58
                $level++;
59
            } else {
60
                $level--;
61
62
                if($leveled) {
63
                    $result .= str_repeat('    ', $level);
64
                }
65
66
                $result .=
67
                    Console::styled(['color' => 'red'], 'Close: ').
68
                    Console::styled(['color' => 'yellow'], $token->name).
69
                    PHP_EOL;
70
            }
71
72
            $last = $token->pos;
73
        }
74
        $result .= substr($source, $last).Console::reset();
75
76
        return $result;
77
    }
78
}