PluginProbe
WooCommerce / 11.1.0-beta.2
WooCommerce v11.1.0-beta.2
11.1.0 11.1.0-rc.2 11.1.0-rc.1 11.1.0-beta.2 11.1.0-beta.1 11.0.1 11.0.0 11.0.0-rc.3 11.0.0-rc.2 11.0.0-rc.1 11.0.0-beta.2 11.0.0-beta.1 10.9.4 10.9.3 10.9.2 10.9.1 10.9.0 10.9.0-rc.1 10.9.0-beta.2 10.9.0-beta.1 10.8.1 10.8.0 10.8.0-rc.1 10.8.0-beta.2 10.8.0-beta.1 All 648 releases
woocommerce / lib / packages / Symfony / Component / CssSelector / Node / AttributeNode.php
AttributeNode.php
83 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 Automattic\WooCommerce\Vendor\Symfony\Component\CssSelector\Node;
13
14 /**
15 * Represents a "<selector>[<namespace>|<attribute> <operator> <value>]" 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 AttributeNode extends AbstractNode
25 {
26 private $selector;
27 private $namespace;
28 private $attribute;
29 private $operator;
30 private $value;
31
32 public function __construct(NodeInterface $selector, ?string $namespace, string $attribute, string $operator, ?string $value)
33 {
34 $this->selector = $selector;
35 $this->namespace = $namespace;
36 $this->attribute = $attribute;
37 $this->operator = $operator;
38 $this->value = $value;
39 }
40
41 public function getSelector(): NodeInterface
42 {
43 return $this->selector;
44 }
45
46 public function getNamespace(): ?string
47 {
48 return $this->namespace;
49 }
50
51 public function getAttribute(): string
52 {
53 return $this->attribute;
54 }
55
56 public function getOperator(): string
57 {
58 return $this->operator;
59 }
60
61 public function getValue(): ?string
62 {
63 return $this->value;
64 }
65
66 /**
67 * {@inheritdoc}
68 */
69 public function getSpecificity(): Specificity
70 {
71 return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
72 }
73
74 public function __toString(): string
75 {
76 $attribute = $this->namespace ? $this->namespace.'|'.$this->attribute : $this->attribute;
77
78 return 'exists' === $this->operator
79 ? sprintf('%s[%s[%s]]', $this->getNodeName(), $this->selector, $attribute)
80 : sprintf("%s[%s[%s %s '%s']]", $this->getNodeName(), $this->selector, $attribute, $this->operator, $this->value);
81 }
82 }
83