mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-06 07:49:24 +03:00
Change Lexer::readString to decode escaped characters to their literal values
This commit is contained in:
parent
0c1ad084d4
commit
7c6f216578
@ -229,13 +229,13 @@ class Lexer
|
||||
$code = Utils::charCodeAt($body, $position);
|
||||
switch ($code) {
|
||||
case 34: $value .= '"'; break;
|
||||
case 47: $value .= '\/'; break;
|
||||
case 47: $value .= '/'; break;
|
||||
case 92: $value .= '\\'; break;
|
||||
case 98: $value .= '\b'; break;
|
||||
case 102: $value .= '\f'; break;
|
||||
case 110: $value .= '\n'; break;
|
||||
case 114: $value .= '\r'; break;
|
||||
case 116: $value .= '\t'; break;
|
||||
case 98: $value .= chr(8); break; // \b (backspace)
|
||||
case 102: $value .= "\f"; break;
|
||||
case 110: $value .= "\n"; break;
|
||||
case 114: $value .= "\r"; break;
|
||||
case 116: $value .= "\t"; break;
|
||||
case 117:
|
||||
$hex = mb_substr($body, $position + 1, 4);
|
||||
if (!preg_match('/[0-9a-fA-F]{4}/', $hex)) {
|
||||
|
@ -58,8 +58,8 @@ class LexerTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals(new Token(Token::STRING, 0, 8, 'simple'), $this->lexOne('"simple"'));
|
||||
$this->assertEquals(new Token(Token::STRING, 0, 15, ' white space '), $this->lexOne('" white space "'));
|
||||
$this->assertEquals(new Token(Token::STRING, 0, 10, 'quote "'), $this->lexOne('"quote \\""'));
|
||||
$this->assertEquals(new Token(Token::STRING, 0, 20, 'escaped \n\r\b\t\f'), $this->lexOne('"escaped \\n\\r\\b\\t\\f"'));
|
||||
$this->assertEquals(new Token(Token::STRING, 0, 15, 'slashes \\ \/'), $this->lexOne('"slashes \\\\ \\/"'));
|
||||
$this->assertEquals(new Token(Token::STRING, 0, 25, 'escaped \n\r\b\t\f'), $this->lexOne('"escaped \\\\n\\\\r\\\\b\\\\t\\\\f"'));
|
||||
$this->assertEquals(new Token(Token::STRING, 0, 16, 'slashes \\ \/'), $this->lexOne('"slashes \\\\ \\\\/"'));
|
||||
|
||||
$this->assertEquals(new Token(Token::STRING, 0, 13, 'unicode яуц'), $this->lexOne('"unicode яуц"'));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user