mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-24 02:58:43 +02:00
N°7177 Update pelago/emogrifier from 6.0.0 to 7.2.0
This commit is contained in:
@@ -1496,36 +1496,36 @@
|
||||
},
|
||||
{
|
||||
"name": "pelago/emogrifier",
|
||||
"version": "v6.0.0",
|
||||
"version_normalized": "6.0.0.0",
|
||||
"version": "v7.2.0",
|
||||
"version_normalized": "7.2.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/MyIntervals/emogrifier.git",
|
||||
"reference": "aa72d5407efac118f3896bcb995a2cba793df0ae"
|
||||
"reference": "727bdf7255b51798307f17dec52ff8a91f1c7de3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/aa72d5407efac118f3896bcb995a2cba793df0ae",
|
||||
"reference": "aa72d5407efac118f3896bcb995a2cba793df0ae",
|
||||
"url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/727bdf7255b51798307f17dec52ff8a91f1c7de3",
|
||||
"reference": "727bdf7255b51798307f17dec52ff8a91f1c7de3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-libxml": "*",
|
||||
"php": "~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0",
|
||||
"sabberworm/php-css-parser": "^8.3.1",
|
||||
"symfony/css-selector": "^3.4.32 || ^4.4 || ^5.3 || ^6.0"
|
||||
"php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
|
||||
"sabberworm/php-css-parser": "^8.4.0",
|
||||
"symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0 || ^7.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-parallel-lint/php-parallel-lint": "^1.3.0",
|
||||
"phpunit/phpunit": "^8.5.16",
|
||||
"rawr/cross-data-providers": "^2.3.0"
|
||||
"php-parallel-lint/php-parallel-lint": "1.3.2",
|
||||
"phpunit/phpunit": "9.6.11",
|
||||
"rawr/cross-data-providers": "2.4.0"
|
||||
},
|
||||
"time": "2021-09-16T16:22:04+00:00",
|
||||
"time": "2023-12-06T02:00:20+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "7.0.x-dev"
|
||||
"dev-main": "8.0.x-dev"
|
||||
}
|
||||
},
|
||||
"installation-source": "dist",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
'name' => 'combodo/itop',
|
||||
'pretty_version' => 'dev-develop',
|
||||
'version' => 'dev-develop',
|
||||
'reference' => '1878aafd4399ad3109742460b5de84883ee87db2',
|
||||
'reference' => 'befb061f0ddb07527ed1d1fb0dde21e29428db75',
|
||||
'type' => 'project',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
@@ -22,7 +22,7 @@
|
||||
'combodo/itop' => array(
|
||||
'pretty_version' => 'dev-develop',
|
||||
'version' => 'dev-develop',
|
||||
'reference' => '1878aafd4399ad3109742460b5de84883ee87db2',
|
||||
'reference' => 'befb061f0ddb07527ed1d1fb0dde21e29428db75',
|
||||
'type' => 'project',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
@@ -206,9 +206,9 @@
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'pelago/emogrifier' => array(
|
||||
'pretty_version' => 'v6.0.0',
|
||||
'version' => '6.0.0.0',
|
||||
'reference' => 'aa72d5407efac118f3896bcb995a2cba793df0ae',
|
||||
'pretty_version' => 'v7.2.0',
|
||||
'version' => '7.2.0.0',
|
||||
'reference' => '727bdf7255b51798307f17dec52ff8a91f1c7de3',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../pelago/emogrifier',
|
||||
'aliases' => array(),
|
||||
|
||||
@@ -10,12 +10,45 @@ This project adheres to [Semantic Versioning](https://semver.org/).
|
||||
### Changed
|
||||
|
||||
### Deprecated
|
||||
- Support for PHP 7.3 will be removed in Emogrifier 8.0.
|
||||
|
||||
### Removed
|
||||
|
||||
### Fixed
|
||||
|
||||
## 7.2.0: Add support for Symfony 7
|
||||
|
||||
### Added
|
||||
- Add support for Symfony 7 (#1243)
|
||||
|
||||
## 7.1.0: Add support for PHP 8.3
|
||||
|
||||
### Added
|
||||
- Add support for PHP 8.3 (#1218)
|
||||
|
||||
### Changed
|
||||
- Disable HTML formatting by default (#1214)
|
||||
|
||||
## 7.0.0
|
||||
|
||||
### Added
|
||||
- Add support for PHP 8.2 (#1155)
|
||||
|
||||
### Changed
|
||||
- Throw exception with invalid CSS in debug mode (#1142)
|
||||
- Only support up to 69 atomic expressions in a selector (#1113)
|
||||
- Require `sabberworm/php-css-parser:^8.4.0` (#1134)
|
||||
- Upgrade to PHPUnit 9 (#1112)
|
||||
|
||||
### Deprecated
|
||||
- Support for PHP 7.3 will be removed in Emogrifier 8.0.
|
||||
|
||||
### Removed
|
||||
- Drop support for Symfony 3.x and 5.3 (#1120, #1162)
|
||||
- Drop support for PHP 7.2 (#1111)
|
||||
|
||||
### Fixed
|
||||
- Bump the minimum Symfony 4.4 version to avoid PHP deprecation warnings (#1187)
|
||||
|
||||
## 6.0.0
|
||||
|
||||
### Added
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
[](https://github.com/MyIntervals/emogrifier/actions/)
|
||||
[](https://packagist.org/packages/pelago/emogrifier)
|
||||
[](https://packagist.org/packages/pelago/emogrifier)
|
||||
[](https://packagist.org/packages/pelago/emogrifier)
|
||||
[](https://packagist.org/packages/pelago/emogrifier)
|
||||
|
||||
_n. e•mog•ri•fi•er [\ē-'mä-grƏ-,fī-Ər\] - a utility for changing completely the
|
||||
@@ -122,7 +121,6 @@ The `HtmlNormalizer` class normalizes the given HTML in the following ways:
|
||||
- add a document type (HTML5) if missing
|
||||
- disentangle incorrectly nested tags
|
||||
- add HEAD and BODY elements (if they are missing)
|
||||
- reformat the HTML
|
||||
|
||||
The class can be used like this:
|
||||
|
||||
@@ -408,16 +406,16 @@ They will, however, be preserved and copied to a `<style>` element in the HTML:
|
||||
|
||||
1. In the [composer.json](composer.json), update the `branch-alias` entry to
|
||||
point to the release _after_ the upcoming release.
|
||||
1. In the [CHANGELOG.md](CHANGELOG.md), create a new section with subheadings
|
||||
2. In the [CHANGELOG.md](CHANGELOG.md), create a new section with subheadings
|
||||
for changes _after_ the upcoming release, set the version number for the
|
||||
upcoming release, and remove any empty sections.
|
||||
1. Create a pull request "Prepare release of version x.y.z" with those
|
||||
3. Create a pull request "Prepare release of version x.y.z" with those
|
||||
changes.
|
||||
1. Have the pull request reviewed and merged.
|
||||
1. Tag the new release.
|
||||
1. In the [Releases tab](https://github.com/MyIntervals/emogrifier/releases),
|
||||
4. Have the pull request reviewed and merged.
|
||||
5. Tag the new release.
|
||||
6. In the [Releases tab](https://github.com/MyIntervals/emogrifier/releases),
|
||||
create a new release and copy the change log entries to the new release.
|
||||
1. Post about the new release on social media.
|
||||
7. Post about the new release on social media.
|
||||
|
||||
## Maintainers
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
{
|
||||
"name": "pelago/emogrifier",
|
||||
"description": "Converts CSS styles into inline style attributes in your HTML code",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"email",
|
||||
"css",
|
||||
"pre-processing"
|
||||
],
|
||||
"homepage": "https://www.myintervals.com/emogrifier.php",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Oliver Klee",
|
||||
@@ -32,29 +31,24 @@
|
||||
"name": "Jaime Prado"
|
||||
}
|
||||
],
|
||||
"homepage": "https://www.myintervals.com/emogrifier.php",
|
||||
"support": {
|
||||
"issues": "https://github.com/MyIntervals/emogrifier/issues",
|
||||
"source": "https://github.com/MyIntervals/emogrifier"
|
||||
},
|
||||
"require": {
|
||||
"php": "~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0",
|
||||
"php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
|
||||
"ext-dom": "*",
|
||||
"ext-libxml": "*",
|
||||
"sabberworm/php-css-parser": "^8.3.1",
|
||||
"symfony/css-selector": "^3.4.32 || ^4.4 || ^5.3 || ^6.0"
|
||||
"sabberworm/php-css-parser": "^8.4.0",
|
||||
"symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0 || ^7.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-parallel-lint/php-parallel-lint": "^1.3.0",
|
||||
"phpunit/phpunit": "^8.5.16",
|
||||
"rawr/cross-data-providers": "^2.3.0"
|
||||
},
|
||||
"config": {
|
||||
"preferred-install": {
|
||||
"*": "dist"
|
||||
},
|
||||
"sort-packages": true
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "7.0.x-dev"
|
||||
}
|
||||
"php-parallel-lint/php-parallel-lint": "1.3.2",
|
||||
"phpunit/phpunit": "9.6.11",
|
||||
"rawr/cross-data-providers": "2.4.0"
|
||||
},
|
||||
"prefer-stable": true,
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Pelago\\Emogrifier\\": "src/"
|
||||
@@ -65,21 +59,31 @@
|
||||
"Pelago\\Emogrifier\\Tests\\": "tests/"
|
||||
}
|
||||
},
|
||||
"prefer-stable": true,
|
||||
"config": {
|
||||
"preferred-install": {
|
||||
"*": "dist"
|
||||
},
|
||||
"sort-packages": true
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "8.0.x-dev"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"ci": [
|
||||
"@ci:static",
|
||||
"@ci:dynamic"
|
||||
],
|
||||
"ci:composer:normalize": "@php \"./.phive/composer-normalize\" --dry-run",
|
||||
"ci:composer:normalize": "\"./.phive/composer-normalize\" --dry-run",
|
||||
"ci:dynamic": [
|
||||
"@ci:tests"
|
||||
],
|
||||
"ci:php:fixer": "@php \"./.phive/php-cs-fixer\" --config=config/php-cs-fixer.php fix --dry-run -v --show-progress=dots config/ src/ tests/",
|
||||
"ci:php:fixer": "\"./.phive/php-cs-fixer\" --config=config/php-cs-fixer.php fix --dry-run -v --show-progress=dots config/ src/ tests/",
|
||||
"ci:php:lint": "\"./vendor/bin/parallel-lint\" config src tests",
|
||||
"ci:php:md": "@php \"./.phive/phpmd\" src text config/phpmd.xml",
|
||||
"ci:php:psalm": "@php \"./.phive/psalm\" --show-info=false",
|
||||
"ci:php:sniff": "@php \"./.phive/phpcs\" config src tests",
|
||||
"ci:php:md": "\"./.phive/phpmd\" src text config/phpmd.xml",
|
||||
"ci:php:psalm": "\"./.phive/psalm\" --show-info=false",
|
||||
"ci:php:sniff": "\"./.phive/phpcs\" config src tests",
|
||||
"ci:static": [
|
||||
"@ci:composer:normalize",
|
||||
"@ci:php:lint",
|
||||
@@ -91,13 +95,13 @@
|
||||
"ci:tests": [
|
||||
"@ci:tests:unit"
|
||||
],
|
||||
"ci:tests:sof": "@php \"./vendor/bin/phpunit\" --stop-on-failure",
|
||||
"ci:tests:unit": "@php \"./vendor/bin/phpunit\"",
|
||||
"composer:normalize": "@php \"./.phive/composer-normalize\"",
|
||||
"php:fix": "@php \"./.phive/php-cs-fixer\" --config=config/php-cs-fixer.php fix config/ src/ tests/",
|
||||
"ci:tests:sof": "@php \"./vendor/bin/phpunit\" --stop-on-failure --do-not-cache-result",
|
||||
"ci:tests:unit": "@php \"./vendor/bin/phpunit\" --do-not-cache-result",
|
||||
"composer:normalize": "\"./.phive/composer-normalize\" --no-check-lock",
|
||||
"php:fix": "\"./.phive/php-cs-fixer\" --config=config/php-cs-fixer.php fix config/ src/ tests/",
|
||||
"php:version": "@php -v | grep -Po 'PHP\\s++\\K(?:\\d++\\.)*+\\d++(?:-\\w++)?+'",
|
||||
"psalm:baseline": "@php \"./.phive/psalm\" --set-baseline=psalm.baseline.xml",
|
||||
"psalm:cc": "@php \"./.phive/psalm\" --clear-cache"
|
||||
"psalm:baseline": "\"./.phive/psalm\" --set-baseline=psalm.baseline.xml",
|
||||
"psalm:cc": "\"./.phive/psalm\" --clear-cache"
|
||||
},
|
||||
"scripts-descriptions": {
|
||||
"ci": "Runs all dynamic and static code checks.",
|
||||
@@ -117,9 +121,5 @@
|
||||
"php:version": "Outputs the installed PHP version.",
|
||||
"psalm:baseline": "Updates the Psalm baseline file to match the code.",
|
||||
"psalm:cc": "Clears the Psalm cache."
|
||||
},
|
||||
"support": {
|
||||
"issues": "https://github.com/MyIntervals/emogrifier/issues",
|
||||
"source": "https://github.com/MyIntervals/emogrifier"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.5/phpunit.xsd"
|
||||
bootstrap="vendor/autoload.php"
|
||||
colors="true"
|
||||
executionOrder="depends,defects"
|
||||
forceCoversAnnotation="true"
|
||||
beStrictAboutCoversAnnotation="true"
|
||||
beStrictAboutOutputDuringTests="true"
|
||||
beStrictAboutTodoAnnotatedTests="true"
|
||||
verbose="true">
|
||||
<testsuites>
|
||||
<testsuite name="default">
|
||||
<directory>tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
|
||||
<filter>
|
||||
<whitelist processUncoveredFilesFromWhitelist="true">
|
||||
<directory suffix=".php">src</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
</phpunit>
|
||||
@@ -13,6 +13,7 @@ use Sabberworm\CSS\Property\Import as CssImport;
|
||||
use Sabberworm\CSS\Renderable as CssRenderable;
|
||||
use Sabberworm\CSS\RuleSet\DeclarationBlock as CssDeclarationBlock;
|
||||
use Sabberworm\CSS\RuleSet\RuleSet as CssRuleSet;
|
||||
use Sabberworm\CSS\Settings as ParserSettings;
|
||||
|
||||
/**
|
||||
* Parses and stores a CSS document from a string of CSS, and provides methods to obtain the CSS in parts or as data
|
||||
@@ -37,13 +38,30 @@ class CssDocument
|
||||
|
||||
/**
|
||||
* @param string $css
|
||||
* @param bool $debug
|
||||
* If this is `true`, an exception will be thrown if invalid CSS is encountered.
|
||||
* Otherwise the parser will try to do the best it can.
|
||||
*/
|
||||
public function __construct(string $css)
|
||||
public function __construct(string $css, bool $debug)
|
||||
{
|
||||
$cssParser = new CssParser($css);
|
||||
/** @var SabberwormCssDocument $sabberwormCssDocument */
|
||||
$sabberwormCssDocument = $cssParser->parse();
|
||||
$this->sabberwormCssDocument = $sabberwormCssDocument;
|
||||
// CSS Parser currently throws exception with nested at-rules (like `@media`) in strict parsing mode
|
||||
$parserSettings = ParserSettings::create()->withLenientParsing(!$debug || $this->hasNestedAtRule($css));
|
||||
|
||||
// CSS Parser currently throws exception with non-empty whitespace-only CSS in strict parsing mode, so `trim()`
|
||||
// @see https://github.com/sabberworm/PHP-CSS-Parser/issues/349
|
||||
$this->sabberwormCssDocument = (new CssParser(\trim($css), $parserSettings))->parse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests if a string of CSS appears to contain an at-rule with nested rules
|
||||
* (`@media`, `@supports`, `@keyframes`, `@document`,
|
||||
* the latter two additionally with vendor prefixes that may commonly be used).
|
||||
*
|
||||
* @see https://github.com/sabberworm/PHP-CSS-Parser/issues/127
|
||||
*/
|
||||
private function hasNestedAtRule(string $css): bool
|
||||
{
|
||||
return \preg_match('/@(?:media|supports|(?:-webkit-|-moz-|-ms-|-o-)?+(keyframes|document))\\b/', $css) === 1;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,7 +69,7 @@ class CssDocument
|
||||
*
|
||||
* @param array<array-key, string> $allowedMediaTypes
|
||||
*
|
||||
* @return array<int, StyleRule>
|
||||
* @return list<StyleRule>
|
||||
*/
|
||||
public function getStyleRulesData(array $allowedMediaTypes): array
|
||||
{
|
||||
@@ -86,7 +104,6 @@ class CssDocument
|
||||
public function renderNonConditionalAtRules(): string
|
||||
{
|
||||
$this->isImportRuleAllowed = true;
|
||||
/** @var array<int, CssRenderable> $cssContents */
|
||||
$cssContents = $this->sabberwormCssDocument->getContents();
|
||||
$atRules = \array_filter($cssContents, [$this, 'isValidAtRuleToRender']);
|
||||
|
||||
@@ -97,9 +114,7 @@ class CssDocument
|
||||
$atRulesDocument = new SabberwormCssDocument();
|
||||
$atRulesDocument->setContents($atRules);
|
||||
|
||||
/** @var string $renderedRules */
|
||||
$renderedRules = $atRulesDocument->render();
|
||||
return $renderedRules;
|
||||
return $atRulesDocument->render();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -115,7 +130,6 @@ class CssDocument
|
||||
$result = null;
|
||||
|
||||
if ($rule->atRuleName() === 'media') {
|
||||
/** @var string $mediaQueryList */
|
||||
$mediaQueryList = $rule->atRuleArgs();
|
||||
[$mediaType] = \explode('(', $mediaQueryList, 2);
|
||||
if (\trim($mediaType) !== '') {
|
||||
|
||||
@@ -161,7 +161,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
*
|
||||
* @param string $css the CSS to inline, must be UTF-8-encoded
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*
|
||||
* @throws ParseException in debug mode, if an invalid selector is encountered
|
||||
* @throws \RuntimeException in debug mode, if an internal PCRE error occurs
|
||||
@@ -179,7 +179,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
if ($this->isStyleBlocksParsingEnabled) {
|
||||
$combinedCss .= $this->getCssFromAllStyleNodes();
|
||||
}
|
||||
$parsedCss = new CssDocument($combinedCss);
|
||||
$parsedCss = new CssDocument($combinedCss, $this->debug);
|
||||
|
||||
$excludedNodes = $this->getNodesToExclude();
|
||||
$cssRules = $this->collateCssRules($parsedCss);
|
||||
@@ -218,7 +218,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
/**
|
||||
* Disables the parsing of inline styles.
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function disableInlineStyleAttributesParsing(): self
|
||||
{
|
||||
@@ -230,7 +230,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
/**
|
||||
* Disables the parsing of `<style>` blocks.
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function disableStyleBlocksParsing(): self
|
||||
{
|
||||
@@ -244,7 +244,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
*
|
||||
* @param string $mediaName the media type name, e.g., "braille"
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function addAllowedMediaType(string $mediaName): self
|
||||
{
|
||||
@@ -258,7 +258,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
*
|
||||
* @param string $mediaName the tag name, e.g., "braille"
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function removeAllowedMediaType(string $mediaName): self
|
||||
{
|
||||
@@ -276,7 +276,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
*
|
||||
* @param string $selector the selector to exclude, e.g., ".editor"
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function addExcludedSelector(string $selector): self
|
||||
{
|
||||
@@ -290,7 +290,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
*
|
||||
* @param string $selector the selector to no longer exclude, e.g., ".editor"
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function removeExcludedSelector(string $selector): self
|
||||
{
|
||||
@@ -306,7 +306,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
*
|
||||
* @param bool $debug set to true to enable debug mode
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function setDebug(bool $debug): self
|
||||
{
|
||||
@@ -463,7 +463,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
|
||||
$properties = [];
|
||||
foreach (\preg_split('/;(?!base64|charset)/', $cssDeclarationsBlock) as $declaration) {
|
||||
/** @var array<int, string> $matches */
|
||||
/** @var list<string> $matches */
|
||||
$matches = [];
|
||||
if (!\preg_match('/^([A-Za-z\\-]+)\\s*:\\s*(.+)$/s', \trim($declaration), $matches)) {
|
||||
continue;
|
||||
@@ -492,7 +492,9 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
|
||||
$css = '';
|
||||
foreach ($styleNodes as $styleNode) {
|
||||
$css .= "\n\n" . $styleNode->nodeValue;
|
||||
if (\is_string($styleNode->nodeValue)) {
|
||||
$css .= "\n\n" . $styleNode->nodeValue;
|
||||
}
|
||||
$parentNode = $styleNode->parentNode;
|
||||
if ($parentNode instanceof \DOMNode) {
|
||||
$parentNode->removeChild($styleNode);
|
||||
@@ -505,7 +507,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
/**
|
||||
* Find the nodes that are not to be emogrified.
|
||||
*
|
||||
* @return array<int, \DOMElement>
|
||||
* @return list<\DOMElement>
|
||||
*
|
||||
* @throws ParseException
|
||||
* @throws \UnexpectedValueException
|
||||
@@ -608,8 +610,8 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
\usort(
|
||||
$cssRules['inlinable'],
|
||||
/**
|
||||
* @param array{selector: string, line: int} $first
|
||||
* @param array{selector: string, line: int} $second
|
||||
* @param array{selector: string, line: int, ...} $first
|
||||
* @param array{selector: string, line: int, ...} $second
|
||||
*/
|
||||
function (array $first, array $second): int {
|
||||
return $this->sortBySelectorPrecedence($first, $second);
|
||||
@@ -667,8 +669,8 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array{selector: string, line: int} $first
|
||||
* @param array{selector: string, line: int} $second
|
||||
* @param array{selector: string, line: int, ...} $first
|
||||
* @param array{selector: string, line: int, ...} $second
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
@@ -1146,7 +1148,7 @@ class CssInliner extends AbstractHtmlProcessor
|
||||
*
|
||||
* This method only supports strings, not arrays of strings.
|
||||
*
|
||||
* @param string $pattern
|
||||
* @param non-empty-string $pattern
|
||||
* @param string $replacement
|
||||
* @param string $subject
|
||||
*
|
||||
|
||||
@@ -240,7 +240,7 @@ abstract class AbstractHtmlProcessor
|
||||
{
|
||||
$domDocument = new \DOMDocument();
|
||||
$domDocument->strictErrorChecking = false;
|
||||
$domDocument->formatOutput = true;
|
||||
$domDocument->formatOutput = false;
|
||||
$libXmlState = \libxml_use_internal_errors(true);
|
||||
$domDocument->loadHTML($this->prepareHtmlForDomConversion($html));
|
||||
\libxml_clear_errors();
|
||||
|
||||
@@ -50,7 +50,7 @@ class CssToAttributeConverter extends AbstractHtmlProcessor
|
||||
/**
|
||||
* Maps the CSS from the style nodes to visual HTML attributes.
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function convertCssToVisualAttributes(): self
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@ class HtmlPruner extends AbstractHtmlProcessor
|
||||
/**
|
||||
* Removes elements that have a "display: none;" style.
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function removeElementsWithDisplayNone(): self
|
||||
{
|
||||
@@ -57,7 +57,7 @@ class HtmlPruner extends AbstractHtmlProcessor
|
||||
*
|
||||
* @param array<array-key, string> $classesToKeep names of classes that should not be removed
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*/
|
||||
public function removeRedundantClasses(array $classesToKeep = []): self
|
||||
{
|
||||
@@ -118,7 +118,7 @@ class HtmlPruner extends AbstractHtmlProcessor
|
||||
*
|
||||
* @param CssInliner $cssInliner object instance that performed the CSS inlining
|
||||
*
|
||||
* @return self fluent interface
|
||||
* @return $this
|
||||
*
|
||||
* @throws \BadMethodCallException if `inlineCss` has not first been called on `$cssInliner`
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user