[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/vendor/symfony/css-selector/Node/ -> SelectorNode.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 "<selector>(::|:)<pseudoElement>" 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 SelectorNode extends AbstractNode
  25  {
  26      private $tree;
  27      private $pseudoElement;
  28  
  29      public function __construct(NodeInterface $tree, string $pseudoElement = null)
  30      {
  31          $this->tree = $tree;
  32          $this->pseudoElement = $pseudoElement ? strtolower($pseudoElement) : null;
  33      }
  34  
  35      public function getTree(): NodeInterface
  36      {
  37          return $this->tree;
  38      }
  39  
  40      public function getPseudoElement(): ?string
  41      {
  42          return $this->pseudoElement;
  43      }
  44  
  45      /**
  46       * {@inheritdoc}
  47       */
  48      public function getSpecificity(): Specificity
  49      {
  50          return $this->tree->getSpecificity()->plus(new Specificity(0, 0, $this->pseudoElement ? 1 : 0));
  51      }
  52  
  53      public function __toString(): string
  54      {
  55          return sprintf('%s[%s%s]', $this->getNodeName(), $this->tree, $this->pseudoElement ? '::'.$this->pseudoElement : '');
  56      }
  57  }