[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
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 $type; 35 private $value; 36 private $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 (empty($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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body