Completed
Push — master ( c80620...0cd8d9 )
by Martijn
03:25
created

TokenTrait   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 47
rs 10
c 0
b 0
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A processTokenCallback() 0 13 3
A setTokenCallback() 0 5 1
A getToken() 0 3 1
1
<?php
2
3
namespace Vanderlee\Comprehend\Match\Output;
4
5
use Vanderlee\Comprehend\Core\Token;
6
7
trait TokenTrait
8
{
9
10
    /**
11
     * List of callbacks to process for tokens
12
     * @var callable
13
     */
14
    private $tokenCallback = null;
15
16
    /**
17
     * Add a callback to this match, to be called after parsing is finished and
18
     * only if this match was part of the matched rules.
19
     *
20
     * @param callable $callback
21
     * @return $this
22
     */
23
    public function setTokenCallback(callable $callback)
24
    {
25
        $this->tokenCallback = $callback;
26
27
        return $this;
28
    }
29
30
    /**
31
     * @return Token
32
     */
33
    private function processTokenCallback()
34
    {
35
        $children = [];
36
        /** @var self $success */
37
        foreach ($this->successes as $success) {
38
            $children[] = $success->processTokenCallback();
39
        }
40
41
        if ($this->tokenCallback) {
42
            return ($this->tokenCallback)($children);
43
        }
44
45
        return null;
46
    }
47
48
    /**
49
     * @return Token
50
     */
51
    public function getToken()
52
    {
53
        return $this->processTokenCallback();
54
    }
55
}