| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
							- <?php
 
- /*
 
-  * This file is part of the Symfony package.
 
-  *
 
-  * (c) Fabien Potencier <fabien@symfony.com>
 
-  *
 
-  * For the full copyright and license information, please view the LICENSE
 
-  * file that was distributed with this source code.
 
-  */
 
- namespace Symfony\Component\CssSelector;
 
- use Symfony\Component\CssSelector\Parser\Shortcut\ClassParser;
 
- use Symfony\Component\CssSelector\Parser\Shortcut\ElementParser;
 
- use Symfony\Component\CssSelector\Parser\Shortcut\EmptyStringParser;
 
- use Symfony\Component\CssSelector\Parser\Shortcut\HashParser;
 
- use Symfony\Component\CssSelector\XPath\Extension\HtmlExtension;
 
- use Symfony\Component\CssSelector\XPath\Translator;
 
- /**
 
-  * CssSelectorConverter is the main entry point of the component and can convert CSS
 
-  * selectors to XPath expressions.
 
-  *
 
-  * @author Christophe Coevoet <stof@notk.org>
 
-  */
 
- class CssSelectorConverter
 
- {
 
-     private $translator;
 
-     private $cache;
 
-     private static $xmlCache = [];
 
-     private static $htmlCache = [];
 
-     /**
 
-      * @param bool $html Whether HTML support should be enabled. Disable it for XML documents
 
-      */
 
-     public function __construct(bool $html = true)
 
-     {
 
-         $this->translator = new Translator();
 
-         if ($html) {
 
-             $this->translator->registerExtension(new HtmlExtension($this->translator));
 
-             $this->cache = &self::$htmlCache;
 
-         } else {
 
-             $this->cache = &self::$xmlCache;
 
-         }
 
-         $this->translator
 
-             ->registerParserShortcut(new EmptyStringParser())
 
-             ->registerParserShortcut(new ElementParser())
 
-             ->registerParserShortcut(new ClassParser())
 
-             ->registerParserShortcut(new HashParser())
 
-         ;
 
-     }
 
-     /**
 
-      * Translates a CSS expression to its XPath equivalent.
 
-      *
 
-      * Optionally, a prefix can be added to the resulting XPath
 
-      * expression with the $prefix parameter.
 
-      *
 
-      * @return string
 
-      */
 
-     public function toXPath(string $cssExpr, string $prefix = 'descendant-or-self::')
 
-     {
 
-         return $this->cache[$prefix][$cssExpr] ?? $this->cache[$prefix][$cssExpr] = $this->translator->cssToXPath($cssExpr, $prefix);
 
-     }
 
- }
 
 
  |