Passed
Push — master ( 707ba4...19aa6f )
by Sebastian
02:43
created

getSourceCommand()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * File containing the {@see Mailcode_Parser_Statement_Tokenizer_Token} class.
4
 *
5
 * @package Mailcode
6
 * @subpackage Parser
7
 * @see Mailcode_Parser_Statement_Tokenizer_Token
8
 */
9
10
declare(strict_types=1);
11
12
namespace Mailcode;
13
14
/**
15
 * Abstract base class for a single token in a statement.
16
 *
17
 * @package Mailcode
18
 * @subpackage Parser
19
 * @author Sebastian Mordziol <[email protected]>
20
 */
21
abstract class Mailcode_Parser_Statement_Tokenizer_Token implements Mailcode_Parser_Statement_Tokenizer_TypeInterface
22
{
23
   /**
24
    * @var string
25
    */
26
    protected $tokenID;
27
    
28
   /**
29
    * @var string
30
    */
31
    protected $matchedText;
32
    
33
   /**
34
    * @var mixed
35
    */
36
    protected $subject;
37
38
    /**
39
     * @var Mailcode_Commands_Command|null
40
     */
41
    private $sourceCommand;
42
43
    /**
44
     * @param string $tokenID
45
     * @param string $matchedText
46
     * @param mixed $subject
47
     * @param Mailcode_Commands_Command|null $sourceCommand
48
     */
49
    public function __construct(string $tokenID, string $matchedText, $subject=null, ?Mailcode_Commands_Command $sourceCommand=null)
50
    {
51
        $this->tokenID = $tokenID;
52
        $this->matchedText = $matchedText;
53
        $this->subject = $subject;
54
        $this->sourceCommand = $sourceCommand;
55
    }
56
57
    /**
58
     * @return Mailcode_Commands_Command|null
59
     */
60
    public function getSourceCommand(): ?Mailcode_Commands_Command
61
    {
62
        return $this->sourceCommand;
63
    }
64
    
65
   /**
66
    * The ID of the type. i.e. the class name ("Keyword", "StringLiteral").
67
    * @return string
68
    */
69
    public function getTypeID() : string
70
    {
71
        $parts = explode('_', get_class($this));
72
        return array_pop($parts);
73
    }
74
    
75
   /**
76
    * Retrieves a unique ID of the token.
77
    * @return string  
78
    */
79
    public function getID() : string
80
    {
81
        return $this->tokenID;
82
    }
83
    
84
    public function getMatchedText() : string
85
    {
86
        return $this->matchedText;
87
    }
88
    
89
    protected function restoreQuotes(string $subject) : string
90
    {
91
        return str_replace('__QUOTE__', '\"', $subject);
92
    }
93
94
    abstract public function getNormalized() : string;
95
    
96
    final public function isValue() : bool
97
    {
98
        return $this instanceof Mailcode_Parser_Statement_Tokenizer_ValueInterface;
99
    }
100
}
101