From 287aebe1896cc98e8dfd9afa48caf210da33045e Mon Sep 17 00:00:00 2001 From: Giuseppe Lavagetto Date: Thu, 18 Apr 2019 12:09:33 +0200 Subject: [PATCH] Fix the scripts to generate ucfirst overriddes * Fix a couple mistakes in generateUcfirstOverrides.php * Skip surrogate codepoints as they can't be converted to json. Change-Id: I5eddd90f7b348806d502dfbac08c367701d17f25 --- maintenance/language/generateUcfirstOverrides.php | 6 +++--- maintenance/language/generateUpperCharTable.php | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/maintenance/language/generateUcfirstOverrides.php b/maintenance/language/generateUcfirstOverrides.php index c1e93f4cde..458231c9ce 100644 --- a/maintenance/language/generateUcfirstOverrides.php +++ b/maintenance/language/generateUcfirstOverrides.php @@ -54,7 +54,7 @@ class GenerateUcfirstOverrides extends Maintenance { foreach ( $from as $lc => $uc ) { $ref = $to[$lc] ?? null; if ( $ref !== null && $ref !== $uc ) { - $overrides[$lc] = $uc; + $overrides[$lc] = $ref; } } $writer = new StaticArrayWriter(); @@ -70,8 +70,8 @@ class GenerateUcfirstOverrides extends Maintenance { $msg = sprintf( "Could not load data from file '%s'\n", $filename ); $this->fatalError( $msg ); } - $json = json_decode( $data ); - if ( $result === null ) { + $json = json_decode( $data, true ); + if ( $json === null ) { $msg = sprintf( "Invalid json in the data file %s\n", $filename ); $this->fatalError( $msg, 2 ); } diff --git a/maintenance/language/generateUpperCharTable.php b/maintenance/language/generateUpperCharTable.php index b03d704551..c8393bf34b 100644 --- a/maintenance/language/generateUpperCharTable.php +++ b/maintenance/language/generateUpperCharTable.php @@ -37,6 +37,10 @@ class GenerateUpperCharTable extends Maintenance { $outfile = $this->getOption( 'outfile', 'upperchar.json' ); $toUpperTable = []; for ( $i = 0; $i <= 0x10ffff; $i++ ) { + // skip all surrogate codepoints or json_encode would fail. + if ( $i >= 0xd800 && $i <= 0xdfff ) { + continue; + } $char = UtfNormal\Utils::codepointToUtf8( $i ); $upper = mb_strtoupper( $char ); $toUpperTable[$char] = $upper; -- 2.20.1