[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/vendor/symfony/css-selector/Parser/ -> Token.php (source)

   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  }