[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/vendor/symfony/css-selector/Node/ -> CombinedSelectorNode.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\Node;
  13  
  14  /**
  15   * Represents a combined node.
  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 CombinedSelectorNode extends AbstractNode
  25  {
  26      private $selector;
  27      private $combinator;
  28      private $subSelector;
  29  
  30      public function __construct(NodeInterface $selector, string $combinator, NodeInterface $subSelector)
  31      {
  32          $this->selector = $selector;
  33          $this->combinator = $combinator;
  34          $this->subSelector = $subSelector;
  35      }
  36  
  37      public function getSelector(): NodeInterface
  38      {
  39          return $this->selector;
  40      }
  41  
  42      public function getCombinator(): string
  43      {
  44          return $this->combinator;
  45      }
  46  
  47      public function getSubSelector(): NodeInterface
  48      {
  49          return $this->subSelector;
  50      }
  51  
  52      /**
  53       * {@inheritdoc}
  54       */
  55      public function getSpecificity(): Specificity
  56      {
  57          return $this->selector->getSpecificity()->plus($this->subSelector->getSpecificity());
  58      }
  59  
  60      public function __toString(): string
  61      {
  62          $combinator = ' ' === $this->combinator ? '<followed>' : $this->combinator;
  63  
  64          return sprintf('%s[%s %s %s]', $this->getNodeName(), $this->selector, $combinator, $this->subSelector);
  65      }
  66  }