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
/**
15
 * Represents a combined 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 CombinedSelectorNode extends AbstractNode
25
{
26
    private NodeInterface $selector;
27
    private string $combinator;
28
    private NodeInterface $subSelector;
29
 
30
    public function __construct(NodeInterface $selector, string $combinator, NodeInterface $subSelector)
31
    {
32
        $this->selector = $selector;
33
        $this->combinator = $combinator;
34
        $this->subSelector = $subSelector;
35
    }
36
 
37
    public function getSelector(): NodeInterface
38
    {
39
        return $this->selector;
40
    }
41
 
42
    public function getCombinator(): string
43
    {
44
        return $this->combinator;
45
    }
46
 
47
    public function getSubSelector(): NodeInterface
48
    {
49
        return $this->subSelector;
50
    }
51
 
52
    public function getSpecificity(): Specificity
53
    {
54
        return $this->selector->getSpecificity()->plus($this->subSelector->getSpecificity());
55
    }
56
 
57
    public function __toString(): string
58
    {
59
        $combinator = ' ' === $this->combinator ? '<followed>' : $this->combinator;
60
 
61
        return sprintf('%s[%s %s %s]', $this->getNodeName(), $this->selector, $combinator, $this->subSelector);
62
    }
63
}