Localization_Parser_Token   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 92
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 21
c 2
b 0
f 0
dl 0
loc 92
rs 10
wmc 6

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 2
A getLine() 0 3 1
A getValue() 0 3 1
A toArray() 0 7 1
A getToken() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AppLocalize;
6
7
use AppUtils\ConvertHelper;
8
9
abstract class Localization_Parser_Token
10
{
11
   /**
12
    * @var array|string
13
    */
14
    protected $definition;
15
    
16
   /**
17
    * @var Localization_Parser_Token|NULL
18
    */
19
    protected $parentToken;
20
21
    /**
22
     * @var string
23
     */
24
    protected $token = '';
25
26
    /**
27
     * @var string|NULL
28
     */
29
    protected $value = null;
30
31
    /**
32
     * @var int
33
     */
34
    protected $line = 0;
35
36
    /**
37
     * @var array<string,bool>
38
     */
39
    protected $nameLookup = array();
40
41
    /**
42
     * @param array|string $definition
43
     * @param Localization_Parser_Token|null $parentToken
44
     */
45
    public function __construct($definition, ?Localization_Parser_Token $parentToken=null)
46
    {
47
        $this->definition = $definition;
48
        $this->parentToken = $parentToken;
49
50
        $names = $this->getFunctionNames();
51
        foreach($names as $name) {
52
            $this->nameLookup[$name] = true;
53
        }
54
55
        $this->parseDefinition();
56
    }
57
    
58
    public function getValue() : ?string
59
    {
60
        return $this->value;
61
    }
62
    
63
    public function getToken() : string
64
    {
65
        return $this->token;
66
    }
67
    
68
    abstract protected function parseDefinition() : void;
69
    
70
    abstract public function isOpeningFuncParams() : bool;
71
    
72
    abstract public function isClosingFuncParams() : bool;
73
    
74
    abstract public function getFunctionNames() : array;
75
    
76
    abstract public function isEncapsedString() : bool;
77
    
78
    abstract public function isTranslationFunction() : bool;
79
    
80
    abstract public function isVariableOrFunction() : bool;
81
82
    abstract public function isExplanationFunction() : bool;
83
84
    public function getLine() : int
85
    {
86
        return $this->line;
87
    }
88
    
89
    abstract public function isArgumentSeparator() : bool;
90
91
    /**
92
     * @return array<string,mixed>
93
     */
94
    public function toArray() : array
95
    {
96
        return array(
97
            'token' => $this->getToken(),
98
            'value' => $this->getValue(),
99
            'line' => $this->getLine(),
100
            'isEncapsedString' => ConvertHelper::bool2string($this->isEncapsedString())
101
         );
102
    }
103
}
104