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 / OutputFormatter.php
wp-user-avatar / third-party / vendor / sabberworm / php-css-parser / src Last commit date
CSSList 2 months ago Comment 2 months ago Parsing 2 months ago Position 2 months ago Property 2 months ago Rule 2 months ago RuleSet 2 months ago Value 2 months ago CSSElement.php 2 months ago OutputFormat.php 2 months ago OutputFormatter.php 2 months ago Parser.php 2 months ago Renderable.php 2 months ago Settings.php 2 months ago
OutputFormatter.php
245 lines
1 <?php
2
3 namespace ProfilePressVendor\Sabberworm\CSS;
4
5 use ProfilePressVendor\Sabberworm\CSS\Comment\Commentable;
6 use ProfilePressVendor\Sabberworm\CSS\Parsing\OutputException;
7 /**
8 * @internal since 8.8.0
9 */
10 class OutputFormatter
11 {
12 /**
13 * @var OutputFormat
14 */
15 private $oFormat;
16 public function __construct(OutputFormat $oFormat)
17 {
18 $this->oFormat = $oFormat;
19 }
20 /**
21 * @param string $sName
22 * @param string|null $sType
23 *
24 * @return string
25 */
26 public function space($sName, $sType = null)
27 {
28 $sSpaceString = $this->oFormat->get("Space{$sName}");
29 // If $sSpaceString is an array, we have multiple values configured
30 // depending on the type of object the space applies to
31 if (is_array($sSpaceString)) {
32 if ($sType !== null && isset($sSpaceString[$sType])) {
33 $sSpaceString = $sSpaceString[$sType];
34 } else {
35 $sSpaceString = reset($sSpaceString);
36 }
37 }
38 return $this->prepareSpace($sSpaceString);
39 }
40 /**
41 * @return string
42 */
43 public function spaceAfterRuleName()
44 {
45 return $this->space('AfterRuleName');
46 }
47 /**
48 * @return string
49 */
50 public function spaceBeforeRules()
51 {
52 return $this->space('BeforeRules');
53 }
54 /**
55 * @return string
56 */
57 public function spaceAfterRules()
58 {
59 return $this->space('AfterRules');
60 }
61 /**
62 * @return string
63 */
64 public function spaceBetweenRules()
65 {
66 return $this->space('BetweenRules');
67 }
68 /**
69 * @return string
70 */
71 public function spaceBeforeBlocks()
72 {
73 return $this->space('BeforeBlocks');
74 }
75 /**
76 * @return string
77 */
78 public function spaceAfterBlocks()
79 {
80 return $this->space('AfterBlocks');
81 }
82 /**
83 * @return string
84 */
85 public function spaceBetweenBlocks()
86 {
87 return $this->space('BetweenBlocks');
88 }
89 /**
90 * @return string
91 */
92 public function spaceBeforeSelectorSeparator()
93 {
94 return $this->space('BeforeSelectorSeparator');
95 }
96 /**
97 * @return string
98 */
99 public function spaceAfterSelectorSeparator()
100 {
101 return $this->space('AfterSelectorSeparator');
102 }
103 /**
104 * @param string $sSeparator
105 *
106 * @return string
107 */
108 public function spaceBeforeListArgumentSeparator($sSeparator)
109 {
110 $spaceForSeparator = $this->oFormat->getSpaceBeforeListArgumentSeparators();
111 if (isset($spaceForSeparator[$sSeparator])) {
112 return $spaceForSeparator[$sSeparator];
113 }
114 return $this->space('BeforeListArgumentSeparator', $sSeparator);
115 }
116 /**
117 * @param string $sSeparator
118 *
119 * @return string
120 */
121 public function spaceAfterListArgumentSeparator($sSeparator)
122 {
123 $spaceForSeparator = $this->oFormat->getSpaceAfterListArgumentSeparators();
124 if (isset($spaceForSeparator[$sSeparator])) {
125 return $spaceForSeparator[$sSeparator];
126 }
127 return $this->space('AfterListArgumentSeparator', $sSeparator);
128 }
129 /**
130 * @return string
131 */
132 public function spaceBeforeOpeningBrace()
133 {
134 return $this->space('BeforeOpeningBrace');
135 }
136 /**
137 * Runs the given code, either swallowing or passing exceptions, depending on the `bIgnoreExceptions` setting.
138 *
139 * @param string $cCode the name of the function to call
140 *
141 * @return string|null
142 */
143 public function safely($cCode)
144 {
145 if ($this->oFormat->get('IgnoreExceptions')) {
146 // If output exceptions are ignored, run the code with exception guards
147 try {
148 return $cCode();
149 } catch (OutputException $e) {
150 return null;
151 }
152 // Do nothing
153 } else {
154 // Run the code as-is
155 return $cCode();
156 }
157 }
158 /**
159 * Clone of the `implode` function, but calls `render` with the current output format instead of `__toString()`.
160 *
161 * @param string $sSeparator
162 * @param array<array-key, Renderable|string> $aValues
163 * @param bool $bIncreaseLevel
164 *
165 * @return string
166 */
167 public function implode($sSeparator, array $aValues, $bIncreaseLevel = \false)
168 {
169 $sResult = '';
170 $oFormat = $this->oFormat;
171 if ($bIncreaseLevel) {
172 $oFormat = $oFormat->nextLevel();
173 }
174 $bIsFirst = \true;
175 foreach ($aValues as $mValue) {
176 if ($bIsFirst) {
177 $bIsFirst = \false;
178 } else {
179 $sResult .= $sSeparator;
180 }
181 if ($mValue instanceof Renderable) {
182 $sResult .= $mValue->render($oFormat);
183 } else {
184 $sResult .= $mValue;
185 }
186 }
187 return $sResult;
188 }
189 /**
190 * @param string $sString
191 *
192 * @return string
193 */
194 public function removeLastSemicolon($sString)
195 {
196 if ($this->oFormat->get('SemicolonAfterLastRule')) {
197 return $sString;
198 }
199 $sString = explode(';', $sString);
200 if (count($sString) < 2) {
201 return $sString[0];
202 }
203 $sLast = array_pop($sString);
204 $sNextToLast = array_pop($sString);
205 array_push($sString, $sNextToLast . $sLast);
206 return implode(';', $sString);
207 }
208 /**
209 *
210 * @param array<Commentable> $aComments
211 *
212 * @return string
213 */
214 public function comments(Commentable $oCommentable)
215 {
216 if (!$this->oFormat->bRenderComments) {
217 return '';
218 }
219 $sResult = '';
220 $aComments = $oCommentable->getComments();
221 $iLastCommentIndex = count($aComments) - 1;
222 foreach ($aComments as $i => $oComment) {
223 $sResult .= $oComment->render($this->oFormat);
224 $sResult .= $i === $iLastCommentIndex ? $this->spaceAfterBlocks() : $this->spaceBetweenBlocks();
225 }
226 return $sResult;
227 }
228 /**
229 * @param string $sSpaceString
230 *
231 * @return string
232 */
233 private function prepareSpace($sSpaceString)
234 {
235 return str_replace("\n", "\n" . $this->indent(), $sSpaceString);
236 }
237 /**
238 * @return string
239 */
240 private function indent()
241 {
242 return str_repeat($this->oFormat->sIndentation, $this->oFormat->getIndentationLevel());
243 }
244 }
245