* * 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:----joKhZC2/PfBeYedSFkIHze8KdUdvqbHEBIGuuZZqtkF6GQ4JoQg93e+yH3COXvSJCtFHg8qt0c4l/uNxbpLmcMa1z/1mdMrwUACxCp/JM6HuzTEMIve6r+PK/O6YSDV1bCo7aJqd/NKTubU7j7eqYkO65u6als5lh4ZT8RiJ14xyVUYdsnp+WAQb3fuPzo3df7HUCCOoDyzzBqo/rbPI4rmEkvmSykQLF4vi1x0kk3/OBTQhpIidl+/szWkxROFhRCjMyrR9PfSLyWxZrwaCdjvu4BVi0aqkCetwDZJtrOm1FOLk8EH+AY6xzN7SlKYJy3WNQDjLyI4OW2HzGQqDyGmhppSd2px7BXVSTvEKEnt6EgR+Wv9U37mUYMyFlO46TDi5rB2pYQ2Li/JJH95AG90uEDTK4PxLnh72GdOR9x/YfVDxsjqs9pqmOG5TGBYFkeJd1JY0qSs4uaIFFQLiQZ0aMiFJYWxSfWePhin4Q3cKLfKSehPZSQhbbinj/1MQaj7r3mgUX6C+xG+/IgT17+dWQt/uzs0BGvdmquu9PvAHq0r2/xUsPmKtOyOU5v3yHU3D2ien8XuzLXLo6HgyuILSP1qatZPcJFHKXUg4j2zY0Z2UQxxUOttF5X9bb1CLs8NujZzp0D607v90qcpzquiR94Tbjqbw98inyNMZp1E=----ATTACHMENT:----NzAxMDYxMTcxMzYxOTMwNSA5NDg3Njc5MTY5NTExOTcyIDU0MzA4MzEyNjQ1MjE1NzE=