[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/vendor/symfony/css-selector/Parser/Handler/ -> NumberHandler.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\Handler;
  13  
  14  use Symfony\Component\CssSelector\Parser\Reader;
  15  use Symfony\Component\CssSelector\Parser\Token;
  16  use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns;
  17  use Symfony\Component\CssSelector\Parser\TokenStream;
  18  
  19  /**
  20   * CSS selector comment handler.
  21   *
  22   * This component is a port of the Python cssselect library,
  23   * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
  24   *
  25   * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
  26   *
  27   * @internal
  28   */
  29  class NumberHandler implements HandlerInterface
  30  {
  31      private $patterns;
  32  
  33      public function __construct(TokenizerPatterns $patterns)
  34      {
  35          $this->patterns = $patterns;
  36      }
  37  
  38      /**
  39       * {@inheritdoc}
  40       */
  41      public function handle(Reader $reader, TokenStream $stream): bool
  42      {
  43          $match = $reader->findPattern($this->patterns->getNumberPattern());
  44  
  45          if (!$match) {
  46              return false;
  47          }
  48  
  49          $stream->push(new Token(Token::TYPE_NUMBER, $match[0], $reader->getPosition()));
  50          $reader->moveForward(\strlen($match[0]));
  51  
  52          return true;
  53      }
  54  }