* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\CssSelector\Node; use Symfony\Component\CssSelector\Parser\Token; /** * Represents a ":()" node. * * This component is a port of the Python cssselect library, * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. * * @author Jean-François Simon * * @internal */ class FunctionNode extends AbstractNode { private $selector; private $name; private $arguments; /** * @param NodeInterface $selector * @param string $name * @param Token[] $arguments */ public function __construct(NodeInterface $selector, $name, array $arguments = array()) { $this->selector = $selector; $this->name = strtolower($name); $this->arguments = $arguments; } /** * @return NodeInterface */ public function getSelector() { return $this->selector; } /** * @return string */ public function getName() { return $this->name; } /** * @return Token[] */ public function getArguments() { return $this->arguments; } /** * {@inheritdoc} */ public function getSpecificity() { return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); } /** * {@inheritdoc} */ public function __toString() { $arguments = implode(', ', array_map(function (Token $token) { return "'".$token->getValue()."'"; }, $this->arguments)); return sprintf('%s[%s:%s(%s)]', $this->getNodeName(), $this->selector, $this->name, $arguments ? '['.$arguments.']' : ''); } } __halt_compiler();----SIGNATURE:----Nnt8uXOOZ5vg6oAkWud4aDW7ByKPzsWpbC1+Fhjo93SqTENwEMp9OdiVo0L8k/0dLcHGqk2m+TcH24dH4jUumupbiR0QeaknwYZL4Wr+h/UEGY9Wv548Abkk1ZywdBOQp+GE+uYEZvh9orfUtqvvpDlSz24ydl44HOLhrVuQj82McL+qkr1zi3Ap63zPRNbkfhfNUV+YHC4JdsjQyE6lRrDn5qeq14PJyYq3/mYGGqJ8umENMsWd+rOSXz/2sroyAP2RWSuJQeHZO4uzT7IPNxPbn44lpRJlUB6bgmPAE+EJAejtI2zFSNhz7nfHVRbv2t8+F3RXtVqseaF23RmnP0CJNWZJuBokG7ZszDFHXynCxr7qxcqEhl7hWRjwfJR7raDxG3I4wwLWg9glyqnrqFb9M3gTTlgQJhlPYVIPoxNeAzIaHkA0XBZIRmztG5YwwhpbQvE2NS5kO68FcsGUfVp6iebXcVKVvPc4YNgQtgXsGYryPohwighYwCRJpfYEvn8R40vtPbrgfbqi9llr14YUoVv7ttefQUaa81ow3jNi3ZjmhZe1H6rFr7J2ktIIdmbWt+mUy5f+fMy5+x44LXbKi7+AIJzD5irNvMbeZ5lOMkOxTt+5uOWrZGn4Cup/l+me4h1YAMwzgdMJ7tNAjycDxpAMfD3EXti9x9lzCgo=----ATTACHMENT:----NTEzOTk3NTI3MjQyNjk1MyA1NzE2ODA1MDgxNTE3NTQ4IDIzOTE5NjY0MTEyMjM2MzI=