Automattic\WooCommerce\Vendor\Pelago\Emogrifier\HtmlProcessor

CssVariableEvaluator::evaluateVariablesInElementAndDescendants │ private │ WC 1.0

Метод класса: CssVariableEvaluator{}

Хуков нет.

Возвращает

$this.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->evaluateVariablesInElementAndDescendants( $element, $ancestorVariableDefinitions ): self;
$element(DOMElement) (обязательный)
.
$ancestorVariableDefinitions(array<non-empty-string, string>) (обязательный)
.

Код 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;
}