1*04fd306cSNickeau<?php 2*04fd306cSNickeau/** 3*04fd306cSNickeau* PhpCss provides several integrative functions to use this library 4*04fd306cSNickeau* 5*04fd306cSNickeau* @license http://www.opensource.org/licenses/mit-license.php The MIT License 6*04fd306cSNickeau* @copyright Copyright 2010-2014 PhpCss Team 7*04fd306cSNickeau*/ 8*04fd306cSNickeau 9*04fd306cSNickeauuse PhpCss\Exception\ParserException; 10*04fd306cSNickeau 11*04fd306cSNickeau/** 12*04fd306cSNickeau* PhpCss provides several integrative functions to use this library 13*04fd306cSNickeau*/ 14*04fd306cSNickeauabstract class PhpCss { 15*04fd306cSNickeau 16*04fd306cSNickeau /** 17*04fd306cSNickeau * Parses a css selector and compiles it into an css selector again 18*04fd306cSNickeau * 19*04fd306cSNickeau * @param string $cssSelector 20*04fd306cSNickeau * @return string 21*04fd306cSNickeau * @throws ParserException 22*04fd306cSNickeau */ 23*04fd306cSNickeau public static function reformat(string $cssSelector): string { 24*04fd306cSNickeau $ast = self::getAst($cssSelector); 25*04fd306cSNickeau $visitor = new PhpCss\Ast\Visitor\Css(); 26*04fd306cSNickeau $ast->accept($visitor); 27*04fd306cSNickeau return (string)$visitor; 28*04fd306cSNickeau } 29*04fd306cSNickeau 30*04fd306cSNickeau /** 31*04fd306cSNickeau * Parses a css selector and transforms it into an xpath expression 32*04fd306cSNickeau * 33*04fd306cSNickeau * @param string $cssSelector 34*04fd306cSNickeau * @param int $options 35*04fd306cSNickeau * @return string 36*04fd306cSNickeau * @throws ParserException 37*04fd306cSNickeau */ 38*04fd306cSNickeau public static function toXpath(string $cssSelector, int $options = 0): string { 39*04fd306cSNickeau $ast = self::getAst($cssSelector); 40*04fd306cSNickeau $visitor = new PhpCss\Ast\Visitor\Xpath($options); 41*04fd306cSNickeau $ast->accept($visitor); 42*04fd306cSNickeau return (string)$visitor; 43*04fd306cSNickeau } 44*04fd306cSNickeau 45*04fd306cSNickeau /** 46*04fd306cSNickeau * Parses a css selector and returns the AST 47*04fd306cSNickeau * 48*04fd306cSNickeau * @param string $cssSelector 49*04fd306cSNickeau * @return PhpCss\Ast\Node 50*04fd306cSNickeau * @throws ParserException 51*04fd306cSNickeau */ 52*04fd306cSNickeau public static function getAst(string $cssSelector): PhpCss\Ast\Node { 53*04fd306cSNickeau $tokens = array(); 54*04fd306cSNickeau $scanner = new PhpCss\Scanner(new PhpCss\Scanner\Status\Selector()); 55*04fd306cSNickeau $scanner->scan($tokens, $cssSelector); 56*04fd306cSNickeau $parser = new PhpCss\Parser\Standard($tokens); 57*04fd306cSNickeau return $parser->parse(); 58*04fd306cSNickeau } 59*04fd306cSNickeau} 60