[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body