Augmentation vers version 3.3.0

This commit is contained in:
Gauvain Boiché
2020-03-31 15:31:03 +02:00
parent d926806907
commit a1864c0414
2618 changed files with 406015 additions and 31377 deletions

View File

@@ -0,0 +1,54 @@
<?php
/**
* @package s9e\RegexpBuilder
* @copyright Copyright (c) 2016-2018 The s9e Authors
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
namespace s9e\RegexpBuilder\Output;
use InvalidArgumentException;
class Utf8 extends BaseImplementation
{
/** {@inheritdoc} */
protected $maxValue = 0x10FFFF;
/**
* {@inheritdoc}
*/
protected function outputValidValue($value)
{
if ($value < 0x80)
{
return chr($value);
}
if ($value < 0x800)
{
return chr(0xC0 | ($value >> 6)) . chr(0x80 | ($value & 0x3F));
}
if ($value < 0x10000)
{
return chr(0xE0 | ($value >> 12))
. chr(0x80 | (($value >> 6) & 0x3F))
. chr(0x80 | ($value & 0x3F));
}
return chr(0xF0 | ($value >> 18))
. chr(0x80 | (($value >> 12) & 0x3F))
. chr(0x80 | (($value >> 6) & 0x3F))
. chr(0x80 | ($value & 0x3F));
}
/**
* {@inheritdoc}
*/
protected function validate($value)
{
if ($value >= 0xD800 && $value <= 0xDFFF)
{
throw new InvalidArgumentException(sprintf('Surrogate 0x%X is not a valid UTF-8 character', $value));
}
parent::validate($value);
}
}