Automattic\WooCommerce\Vendor\Sabberworm\CSS\CSSList

CSSBlockList::allSelectorsprotectedWC 1.0

Method of the class: CSSBlockList{}

No Hooks.

Returns

null. Nothing (null).

Usage

// protected - for code of main (parent) or child class
$result = $this->allSelectors( $aResult, $sSpecificitySearch );
$aResult(array) (required)
.
$sSpecificitySearch(string|null)
.
Default: null

CSSBlockList::allSelectors() code WC 10.7.0

protected function allSelectors(array &$aResult, $sSpecificitySearch = null)
{
    /** @var array<int, DeclarationBlock> $aDeclarationBlocks */
    $aDeclarationBlocks = [];
    $this->allDeclarationBlocks($aDeclarationBlocks);
    foreach ($aDeclarationBlocks as $oBlock) {
        foreach ($oBlock->getSelectors() as $oSelector) {
            if ($sSpecificitySearch === null) {
                $aResult[] = $oSelector;
            } else {
                $sComparator = '===';
                $aSpecificitySearch = explode(' ', $sSpecificitySearch);
                $iTargetSpecificity = $aSpecificitySearch[0];
                if (count($aSpecificitySearch) > 1) {
                    $sComparator = $aSpecificitySearch[0];
                    $iTargetSpecificity = $aSpecificitySearch[1];
                }
                $iTargetSpecificity = (int)$iTargetSpecificity;
                $iSelectorSpecificity = $oSelector->getSpecificity();
                $bMatches = false;
                switch ($sComparator) {
                    case '<=':
                        $bMatches = $iSelectorSpecificity <= $iTargetSpecificity;
                        break;
                    case '<':
                        $bMatches = $iSelectorSpecificity < $iTargetSpecificity;
                        break;
                    case '>=':
                        $bMatches = $iSelectorSpecificity >= $iTargetSpecificity;
                        break;
                    case '>':
                        $bMatches = $iSelectorSpecificity > $iTargetSpecificity;
                        break;
                    default:
                        $bMatches = $iSelectorSpecificity === $iTargetSpecificity;
                        break;
                }
                if ($bMatches) {
                    $aResult[] = $oSelector;
                }
            }
        }
    }
}