public function StringHandler::handle in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/css-selector/Parser/Handler/StringHandler.php \Symfony\Component\CssSelector\Parser\Handler\StringHandler::handle()
Parameters
Reader $reader:
TokenStream $stream:
Return value
bool
Overrides HandlerInterface::handle
File
- vendor/
symfony/ css-selector/ Parser/ Handler/ StringHandler.php, line 55
Class
- StringHandler
- CSS selector comment handler.
Namespace
Symfony\Component\CssSelector\Parser\HandlerCode
public function handle(Reader $reader, TokenStream $stream) {
$quote = $reader
->getSubstring(1);
if (!in_array($quote, array(
"'",
'"',
))) {
return false;
}
$reader
->moveForward(1);
$match = $reader
->findPattern($this->patterns
->getQuotedStringPattern($quote));
if (!$match) {
throw new InternalErrorException(sprintf('Should have found at least an empty match at %s.', $reader
->getPosition()));
}
// check unclosed strings
if (strlen($match[0]) === $reader
->getRemainingLength()) {
throw SyntaxErrorException::unclosedString($reader
->getPosition() - 1);
}
// check quotes pairs validity
if ($quote !== $reader
->getSubstring(1, strlen($match[0]))) {
throw SyntaxErrorException::unclosedString($reader
->getPosition() - 1);
}
$string = $this->escaping
->escapeUnicodeAndNewLine($match[0]);
$stream
->push(new Token(Token::TYPE_STRING, $string, $reader
->getPosition()));
$reader
->moveForward(strlen($match[0]) + 1);
return true;
}