Automattic\WooCommerce\Vendor\Symfony\Component\CssSelector\XPath\Extension
CombinationExtension{}└─ AbstractExtension
XPath expression translator combination extension.
This component is a port of the Python cssselect library, which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
No Hooks.
Usage
$CombinationExtension = new CombinationExtension(); // use class methods
Methods
- public getCombinationTranslators()
- public getName()
- public translateChild(XPathExpr $xpath, XPathExpr $combinedXpath)
- public translateDescendant(XPathExpr $xpath, XPathExpr $combinedXpath)
- public translateDirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath)
- public translateIndirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath)
CombinationExtension{} CombinationExtension{} code WC 10.4.3
class CombinationExtension extends AbstractExtension
{
/**
* {@inheritdoc}
*/
public function getCombinationTranslators(): array
{
return [
' ' => [$this, 'translateDescendant'],
'>' => [$this, 'translateChild'],
'+' => [$this, 'translateDirectAdjacent'],
'~' => [$this, 'translateIndirectAdjacent'],
];
}
public function translateDescendant(XPathExpr $xpath, XPathExpr $combinedXpath): XPathExpr
{
return $xpath->join('/descendant-or-self::*/', $combinedXpath);
}
public function translateChild(XPathExpr $xpath, XPathExpr $combinedXpath): XPathExpr
{
return $xpath->join('/', $combinedXpath);
}
public function translateDirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath): XPathExpr
{
return $xpath
->join('/following-sibling::', $combinedXpath)
->addNameTest()
->addCondition('position() = 1');
}
public function translateIndirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath): XPathExpr
{
return $xpath->join('/following-sibling::', $combinedXpath);
}
/**
* {@inheritdoc}
*/
public function getName(): string
{
return 'combination';
}
}