* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\CssSelector\XPath\Extension; use Symfony\Component\CssSelector\XPath\XPathExpr; /** * 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. * * @author Jean-François Simon * * @internal */ class CombinationExtension extends AbstractExtension { /** * {@inheritdoc} */ public function getCombinationTranslators() { return array( ' ' => array($this, 'translateDescendant'), '>' => array($this, 'translateChild'), '+' => array($this, 'translateDirectAdjacent'), '~' => array($this, 'translateIndirectAdjacent'), ); } /** * @return XPathExpr */ public function translateDescendant(XPathExpr $xpath, XPathExpr $combinedXpath) { return $xpath->join('/descendant-or-self::*/', $combinedXpath); } /** * @return XPathExpr */ public function translateChild(XPathExpr $xpath, XPathExpr $combinedXpath) { return $xpath->join('/', $combinedXpath); } /** * @return XPathExpr */ public function translateDirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath) { return $xpath ->join('/following-sibling::', $combinedXpath) ->addNameTest() ->addCondition('position() = 1'); } /** * @return XPathExpr */ public function translateIndirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath) { return $xpath->join('/following-sibling::', $combinedXpath); } /** * {@inheritdoc} */ public function getName() { return 'combination'; } } __halt_compiler();----SIGNATURE:----ozy5MFtKbBzXI8gKeZoYOD/5cU0XZuaErdL92YfUUYmO6zFSQcQCM1AcTfZHbSj6XD1PyKrUNKCQjWL5mWMc+GDOUvHQV8LU9q9dHj35Ka5MLfmLZbmd3wHCxvjgEcMn5Z4hFLLSwIouKjI/n8j1Ft1scjEUjxj7YaDR0Wm1g4em5rQH16SVa6B3bfy/U9Ftg94Rp9oAQN0MJ07VwdprdeXwXHeEtGuucC9T3hn7H7sSLop0eWkvM6FX1xwq4OLS74ypSECKG1xuxOMRSWmbvdeKXvj+Dsk8gpLwz2iE4KwU86I75iHz/Hg4742svqLE1kLiM+IshOR0fL+OrgZnqK0sIHPDTIsLsBPQ3/kxWLegXAQ2H5mCJbBOsVX9qQ/AwdgPr4zfA55ek7S6hhI6tpkFB9a1zV0OuF0cliNLZG0UycUfWL9AwJnR7/LMaYo4DVNyvgqbT4L5JRfIlq5XFOokt4CJAhmDwQ2Uqk62DkKZewSCtgM2ZAHtPnV/sZWE3x8LWBynDHSyGvJjFG96iBb3VLA+vlymZl520MS9y1Bv3yxb7V88s+GeoDs2CyWEuT3CvMirhpwfj2+toj5ejXr690fRfaxYrQxa4dXMsgX6mpInhz7GKNBPAXOfdXaPZZyNRhEXu/JzYeIGE1kBxFxngyGVbhuvgtRSOL7xgRc=----ATTACHMENT:----OTkyOTM0MTg1OTYzMzE4MiA3MjY5OTIxMjIzMzU2MDUwIDU2Nzc3Njg3ODE3ODMyMDI=