Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 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 NodeInterface $selector;
29
    private string $name;
30
    private array $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
    public function getSpecificity(): Specificity
61
    {
62
        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
63
    }
64
 
65
    public function __toString(): string
66
    {
67
        $arguments = implode(', ', array_map(function (Token $token) {
68
            return "'".$token->getValue()."'";
69
        }, $this->arguments));
70
 
71
        return sprintf('%s[%s:%s(%s)]', $this->getNodeName(), $this->selector, $this->name, $arguments ? '['.$arguments.']' : '');
72
    }
73
}