Automattic\WooCommerce\Vendor\Pelago\Emogrifier\HtmlProcessor

CssVariableEvaluator::evaluateVariablesInElementAndDescendantsprivateWC 1.0

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() 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;
}