From 799a4255a1b7757181efe2f70dd4238058de2a4c Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 26 Mar 2019 13:42:29 +0000 Subject: [PATCH] Title: Add scripts for generating/updating phpCharToUpper.js Bug: T141723 Change-Id: I8355990f06b793e889d5279bada81e6ef3c242d1 --- .../generateJsToUpperCaseList.js | 8 +++++ .../generatePhpCharToUpperMappings.php | 36 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 maintenance/mediawiki.Title/generateJsToUpperCaseList.js create mode 100755 maintenance/mediawiki.Title/generatePhpCharToUpperMappings.php diff --git a/maintenance/mediawiki.Title/generateJsToUpperCaseList.js b/maintenance/mediawiki.Title/generateJsToUpperCaseList.js new file mode 100644 index 0000000000..fd742f6502 --- /dev/null +++ b/maintenance/mediawiki.Title/generateJsToUpperCaseList.js @@ -0,0 +1,8 @@ +/* eslint-env node, es6 */ +var i, chars = []; + +for ( i = 0; i < 65536; i++ ) { + chars.push( String.fromCharCode( i ).toUpperCase() ); +} +// eslint-disable-next-line no-console +console.log( JSON.stringify( chars ) ); diff --git a/maintenance/mediawiki.Title/generatePhpCharToUpperMappings.php b/maintenance/mediawiki.Title/generatePhpCharToUpperMappings.php new file mode 100755 index 0000000000..ff875d8735 --- /dev/null +++ b/maintenance/mediawiki.Title/generatePhpCharToUpperMappings.php @@ -0,0 +1,36 @@ +#!/usr/bin/env php += 0xd800 && $i <= 0xdfff ) { + // Skip surrogate pairs + continue; + } + $char = mb_convert_encoding( '&#' . $i . ';', 'UTF-8', 'HTML-ENTITIES' ); + $phpUpper = mb_strtoupper( $char ); + $jsUpper = $jsUpperChars[$i]; + if ( $jsUpper !== $phpUpper ) { + $data[$char] = $phpUpper; + } +} + +echo 'var toUpperMapping = ' . str_replace( '"', "'", + str_replace( ' ', "\t", + json_encode( $data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE ) + ) +) . ";\n"; -- 2.20.1