DiDom\Query::convertPseudo PHP Method

convertPseudo() protected static method

Converts a CSS pseudo-class into an XPath expression.
protected static convertPseudo ( string $pseudo, string $parameters = [], string &$tagName ) : string
$pseudo string Pseudo-class
$parameters string
$tagName string
return string
    protected static function convertPseudo($pseudo, $parameters = [], &$tagName)
    {
        switch ($pseudo) {
            case 'first-child':
                return 'position() = 1';
                break;
            case 'last-child':
                return 'position() = last()';
                break;
            case 'nth-child':
                $xpath = sprintf('(name()="%s") and (%s)', $tagName, self::convertNthExpression($parameters[0]));
                $tagName = '*';
                return $xpath;
                break;
            case 'contains':
                $string = trim($parameters[0], ' \'"');
                $caseSensetive = isset($parameters[1]) and trim($parameters[1]) === 'true';
                return self::convertContains($string, $caseSensetive);
                break;
            case 'has':
                return self::cssToXpath($parameters[0], './/');
                break;
            case 'not':
                return sprintf('not(self::%s)', self::cssToXpath($parameters[0], ''));
                break;
            case 'nth-of-type':
                return self::convertNthExpression($parameters[0]);
                break;
            case 'empty':
                return 'count(descendant::*) = 0';
                break;
            case 'not-empty':
                return 'count(descendant::*) > 0';
                break;
        }
        throw new RuntimeException('Invalid selector: unknown pseudo-class');
    }