[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/vendor/symfony/css-selector/Node/ -> FunctionNode.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  use Symfony\Component\CssSelector\Parser\Token;
  15  
  16  /**
  17   * Represents a "<selector>:<name>(<arguments>)" node.
  18   *
  19   * This component is a port of the Python cssselect library,
  20   * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
  21   *
  22   * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
  23   *
  24   * @internal
  25   */
  26  class FunctionNode extends AbstractNode
  27  {
  28      private $selector;
  29      private $name;
  30      private $arguments;
  31  
  32      /**
  33       * @param Token[] $arguments
  34       */
  35      public function __construct(NodeInterface $selector, string $name, array $arguments = [])
  36      {
  37          $this->selector = $selector;
  38          $this->name = strtolower($name);
  39          $this->arguments = $arguments;
  40      }
  41  
  42      public function getSelector(): NodeInterface
  43      {
  44          return $this->selector;
  45      }
  46  
  47      public function getName(): string
  48      {
  49          return $this->name;
  50      }
  51  
  52      /**
  53       * @return Token[]
  54       */
  55      public function getArguments(): array
  56      {
  57          return $this->arguments;
  58      }
  59  
  60      /**
  61       * {@inheritdoc}
  62       */
  63      public function getSpecificity(): Specificity
  64      {
  65          return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
  66      }
  67  
  68      public function __toString(): string
  69      {
  70          $arguments = implode(', ', array_map(function (Token $token) {
  71              return "'".$token->getValue()."'";
  72          }, $this->arguments));
  73  
  74          return sprintf('%s[%s:%s(%s)]', $this->getNodeName(), $this->selector, $this->name, $arguments ? '['.$arguments.']' : '');
  75      }
  76  }