PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.17.2 4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / third-party / vendor / symfony / css-selector / XPath / Extension / FunctionExtension.php
wp-user-avatar / third-party / vendor / symfony / css-selector / XPath / Extension Last commit date
AbstractExtension.php 2 months ago AttributeMatchingExtension.php 2 months ago CombinationExtension.php 2 months ago ExtensionInterface.php 2 months ago FunctionExtension.php 2 months ago HtmlExtension.php 2 months ago NodeExtension.php 2 months ago PseudoClassExtension.php 2 months ago
FunctionExtension.php
136 lines
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 namespace ProfilePressVendor\Symfony\Component\CssSelector\XPath\Extension;
12
13 use ProfilePressVendor\Symfony\Component\CssSelector\Exception\ExpressionErrorException;
14 use ProfilePressVendor\Symfony\Component\CssSelector\Exception\SyntaxErrorException;
15 use ProfilePressVendor\Symfony\Component\CssSelector\Node\FunctionNode;
16 use ProfilePressVendor\Symfony\Component\CssSelector\Parser\Parser;
17 use ProfilePressVendor\Symfony\Component\CssSelector\XPath\Translator;
18 use ProfilePressVendor\Symfony\Component\CssSelector\XPath\XPathExpr;
19 /**
20 * XPath expression translator function extension.
21 *
22 * This component is a port of the Python cssselect library,
23 * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
24 *
25 * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
26 *
27 * @internal
28 */
29 class FunctionExtension extends AbstractExtension
30 {
31 /**
32 * {@inheritdoc}
33 */
34 public function getFunctionTranslators(): array
35 {
36 return ['nth-child' => [$this, 'translateNthChild'], 'nth-last-child' => [$this, 'translateNthLastChild'], 'nth-of-type' => [$this, 'translateNthOfType'], 'nth-last-of-type' => [$this, 'translateNthLastOfType'], 'contains' => [$this, 'translateContains'], 'lang' => [$this, 'translateLang']];
37 }
38 /**
39 * @throws ExpressionErrorException
40 */
41 public function translateNthChild(XPathExpr $xpath, FunctionNode $function, bool $last = \false, bool $addNameTest = \true): XPathExpr
42 {
43 try {
44 [$a, $b] = Parser::parseSeries($function->getArguments());
45 } catch (SyntaxErrorException $e) {
46 throw new ExpressionErrorException(sprintf('Invalid series: "%s".', implode('", "', $function->getArguments())), 0, $e);
47 }
48 $xpath->addStarPrefix();
49 if ($addNameTest) {
50 $xpath->addNameTest();
51 }
52 if (0 === $a) {
53 return $xpath->addCondition('position() = ' . ($last ? 'last() - ' . ($b - 1) : $b));
54 }
55 if ($a < 0) {
56 if ($b < 1) {
57 return $xpath->addCondition('false()');
58 }
59 $sign = '<=';
60 } else {
61 $sign = '>=';
62 }
63 $expr = 'position()';
64 if ($last) {
65 $expr = 'last() - ' . $expr;
66 --$b;
67 }
68 if (0 !== $b) {
69 $expr .= ' - ' . $b;
70 }
71 $conditions = [sprintf('%s %s 0', $expr, $sign)];
72 if (1 !== $a && -1 !== $a) {
73 $conditions[] = sprintf('(%s) mod %d = 0', $expr, $a);
74 }
75 return $xpath->addCondition(implode(' and ', $conditions));
76 // todo: handle an+b, odd, even
77 // an+b means every-a, plus b, e.g., 2n+1 means odd
78 // 0n+b means b
79 // n+0 means a=1, i.e., all elements
80 // an means every a elements, i.e., 2n means even
81 // -n means -1n
82 // -1n+6 means elements 6 and previous
83 }
84 public function translateNthLastChild(XPathExpr $xpath, FunctionNode $function): XPathExpr
85 {
86 return $this->translateNthChild($xpath, $function, \true);
87 }
88 public function translateNthOfType(XPathExpr $xpath, FunctionNode $function): XPathExpr
89 {
90 return $this->translateNthChild($xpath, $function, \false, \false);
91 }
92 /**
93 * @throws ExpressionErrorException
94 */
95 public function translateNthLastOfType(XPathExpr $xpath, FunctionNode $function): XPathExpr
96 {
97 if ('*' === $xpath->getElement()) {
98 throw new ExpressionErrorException('"*:nth-of-type()" is not implemented.');
99 }
100 return $this->translateNthChild($xpath, $function, \true, \false);
101 }
102 /**
103 * @throws ExpressionErrorException
104 */
105 public function translateContains(XPathExpr $xpath, FunctionNode $function): XPathExpr
106 {
107 $arguments = $function->getArguments();
108 foreach ($arguments as $token) {
109 if (!($token->isString() || $token->isIdentifier())) {
110 throw new ExpressionErrorException('Expected a single string or identifier for :contains(), got ' . implode(', ', $arguments));
111 }
112 }
113 return $xpath->addCondition(sprintf('contains(string(.), %s)', Translator::getXpathLiteral($arguments[0]->getValue())));
114 }
115 /**
116 * @throws ExpressionErrorException
117 */
118 public function translateLang(XPathExpr $xpath, FunctionNode $function): XPathExpr
119 {
120 $arguments = $function->getArguments();
121 foreach ($arguments as $token) {
122 if (!($token->isString() || $token->isIdentifier())) {
123 throw new ExpressionErrorException('Expected a single string or identifier for :lang(), got ' . implode(', ', $arguments));
124 }
125 }
126 return $xpath->addCondition(sprintf('lang(%s)', Translator::getXpathLiteral($arguments[0]->getValue())));
127 }
128 /**
129 * {@inheritdoc}
130 */
131 public function getName(): string
132 {
133 return 'function';
134 }
135 }
136