Automattic\WooCommerce\Vendor\Pelago\Emogrifier\HtmlProcessor
CssVariableEvaluator::evaluateVariablesInElementAndDescendants
Method of the class: CssVariableEvaluator{}
No Hooks.
Returns
$this.
Usage
// private - for code of main (parent) class only $result = $this->evaluateVariablesInElementAndDescendants( $element, $ancestorVariableDefinitions ): self;
- $element(DOMElement) (required)
- .
- $ancestorVariableDefinitions(array) (required)
- .
CssVariableEvaluator::evaluateVariablesInElementAndDescendants() CssVariableEvaluator::evaluateVariablesInElementAndDescendants code WC 10.5.0
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;
}