Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/*
4
 * This file is part of the Symfony package.
5
 *
6
 * (c) Fabien Potencier <fabien@symfony.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
 
12
namespace Symfony\Component\CssSelector\Parser;
13
 
14
/**
15
 * CSS selector token.
16
 *
17
 * This component is a port of the Python cssselect library,
18
 * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
19
 *
20
 * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
21
 *
22
 * @internal
23
 */
24
class Token
25
{
26
    public const TYPE_FILE_END = 'eof';
27
    public const TYPE_DELIMITER = 'delimiter';
28
    public const TYPE_WHITESPACE = 'whitespace';
29
    public const TYPE_IDENTIFIER = 'identifier';
30
    public const TYPE_HASH = 'hash';
31
    public const TYPE_NUMBER = 'number';
32
    public const TYPE_STRING = 'string';
33
 
34
    private ?string $type;
35
    private ?string $value;
36
    private ?int $position;
37
 
38
    public function __construct(?string $type, ?string $value, ?int $position)
39
    {
40
        $this->type = $type;
41
        $this->value = $value;
42
        $this->position = $position;
43
    }
44
 
45
    public function getType(): ?int
46
    {
47
        return $this->type;
48
    }
49
 
50
    public function getValue(): ?string
51
    {
52
        return $this->value;
53
    }
54
 
55
    public function getPosition(): ?int
56
    {
57
        return $this->position;
58
    }
59
 
60
    public function isFileEnd(): bool
61
    {
62
        return self::TYPE_FILE_END === $this->type;
63
    }
64
 
65
    public function isDelimiter(array $values = []): bool
66
    {
67
        if (self::TYPE_DELIMITER !== $this->type) {
68
            return false;
69
        }
70
 
71
        if (!$values) {
72
            return true;
73
        }
74
 
75
        return \in_array($this->value, $values);
76
    }
77
 
78
    public function isWhitespace(): bool
79
    {
80
        return self::TYPE_WHITESPACE === $this->type;
81
    }
82
 
83
    public function isIdentifier(): bool
84
    {
85
        return self::TYPE_IDENTIFIER === $this->type;
86
    }
87
 
88
    public function isHash(): bool
89
    {
90
        return self::TYPE_HASH === $this->type;
91
    }
92
 
93
    public function isNumber(): bool
94
    {
95
        return self::TYPE_NUMBER === $this->type;
96
    }
97
 
98
    public function isString(): bool
99
    {
100
        return self::TYPE_STRING === $this->type;
101
    }
102
 
103
    public function __toString(): string
104
    {
105
        if ($this->value) {
106
            return sprintf('<%s "%s" at %s>', $this->type, $this->value, $this->position);
107
        }
108
 
109
        return sprintf('<%s at %s>', $this->type, $this->position);
110
    }
111
}