class CombinationExtension
XPath expression translator combination extension.
This component is a port of the Python cssselect library, which is copyright Ian Bicking, @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
@internal
Hierarchy
- class \Symfony\Component\CssSelector\XPath\Extension\AbstractExtension implements \Symfony\Component\CssSelector\XPath\Extension\ExtensionInterface
- class \Symfony\Component\CssSelector\XPath\Extension\CombinationExtension extends \Symfony\Component\CssSelector\XPath\Extension\AbstractExtension
Expanded class hierarchy of CombinationExtension
See also
https://github.com/SimonSapin/cssselect.
File
-
vendor/
symfony/ css-selector/ XPath/ Extension/ CombinationExtension.php, line 26
Namespace
Symfony\Component\CssSelector\XPath\ExtensionView source
class CombinationExtension extends AbstractExtension {
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);
}
public function getName() : string {
return 'combination';
}
}