PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.17.1
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.17.1
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 / sabberworm / php-css-parser / src / Property / Selector.php
wp-user-avatar / third-party / vendor / sabberworm / php-css-parser / src / Property Last commit date
AtRule.php 2 months ago CSSNamespace.php 2 months ago Charset.php 2 months ago Import.php 2 months ago KeyframeSelector.php 2 months ago Selector.php 2 months ago
Selector.php
139 lines
1 <?php
2
3 namespace ProfilePressVendor\Sabberworm\CSS\Property;
4
5 /**
6 * Class representing a single CSS selector. Selectors have to be split by the comma prior to being passed into this
7 * class.
8 */
9 class Selector
10 {
11 /**
12 * regexp for specificity calculations
13 *
14 * @var string
15 *
16 * @internal
17 */
18 const NON_ID_ATTRIBUTES_AND_PSEUDO_CLASSES_RX = '/
19 (\.[\w]+) # classes
20 |
21 \[(\w+) # attributes
22 |
23 (\:( # pseudo classes
24 link|visited|active
25 |hover|focus
26 |lang
27 |target
28 |enabled|disabled|checked|indeterminate
29 |root
30 |nth-child|nth-last-child|nth-of-type|nth-last-of-type
31 |first-child|last-child|first-of-type|last-of-type
32 |only-child|only-of-type
33 |empty|contains
34 ))
35 /ix';
36 /**
37 * regexp for specificity calculations
38 *
39 * @var string
40 *
41 * @internal
42 */
43 const ELEMENTS_AND_PSEUDO_ELEMENTS_RX = '/
44 ((^|[\s\+\>\~]+)[\w]+ # elements
45 |
46 \:{1,2}( # pseudo-elements
47 after|before|first-letter|first-line|selection
48 ))
49 /ix';
50 /**
51 * regexp for specificity calculations
52 *
53 * @var string
54 *
55 * @internal since 8.5.2
56 */
57 const SELECTOR_VALIDATION_RX = '/
58 ^(
59 (?:
60 [a-zA-Z0-9\x{00A0}-\x{FFFF}_^$|*="\'~\[\]()\-\s\.:#+>]* # any sequence of valid unescaped characters
61 (?:\\\\.)? # a single escaped character
62 (?:([\'"]).*?(?<!\\\\)\2)? # a quoted text like [id="example"]
63 )*
64 )$
65 /ux';
66 /**
67 * @var string
68 */
69 private $sSelector;
70 /**
71 * @var int|null
72 */
73 private $iSpecificity;
74 /**
75 * @param string $sSelector
76 *
77 * @return bool
78 *
79 * @internal since V8.8.0
80 */
81 public static function isValid($sSelector)
82 {
83 return preg_match(static::SELECTOR_VALIDATION_RX, $sSelector);
84 }
85 /**
86 * @param string $sSelector
87 * @param bool $bCalculateSpecificity @deprecated since V8.8.0, will be removed in V9.0.0
88 */
89 public function __construct($sSelector, $bCalculateSpecificity = \false)
90 {
91 $this->setSelector($sSelector);
92 if ($bCalculateSpecificity) {
93 $this->getSpecificity();
94 }
95 }
96 /**
97 * @return string
98 */
99 public function getSelector()
100 {
101 return $this->sSelector;
102 }
103 /**
104 * @param string $sSelector
105 *
106 * @return void
107 */
108 public function setSelector($sSelector)
109 {
110 $this->sSelector = trim($sSelector);
111 $this->iSpecificity = null;
112 }
113 /**
114 * @return string
115 *
116 * @deprecated in V8.8.0, will be removed in V9.0.0. Use `render` instead.
117 */
118 public function __toString()
119 {
120 return $this->getSelector();
121 }
122 /**
123 * @return int
124 */
125 public function getSpecificity()
126 {
127 if ($this->iSpecificity === null) {
128 $a = 0;
129 /// @todo should exclude \# as well as "#"
130 $aMatches = null;
131 $b = substr_count($this->sSelector, '#');
132 $c = preg_match_all(self::NON_ID_ATTRIBUTES_AND_PSEUDO_CLASSES_RX, $this->sSelector, $aMatches);
133 $d = preg_match_all(self::ELEMENTS_AND_PSEUDO_ELEMENTS_RX, $this->sSelector, $aMatches);
134 $this->iSpecificity = $a * 1000 + $b * 100 + $c * 10 + $d;
135 }
136 return $this->iSpecificity;
137 }
138 }
139