PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.2
MailPoet – Newsletters, Email Marketing, and Automation v5.34.2
5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor-prefixed / sabberworm / php-css-parser / src / Rule / Rule.php
mailpoet / vendor-prefixed / sabberworm / php-css-parser / src / Rule Last commit date
Rule.php 2 years ago index.php 3 years ago
Rule.php
224 lines
1 <?php
2 namespace MailPoetVendor\Sabberworm\CSS\Rule;
3 if (!defined('ABSPATH')) exit;
4 use MailPoetVendor\Sabberworm\CSS\Comment\Comment;
5 use MailPoetVendor\Sabberworm\CSS\Comment\Commentable;
6 use MailPoetVendor\Sabberworm\CSS\OutputFormat;
7 use MailPoetVendor\Sabberworm\CSS\Parsing\ParserState;
8 use MailPoetVendor\Sabberworm\CSS\Parsing\UnexpectedEOFException;
9 use MailPoetVendor\Sabberworm\CSS\Parsing\UnexpectedTokenException;
10 use MailPoetVendor\Sabberworm\CSS\Renderable;
11 use MailPoetVendor\Sabberworm\CSS\Value\RuleValueList;
12 use MailPoetVendor\Sabberworm\CSS\Value\Value;
13 class Rule implements Renderable, Commentable
14 {
15 private $sRule;
16 private $mValue;
17 private $bIsImportant;
18 private $aIeHack;
19 protected $iLineNo;
20 protected $iColNo;
21 protected $aComments;
22 public function __construct($sRule, $iLineNo = 0, $iColNo = 0)
23 {
24 $this->sRule = $sRule;
25 $this->mValue = null;
26 $this->bIsImportant = \false;
27 $this->aIeHack = [];
28 $this->iLineNo = $iLineNo;
29 $this->iColNo = $iColNo;
30 $this->aComments = [];
31 }
32 public static function parse(ParserState $oParserState)
33 {
34 $aComments = $oParserState->consumeWhiteSpace();
35 $oRule = new Rule($oParserState->parseIdentifier(!$oParserState->comes("--")), $oParserState->currentLine(), $oParserState->currentColumn());
36 $oRule->setComments($aComments);
37 $oRule->addComments($oParserState->consumeWhiteSpace());
38 $oParserState->consume(':');
39 $oValue = Value::parseValue($oParserState, self::listDelimiterForRule($oRule->getRule()));
40 $oRule->setValue($oValue);
41 if ($oParserState->getSettings()->bLenientParsing) {
42 while ($oParserState->comes('\\')) {
43 $oParserState->consume('\\');
44 $oRule->addIeHack($oParserState->consume());
45 $oParserState->consumeWhiteSpace();
46 }
47 }
48 $oParserState->consumeWhiteSpace();
49 if ($oParserState->comes('!')) {
50 $oParserState->consume('!');
51 $oParserState->consumeWhiteSpace();
52 $oParserState->consume('important');
53 $oRule->setIsImportant(\true);
54 }
55 $oParserState->consumeWhiteSpace();
56 while ($oParserState->comes(';')) {
57 $oParserState->consume(';');
58 }
59 $oParserState->consumeWhiteSpace();
60 return $oRule;
61 }
62 private static function listDelimiterForRule($sRule)
63 {
64 if (\preg_match('/^font($|-)/', $sRule)) {
65 return [',', '/', ' '];
66 }
67 return [',', ' ', '/'];
68 }
69 public function getLineNo()
70 {
71 return $this->iLineNo;
72 }
73 public function getColNo()
74 {
75 return $this->iColNo;
76 }
77 public function setPosition($iLine, $iColumn)
78 {
79 $this->iColNo = $iColumn;
80 $this->iLineNo = $iLine;
81 }
82 public function setRule($sRule)
83 {
84 $this->sRule = $sRule;
85 }
86 public function getRule()
87 {
88 return $this->sRule;
89 }
90 public function getValue()
91 {
92 return $this->mValue;
93 }
94 public function setValue($mValue)
95 {
96 $this->mValue = $mValue;
97 }
98 public function setValues(array $aSpaceSeparatedValues)
99 {
100 $oSpaceSeparatedList = null;
101 if (\count($aSpaceSeparatedValues) > 1) {
102 $oSpaceSeparatedList = new RuleValueList(' ', $this->iLineNo);
103 }
104 foreach ($aSpaceSeparatedValues as $aCommaSeparatedValues) {
105 $oCommaSeparatedList = null;
106 if (\count($aCommaSeparatedValues) > 1) {
107 $oCommaSeparatedList = new RuleValueList(',', $this->iLineNo);
108 }
109 foreach ($aCommaSeparatedValues as $mValue) {
110 if (!$oSpaceSeparatedList && !$oCommaSeparatedList) {
111 $this->mValue = $mValue;
112 return $mValue;
113 }
114 if ($oCommaSeparatedList) {
115 $oCommaSeparatedList->addListComponent($mValue);
116 } else {
117 $oSpaceSeparatedList->addListComponent($mValue);
118 }
119 }
120 if (!$oSpaceSeparatedList) {
121 $this->mValue = $oCommaSeparatedList;
122 return $oCommaSeparatedList;
123 } else {
124 $oSpaceSeparatedList->addListComponent($oCommaSeparatedList);
125 }
126 }
127 $this->mValue = $oSpaceSeparatedList;
128 return $oSpaceSeparatedList;
129 }
130 public function getValues()
131 {
132 if (!$this->mValue instanceof RuleValueList) {
133 return [[$this->mValue]];
134 }
135 if ($this->mValue->getListSeparator() === ',') {
136 return [$this->mValue->getListComponents()];
137 }
138 $aResult = [];
139 foreach ($this->mValue->getListComponents() as $mValue) {
140 if (!$mValue instanceof RuleValueList || $mValue->getListSeparator() !== ',') {
141 $aResult[] = [$mValue];
142 continue;
143 }
144 if ($this->mValue->getListSeparator() === ' ' || \count($aResult) === 0) {
145 $aResult[] = [];
146 }
147 foreach ($mValue->getListComponents() as $mValue) {
148 $aResult[\count($aResult) - 1][] = $mValue;
149 }
150 }
151 return $aResult;
152 }
153 public function addValue($mValue, $sType = ' ')
154 {
155 if (!\is_array($mValue)) {
156 $mValue = [$mValue];
157 }
158 if (!$this->mValue instanceof RuleValueList || $this->mValue->getListSeparator() !== $sType) {
159 $mCurrentValue = $this->mValue;
160 $this->mValue = new RuleValueList($sType, $this->iLineNo);
161 if ($mCurrentValue) {
162 $this->mValue->addListComponent($mCurrentValue);
163 }
164 }
165 foreach ($mValue as $mValueItem) {
166 $this->mValue->addListComponent($mValueItem);
167 }
168 }
169 public function addIeHack($iModifier)
170 {
171 $this->aIeHack[] = $iModifier;
172 }
173 public function setIeHack(array $aModifiers)
174 {
175 $this->aIeHack = $aModifiers;
176 }
177 public function getIeHack()
178 {
179 return $this->aIeHack;
180 }
181 public function setIsImportant($bIsImportant)
182 {
183 $this->bIsImportant = $bIsImportant;
184 }
185 public function getIsImportant()
186 {
187 return $this->bIsImportant;
188 }
189 public function __toString()
190 {
191 return $this->render(new OutputFormat());
192 }
193 public function render(OutputFormat $oOutputFormat)
194 {
195 $sResult = "{$oOutputFormat->comments($this)}{$this->sRule}:{$oOutputFormat->spaceAfterRuleName()}";
196 if ($this->mValue instanceof Value) {
197 // Can also be a ValueList
198 $sResult .= $this->mValue->render($oOutputFormat);
199 } else {
200 $sResult .= $this->mValue;
201 }
202 if (!empty($this->aIeHack)) {
203 $sResult .= ' \\' . \implode('\\', $this->aIeHack);
204 }
205 if ($this->bIsImportant) {
206 $sResult .= ' !important';
207 }
208 $sResult .= ';';
209 return $sResult;
210 }
211 public function addComments(array $aComments)
212 {
213 $this->aComments = \array_merge($this->aComments, $aComments);
214 }
215 public function getComments()
216 {
217 return $this->aComments;
218 }
219 public function setComments(array $aComments)
220 {
221 $this->aComments = $aComments;
222 }
223 }
224