| 1441 |
ariadna |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
namespace Sabberworm\CSS\Parsing;
|
|
|
4 |
|
|
|
5 |
/**
|
|
|
6 |
* Thrown if the CSS parser encounters a token it did not expect.
|
|
|
7 |
*/
|
|
|
8 |
class UnexpectedTokenException extends SourceException
|
|
|
9 |
{
|
|
|
10 |
/**
|
|
|
11 |
* @var string
|
|
|
12 |
*/
|
|
|
13 |
private $sExpected;
|
|
|
14 |
|
|
|
15 |
/**
|
|
|
16 |
* @var string
|
|
|
17 |
*/
|
|
|
18 |
private $sFound;
|
|
|
19 |
|
|
|
20 |
/**
|
|
|
21 |
* Possible values: literal, identifier, count, expression, search
|
|
|
22 |
*
|
|
|
23 |
* @var string
|
|
|
24 |
*/
|
|
|
25 |
private $sMatchType;
|
|
|
26 |
|
|
|
27 |
/**
|
|
|
28 |
* @param string $sExpected
|
|
|
29 |
* @param string $sFound
|
|
|
30 |
* @param string $sMatchType
|
|
|
31 |
* @param int $iLineNo
|
|
|
32 |
*/
|
|
|
33 |
public function __construct($sExpected, $sFound, $sMatchType = 'literal', $iLineNo = 0)
|
|
|
34 |
{
|
|
|
35 |
$this->sExpected = $sExpected;
|
|
|
36 |
$this->sFound = $sFound;
|
|
|
37 |
$this->sMatchType = $sMatchType;
|
|
|
38 |
$sMessage = "Token “{$sExpected}” ({$sMatchType}) not found. Got “{$sFound}”.";
|
|
|
39 |
if ($this->sMatchType === 'search') {
|
|
|
40 |
$sMessage = "Search for “{$sExpected}” returned no results. Context: “{$sFound}”.";
|
|
|
41 |
} elseif ($this->sMatchType === 'count') {
|
|
|
42 |
$sMessage = "Next token was expected to have {$sExpected} chars. Context: “{$sFound}”.";
|
|
|
43 |
} elseif ($this->sMatchType === 'identifier') {
|
|
|
44 |
$sMessage = "Identifier expected. Got “{$sFound}”";
|
|
|
45 |
} elseif ($this->sMatchType === 'custom') {
|
|
|
46 |
$sMessage = trim("$sExpected $sFound");
|
|
|
47 |
}
|
|
|
48 |
|
|
|
49 |
parent::__construct($sMessage, $iLineNo);
|
|
|
50 |
}
|
|
|
51 |
}
|