Browse Source

CS fix

labels
J. King 6 years ago
parent
commit
a441fc6a95
  1. 18
      RoboFile.php
  2. 26
      lib/UTF8.php

18
RoboFile.php

@ -28,7 +28,7 @@ class RoboFile extends \Robo\Tasks {
/** /**
* Runs the full test suite * Runs the full test suite
* *
* This includes pedantic tests which may help to identify problems. * This includes pedantic tests which may help to identify problems.
* See help for the "test" task for more details. * See help for the "test" task for more details.
*/ */
public function testFull(array $args): Result { public function testFull(array $args): Result {
@ -61,8 +61,8 @@ class RoboFile extends \Robo\Tasks {
} }
/** Runs a performance evaluation. /** Runs a performance evaluation.
* *
* The performance of the library's basic functionality is tested against * The performance of the library's basic functionality is tested against
* the IntlCodePointBreakIterator class * the IntlCodePointBreakIterator class
*/ */
public function perf(array $args): Result { public function perf(array $args): Result {
@ -70,6 +70,16 @@ class RoboFile extends \Robo\Tasks {
return $this->taskExec("php")->arg($execpath)->args($args)->run(); return $this->taskExec("php")->arg($execpath)->args($args)->run();
} }
/** Runs the coding standards fixer */
public function clean($opts = ['demo|d' => false]): Result {
$t = $this->taskExec(realpath(self::BASE."vendor/bin/php-cs-fixer"));
$t->arg("fix");
if ($opts['demo']) {
$t->args("--dry-run", "--diff")->option("--diff-format", "udiff");
}
return $t->run();
}
protected function findCoverageEngine(): string { protected function findCoverageEngine(): string {
$null = null; $null = null;
$code = 0; $code = 0;
@ -97,6 +107,6 @@ class RoboFile extends \Robo\Tasks {
} }
$execpath = realpath(self::BASE."vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit"); $execpath = realpath(self::BASE."vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit");
$confpath = realpath(self::BASE_TEST."phpunit.xml"); $confpath = realpath(self::BASE_TEST."phpunit.xml");
return $this->taskExec($executor)->arg($execpath)->option("-c", $confpath)->args(array_merge($set,$args))->run(); return $this->taskExec($executor)->arg($execpath)->option("-c", $confpath)->args(array_merge($set, $args))->run();
} }
} }

26
lib/UTF8.php

@ -15,9 +15,9 @@ abstract class UTF8 {
const M_HALT = 2; const M_HALT = 2;
/** Retrieve a character from $string starting at byte offset $pos /** Retrieve a character from $string starting at byte offset $pos
* *
* $next is a variable in which to store the next byte offset at which a character starts * $next is a variable in which to store the next byte offset at which a character starts
* *
* The returned character may be a replacement character, or the empty string if $pos is beyond the end of $string * The returned character may be a replacement character, or the empty string if $pos is beyond the end of $string
*/ */
public static function get(string $string, int $pos, &$next = null, int $errMode = null): string { public static function get(string $string, int $pos, &$next = null, int $errMode = null): string {
@ -52,10 +52,10 @@ abstract class UTF8 {
} }
} }
/** Starting from byte offset $pos, advance $num characters through $string and return the byte offset of the found character /** Starting from byte offset $pos, advance $num characters through $string and return the byte offset of the found character
* *
* If $num is negative, the operation will be performed in reverse * If $num is negative, the operation will be performed in reverse
* *
* If $pos is omitted, the start of the string will be used for a forward seek, and the end for a reverse seek * If $pos is omitted, the start of the string will be used for a forward seek, and the end for a reverse seek
*/ */
public static function seek(string $string, int $num, int $pos = null, int $errMode = null): int { public static function seek(string $string, int $num, int $pos = null, int $errMode = null): int {
@ -104,10 +104,10 @@ abstract class UTF8 {
$b >= "\x80" && $b <= "\xBF" && // continuation bytes $b >= "\x80" && $b <= "\xBF" && // continuation bytes
($t < 4 || $errMode==self::M_SKIP) && // stop after four bytes, unless we're skipping invalid sequences ($t < 4 || $errMode==self::M_SKIP) && // stop after four bytes, unless we're skipping invalid sequences
$pos > 0 // stop once the start of the string has been reached $pos > 0 // stop once the start of the string has been reached
); );
// attempt to extract a code point at the current position // attempt to extract a code point at the current position
$p = self::ord($string, $pos, $n, self::M_REPLACE); $p = self::ord($string, $pos, $n, self::M_REPLACE);
// if the position of the character after the one we just consumed is earlier than our start position, // if the position of the character after the one we just consumed is earlier than our start position,
// then there was at least one invalid sequence between the consumed character and the start position // then there was at least one invalid sequence between the consumed character and the start position
if ($n < $s) { if ($n < $s) {
if ($errMode==self::M_SKIP) { if ($errMode==self::M_SKIP) {
@ -174,16 +174,16 @@ abstract class UTF8 {
} }
/** Decodes the first UTF-8 character from a byte sequence into a numeric code point, starting at byte offset $pos /** Decodes the first UTF-8 character from a byte sequence into a numeric code point, starting at byte offset $pos
* *
* Upon success, returns the numeric code point of the character, an integer between 0 and 1114111 * Upon success, returns the numeric code point of the character, an integer between 0 and 1114111
* *
* Upon error, returns false; if $char is the empty string or $pos is beyond the end of the string, null is returned * Upon error, returns false; if $char is the empty string or $pos is beyond the end of the string, null is returned
* *
* $next is a variable in which to store the next byte offset at which a character starts * $next is a variable in which to store the next byte offset at which a character starts
*/ */
public static function ord(string $string, int $pos = 0, &$next = null, int $errMode = null) { public static function ord(string $string, int $pos = 0, &$next = null, int $errMode = null) {
// this function effectively implements https://encoding.spec.whatwg.org/#utf-8-decoder // this function effectively implements https://encoding.spec.whatwg.org/#utf-8-decoder
// though it differs from a slavish implementation because it operates on only a single // though it differs from a slavish implementation because it operates on only a single
// character rather than a whole stream // character rather than a whole stream
start: start:
// optimization for ASCII characters // optimization for ASCII characters
@ -202,7 +202,7 @@ abstract class UTF8 {
$upper = 0xBF; $upper = 0xBF;
while ($seen < $needed) { while ($seen < $needed) {
$b = ord(@$string[$pos++]); $b = ord(@$string[$pos++]);
if(!$seen) { if (!$seen) {
if ($b >= 0xC2 && $b <= 0xDF) { // two-byte character if ($b >= 0xC2 && $b <= 0xDF) { // two-byte character
$needed = 2; $needed = 2;
$point = $b & 0x1F; $point = $b & 0x1F;
@ -255,7 +255,7 @@ abstract class UTF8 {
} }
/** Returns the UTF-8 encoding of $codePoint /** Returns the UTF-8 encoding of $codePoint
* *
* If $codePoint is less than 0 or greater than 1114111, an empty string is returned * If $codePoint is less than 0 or greater than 1114111, an empty string is returned
*/ */
public static function chr(int $codePoint): string { public static function chr(int $codePoint): string {

Loading…
Cancel
Save