Closed Cruglk closed 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.
Thanks for your report.
I will fix it ASAP
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.