Automattic\WooCommerce\Vendor\Pelago\Emogrifier\HtmlProcessor
CssVariableEvaluator::evaluateVariablesInElementAndDescendants
Метод класса: CssVariableEvaluator{}
Хуков нет.
Возвращает
$this.
Использование
// private - только в коде основоного (родительского) класса $result = $this->evaluateVariablesInElementAndDescendants( $element, $ancestorVariableDefinitions ): self;
- $element(DOMElement) (обязательный)
- .
- $ancestorVariableDefinitions(array<non-empty-string, string>) (обязательный)
- .
Код CssVariableEvaluator::evaluateVariablesInElementAndDescendants() CssVariableEvaluator::evaluateVariablesInElementAndDescendants WC 11.2.1
private function evaluateVariablesInElementAndDescendants(
\DOMElement $element,
array $ancestorVariableDefinitions
): self {
$style = $element->getAttribute('style');
// Avoid parsing declarations if none use or define a variable
if ((new Preg())->match('/(?<![\\w\\-])--[\\w\\-]/', $style) !== 0) {
$declarations = (new DeclarationBlockParser())->parse($style);
$variableDefinitions = $this->currentVariableDefinitions
= $this->getVariableDefinitionsFromDeclarations($declarations) + $ancestorVariableDefinitions;
$newDeclarations = $this->replaceVariablesInDeclarations($declarations);
if ($newDeclarations !== null) {
$element->setAttribute('style', $this->getDeclarationsAsString($newDeclarations));
}
} else {
$variableDefinitions = $ancestorVariableDefinitions;
}
foreach ($element->childNodes as $child) {
if ($child instanceof \DOMElement) {
$this->evaluateVariablesInElementAndDescendants($child, $variableDefinitions);
}
}
return $this;
}