tbela99 / css

A CSS parser and minifier and sourcemap generator written in PHP
Other
14 stars 1 forks source link

SVG problem ";" #36

Closed Cruglk closed 3 years ago

Cruglk commented 3 years ago

Code:

use \TBela\CSS\Parser; use \TBela\CSS\Renderer; $test = ' .test{background-color:red;}.t228__white-black .ya-share2__container_size_m .ya-share2__item_service_facebook .ya-share2__icon {background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMjIyIiB2aWV3Qm94PSIwIDAgMjggMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1LjEgMjN2LTguMjFoMi43NzNsLjQxNS0zLjJIMTUuMVY5LjU0N2MwLS45MjcuMjYtMS41NTggMS41OTYtMS41NThsMS43MDQtLjAwMlY1LjEyNkEyMi43ODcgMjIuNzg3IDAgMCAwIDE1LjkxNyA1QzEzLjQ2IDUgMTEuNzggNi40OTIgMTEuNzggOS4yM3YyLjM2SDl2My4yaDIuNzhWMjNoMy4zMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==) }.test{color:red;}';$parser = new Parser($test);$element = $parser->parse();echo $element;

Result:

.test { background-color: red } .t228__white-black .ya-share2__container_size_m .ya-share2__item_service_facebook .ya-share2__icon { background-image: url(data:image/svg+xmlurl } .test { color: red }

Not fully correct fix:

Parser.php

$statement = static::substr($block, $i, $j, [';', '}']);

After add:

if (strpos($statement,'svg+xml') !== false) { $statement = static::substr($block, $i, $j, ['}']); }

Problem:

.t228__white-black .ya-share2__container_size_m .ya-share2__item_service_facebook .ya-share2__icon { font-size: 14px; background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMjIyIiB2aWV3Qm94PSIwIDAgMjggMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1LjEgMjN2LTguMjFoMi43NzNsLjQxNS0zLjJIMTUuMVY5LjU0N2MwLS45MjcuMjYtMS41NTggMS41OTYtMS41NThsMS43MDQtLjAwMlY1LjEyNkEyMi43ODcgMjIuNzg3IDAgMCAwIDE1LjkxNyA1QzEzLjQ2IDUgMTEuNzggNi40OTIgMTEuNzggOS4yM3YyLjM2SDl2My4yaDIuNzhWMjNoMy4zMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==); color:red }

No indentation is added after the attribute.

tbela99 commented 3 years ago

Thanks for your report.

I will fix it ASAP