Automattic\WooCommerce\Vendor\GraphQL\Language
Lexer::readChar
Reads next UTF8Character from the byte stream, starting from $byteStreamPosition.
Method of the class: Lexer{}
No Hooks.
Returns
Array{String,. int|null, int}
Usage
// private - for code of main (parent) class only $result = $this->readChar( $advance, ?int $byteStreamPosition ): array;
- $advance(true|false)
- .
Default:false - ?int $byteStreamPosition
- .
Default:null
Lexer::readChar() Lexer::readChar code WC 10.9.1
private function readChar(bool $advance = false, ?int $byteStreamPosition = null): array
{
if ($byteStreamPosition === null) {
$byteStreamPosition = $this->byteStreamPosition;
}
$code = null;
$utf8char = '';
$bytes = 0;
$positionOffset = 0;
if (isset($this->source->body[$byteStreamPosition])) {
$ord = ord($this->source->body[$byteStreamPosition]);
if ($ord < 128) {
$bytes = 1;
} elseif ($ord < 224) {
$bytes = 2;
} elseif ($ord < 240) {
$bytes = 3;
} else {
$bytes = 4;
}
for ($pos = $byteStreamPosition; $pos < $byteStreamPosition + $bytes; ++$pos) {
$utf8char .= $this->source->body[$pos];
}
$positionOffset = 1;
$code = $bytes === 1
? $ord
: Utils::ord($utf8char);
}
if ($advance) {
$this->moveStringCursor($positionOffset, $bytes);
}
return [$utf8char, $code, $bytes];
}