[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/vendor/symfony/css-selector/Node/ -> AttributeNode.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>[<namespace>|<attribute> <operator> <value>]" 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 AttributeNode extends AbstractNode
  25  {
  26      private $selector;
  27      private $namespace;
  28      private $attribute;
  29      private $operator;
  30      private $value;
  31  
  32      public function __construct(NodeInterface $selector, ?string $namespace, string $attribute, string $operator, ?string $value)
  33      {
  34          $this->selector = $selector;
  35          $this->namespace = $namespace;
  36          $this->attribute = $attribute;
  37          $this->operator = $operator;
  38          $this->value = $value;
  39      }
  40  
  41      public function getSelector(): NodeInterface
  42      {
  43          return $this->selector;
  44      }
  45  
  46      public function getNamespace(): ?string
  47      {
  48          return $this->namespace;
  49      }
  50  
  51      public function getAttribute(): string
  52      {
  53          return $this->attribute;
  54      }
  55  
  56      public function getOperator(): string
  57      {
  58          return $this->operator;
  59      }
  60  
  61      public function getValue(): ?string
  62      {
  63          return $this->value;
  64      }
  65  
  66      /**
  67       * {@inheritdoc}
  68       */
  69      public function getSpecificity(): Specificity
  70      {
  71          return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
  72      }
  73  
  74      public function __toString(): string
  75      {
  76          $attribute = $this->namespace ? $this->namespace.'|'.$this->attribute : $this->attribute;
  77  
  78          return 'exists' === $this->operator
  79              ? sprintf('%s[%s[%s]]', $this->getNodeName(), $this->selector, $attribute)
  80              : sprintf("%s[%s[%s %s '%s']]", $this->getNodeName(), $this->selector, $attribute, $this->operator, $this->value);
  81      }
  82  }