composer update

This commit is contained in:
Mike Macgirvin 2020-06-15 09:49:34 +10:00
parent f7674f0f2e
commit f446b1bd58
458 changed files with 52177 additions and 4388 deletions

1279
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,56 +1,19 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Composer
Upstream-Contact: Jordi Boggiano <j.boggiano@seld.be>
Source: https://github.com/composer/composer
Copyright (c) Nils Adermann, Jordi Boggiano
Files: *
Copyright: 2016, Nils Adermann <naderman@naderman.de>
2016, Jordi Boggiano <j.boggiano@seld.be>
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
Files: src/Composer/Util/TlsHelper.php
Copyright: 2016, Nils Adermann <naderman@naderman.de>
2016, Jordi Boggiano <j.boggiano@seld.be>
2013, Evan Coury <me@evancoury.com>
License: Expat and BSD-2-Clause
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
License: BSD-2-Clause
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
.
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -1197,6 +1197,7 @@ return array(
'Smarty_Template_Source' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
'Smarty_Undefined_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
'Smarty_Variable' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php',
@ -1207,6 +1208,7 @@ return array(
'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => $vendorDir . '/symfony/options-resolver/Exception/NoSuchOptionException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => $vendorDir . '/symfony/options-resolver/Exception/OptionDefinitionException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/UndefinedOptionsException.php',
'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => $vendorDir . '/symfony/options-resolver/OptionConfigurator.php',
'Symfony\\Component\\OptionsResolver\\Options' => $vendorDir . '/symfony/options-resolver/Options.php',
'Symfony\\Component\\OptionsResolver\\OptionsResolver' => $vendorDir . '/symfony/options-resolver/OptionsResolver.php',
'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php',
@ -1230,15 +1232,18 @@ return array(
'Symfony\\Polyfill\\Intl\\Idn\\Idn' => $vendorDir . '/symfony/polyfill-intl-idn/Idn.php',
'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php',
'TPC_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
'TP_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
'Text_LanguageDetect' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect.php',
'Text_LanguageDetectTest' => $vendorDir . '/pear/text_languagedetect/tests/Text_LanguageDetectTest.php',
'Text_LanguageDetect_Exception' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/Exception.php',
'Text_LanguageDetect_ISO639' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
'Text_LanguageDetect_ISO639Test' => $vendorDir . '/pear/text_languagedetect/tests/Text_LanguageDetect_ISO639Test.php',
'Text_LanguageDetect_Parser' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect/Parser.php',
'URLify' => $vendorDir . '/jbroadway/urlify/URLify.php',
'URLifyTest' => $vendorDir . '/jbroadway/urlify/tests/URLifyTest.php',
'UploadHandler' => $vendorDir . '/blueimp/jquery-file-upload/server/php/UploadHandler.php',
'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
'Zotlabs\\Access\\AccessControl' => $baseDir . '/Zotlabs/Access/AccessControl.php',
'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php',
@ -1430,7 +1435,6 @@ return array(
'Zotlabs\\Module\\Magic' => $baseDir . '/Zotlabs/Module/Magic.php',
'Zotlabs\\Module\\Manage' => $baseDir . '/Zotlabs/Module/Manage.php',
'Zotlabs\\Module\\Menu' => $baseDir . '/Zotlabs/Module/Menu.php',
'Zotlabs\\Module\\Message' => $baseDir . '/Zotlabs/Module/Message.php',
'Zotlabs\\Module\\Mitem' => $baseDir . '/Zotlabs/Module/Mitem.php',
'Zotlabs\\Module\\Moderate' => $baseDir . '/Zotlabs/Module/Moderate.php',
'Zotlabs\\Module\\Mood' => $baseDir . '/Zotlabs/Module/Mood.php',
@ -1792,6 +1796,7 @@ return array(
'Zotlabs\\Update\\_1237' => $baseDir . '/Zotlabs/Update/_1237.php',
'Zotlabs\\Update\\_1238' => $baseDir . '/Zotlabs/Update/_1238.php',
'Zotlabs\\Update\\_1239' => $baseDir . '/Zotlabs/Update/_1239.php',
'Zotlabs\\Update\\_1240' => $baseDir . '/Zotlabs/Update/_1240.php',
'Zotlabs\\Web\\Controller' => $baseDir . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => $baseDir . '/Zotlabs/Web/HTTPHeaders.php',
'Zotlabs\\Web\\HTTPSig' => $baseDir . '/Zotlabs/Web/HTTPSig.php',
@ -1820,7 +1825,6 @@ return array(
'Zotlabs\\Widget\\Clock' => $baseDir . '/Zotlabs/Widget/Clock.php',
'Zotlabs\\Widget\\Collections' => $baseDir . '/Zotlabs/Widget/Collections.php',
'Zotlabs\\Widget\\Common_friends' => $baseDir . '/Zotlabs/Widget/Common_friends.php',
'Zotlabs\\Widget\\Conversations' => $baseDir . '/Zotlabs/Widget/Conversations.php',
'Zotlabs\\Widget\\Cover_photo' => $baseDir . '/Zotlabs/Widget/Cover_photo.php',
'Zotlabs\\Widget\\Design_tools' => $baseDir . '/Zotlabs/Widget/Design_tools.php',
'Zotlabs\\Widget\\Dirsort' => $baseDir . '/Zotlabs/Widget/Dirsort.php',

View file

@ -14,11 +14,13 @@ return array(
'383eaff206634a77a1be54e64e6459c7' => $vendorDir . '/sabre/uri/lib/functions.php',
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'2b9d0f43f9552984cfa82fee95491826' => $vendorDir . '/sabre/event/lib/coroutine.php',
'd81bab31d3feb45bfe2f283ea3c8fdf7' => $vendorDir . '/sabre/event/lib/Loop/functions.php',
'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
'b45b351e6b6f7487d819961fef2fda77' => $vendorDir . '/jakeasmith/http_build_url/src/http_build_url.php',
'757772e28a0943a9afe83def8db95bdf' => $vendorDir . '/mf2/mf2/Mf2/Parser.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',

View file

@ -6,9 +6,9 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'voku\\tests\\' => array($vendorDir . '/voku/portable-ascii/tests'),
'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku', $vendorDir . '/voku/stop-words/src/voku'),
'Zotlabs\\' => array($baseDir . '/Zotlabs'),
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),

View file

@ -13,6 +13,9 @@ class ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d
}
}
/**
* @return \Composer\Autoload\ClassLoader
*/
public static function getLoader()
{
if (null !== self::$loader) {

View file

@ -15,11 +15,13 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'383eaff206634a77a1be54e64e6459c7' => __DIR__ . '/..' . '/sabre/uri/lib/functions.php',
'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'2b9d0f43f9552984cfa82fee95491826' => __DIR__ . '/..' . '/sabre/event/lib/coroutine.php',
'd81bab31d3feb45bfe2f283ea3c8fdf7' => __DIR__ . '/..' . '/sabre/event/lib/Loop/functions.php',
'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
'b45b351e6b6f7487d819961fef2fda77' => __DIR__ . '/..' . '/jakeasmith/http_build_url/src/http_build_url.php',
'757772e28a0943a9afe83def8db95bdf' => __DIR__ . '/..' . '/mf2/mf2/Mf2/Parser.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
@ -33,7 +35,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
public static $prefixLengthsPsr4 = array (
'v' =>
array (
'voku\\tests\\' => 11,
'voku\\' => 5,
),
'Z' =>
@ -42,6 +43,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
),
'S' =>
array (
'Symfony\\Polyfill\\Php80\\' => 23,
'Symfony\\Polyfill\\Php72\\' => 23,
'Symfony\\Polyfill\\Mbstring\\' => 26,
'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
@ -100,10 +102,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
);
public static $prefixDirsPsr4 = array (
'voku\\tests\\' =>
array (
0 => __DIR__ . '/..' . '/voku/portable-ascii/tests',
),
'voku\\' =>
array (
0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku',
@ -113,6 +111,10 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
array (
0 => __DIR__ . '/../..' . '/Zotlabs',
),
'Symfony\\Polyfill\\Php80\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
),
'Symfony\\Polyfill\\Php72\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
@ -1474,6 +1476,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Smarty_Template_Source' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_template_source.php',
'Smarty_Undefined_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php',
'Smarty_Variable' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_variable.php',
'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php',
'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php',
@ -1484,6 +1487,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoSuchOptionException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/OptionDefinitionException.php',
'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/UndefinedOptionsException.php',
'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => __DIR__ . '/..' . '/symfony/options-resolver/OptionConfigurator.php',
'Symfony\\Component\\OptionsResolver\\Options' => __DIR__ . '/..' . '/symfony/options-resolver/Options.php',
'Symfony\\Component\\OptionsResolver\\OptionsResolver' => __DIR__ . '/..' . '/symfony/options-resolver/OptionsResolver.php',
'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php',
@ -1507,15 +1511,18 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Symfony\\Polyfill\\Intl\\Idn\\Idn' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Idn.php',
'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
'Symfony\\Polyfill\\Php72\\Php72' => __DIR__ . '/..' . '/symfony/polyfill-php72/Php72.php',
'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php',
'TPC_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
'TP_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
'Text_LanguageDetect' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect.php',
'Text_LanguageDetectTest' => __DIR__ . '/..' . '/pear/text_languagedetect/tests/Text_LanguageDetectTest.php',
'Text_LanguageDetect_Exception' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/Exception.php',
'Text_LanguageDetect_ISO639' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/ISO639.php',
'Text_LanguageDetect_ISO639Test' => __DIR__ . '/..' . '/pear/text_languagedetect/tests/Text_LanguageDetect_ISO639Test.php',
'Text_LanguageDetect_Parser' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect/Parser.php',
'URLify' => __DIR__ . '/..' . '/jbroadway/urlify/URLify.php',
'URLifyTest' => __DIR__ . '/..' . '/jbroadway/urlify/tests/URLifyTest.php',
'UploadHandler' => __DIR__ . '/..' . '/blueimp/jquery-file-upload/server/php/UploadHandler.php',
'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
'Zotlabs\\Access\\AccessControl' => __DIR__ . '/../..' . '/Zotlabs/Access/AccessControl.php',
'Zotlabs\\Access\\PermissionLimits' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionLimits.php',
'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php',
@ -1707,7 +1714,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Magic' => __DIR__ . '/../..' . '/Zotlabs/Module/Magic.php',
'Zotlabs\\Module\\Manage' => __DIR__ . '/../..' . '/Zotlabs/Module/Manage.php',
'Zotlabs\\Module\\Menu' => __DIR__ . '/../..' . '/Zotlabs/Module/Menu.php',
'Zotlabs\\Module\\Message' => __DIR__ . '/../..' . '/Zotlabs/Module/Message.php',
'Zotlabs\\Module\\Mitem' => __DIR__ . '/../..' . '/Zotlabs/Module/Mitem.php',
'Zotlabs\\Module\\Moderate' => __DIR__ . '/../..' . '/Zotlabs/Module/Moderate.php',
'Zotlabs\\Module\\Mood' => __DIR__ . '/../..' . '/Zotlabs/Module/Mood.php',
@ -2069,6 +2075,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Update\\_1237' => __DIR__ . '/../..' . '/Zotlabs/Update/_1237.php',
'Zotlabs\\Update\\_1238' => __DIR__ . '/../..' . '/Zotlabs/Update/_1238.php',
'Zotlabs\\Update\\_1239' => __DIR__ . '/../..' . '/Zotlabs/Update/_1239.php',
'Zotlabs\\Update\\_1240' => __DIR__ . '/../..' . '/Zotlabs/Update/_1240.php',
'Zotlabs\\Web\\Controller' => __DIR__ . '/../..' . '/Zotlabs/Web/Controller.php',
'Zotlabs\\Web\\HTTPHeaders' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPHeaders.php',
'Zotlabs\\Web\\HTTPSig' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPSig.php',
@ -2097,7 +2104,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Widget\\Clock' => __DIR__ . '/../..' . '/Zotlabs/Widget/Clock.php',
'Zotlabs\\Widget\\Collections' => __DIR__ . '/../..' . '/Zotlabs/Widget/Collections.php',
'Zotlabs\\Widget\\Common_friends' => __DIR__ . '/../..' . '/Zotlabs/Widget/Common_friends.php',
'Zotlabs\\Widget\\Conversations' => __DIR__ . '/../..' . '/Zotlabs/Widget/Conversations.php',
'Zotlabs\\Widget\\Cover_photo' => __DIR__ . '/../..' . '/Zotlabs/Widget/Cover_photo.php',
'Zotlabs\\Widget\\Design_tools' => __DIR__ . '/../..' . '/Zotlabs/Widget/Design_tools.php',
'Zotlabs\\Widget\\Dirsort' => __DIR__ . '/../..' . '/Zotlabs/Widget/Dirsort.php',

View file

@ -164,35 +164,30 @@
},
{
"name": "doctrine/collections",
"version": "1.6.4",
"version_normalized": "1.6.4.0",
"version": "1.6.5",
"version_normalized": "1.6.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
"reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7"
"reference": "fc0206348e17e530d09463fef07ba8968406cd6d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7",
"reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7",
"url": "https://api.github.com/repos/doctrine/collections/zipball/fc0206348e17e530d09463fef07ba8968406cd6d",
"reference": "fc0206348e17e530d09463fef07ba8968406cd6d",
"shasum": ""
},
"require": {
"php": "^7.1.3"
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan-shim": "^0.9.2",
"phpunit/phpunit": "^7.0",
"vimeo/psalm": "^3.2.2"
"vimeo/psalm": "^3.8.1"
},
"time": "2019-11-13T13:07:11+00:00",
"time": "2020-05-25T19:24:35+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
@ -232,6 +227,20 @@
"collections",
"iterators",
"php"
],
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections",
"type": "tidelift"
}
]
},
{
@ -334,17 +343,17 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "6.5.3",
"version_normalized": "6.5.3.0",
"version": "6.5.4",
"version_normalized": "6.5.4.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e"
"reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/aab4ebd862aa7d04f01a4b51849d657db56d882e",
"reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
"reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
"shasum": ""
},
"require": {
@ -352,7 +361,7 @@
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1",
"php": ">=5.5",
"symfony/polyfill-intl-idn": "^1.11"
"symfony/polyfill-intl-idn": "1.17.0"
},
"require-dev": {
"ext-curl": "*",
@ -362,7 +371,7 @@
"suggest": {
"psr/log": "Required for using the Log middleware"
},
"time": "2020-04-18T10:38:46+00:00",
"time": "2020-05-25T19:35:05+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -601,28 +610,28 @@
},
{
"name": "jbroadway/urlify",
"version": "1.2.0-stable",
"version_normalized": "1.2.0.0",
"version": "1.2.2-stable",
"version_normalized": "1.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/jbroadway/urlify.git",
"reference": "b917c8c9274a9784a2eb30c657fc386ad591fdcd"
"reference": "9b227e8548f16268cef55b5eb5d659a801fa824b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jbroadway/urlify/zipball/b917c8c9274a9784a2eb30c657fc386ad591fdcd",
"reference": "b917c8c9274a9784a2eb30c657fc386ad591fdcd",
"url": "https://api.github.com/repos/jbroadway/urlify/zipball/9b227e8548f16268cef55b5eb5d659a801fa824b",
"reference": "9b227e8548f16268cef55b5eb5d659a801fa824b",
"shasum": ""
},
"require": {
"php": ">=7.0.0",
"php": ">=7.2.0",
"voku/portable-ascii": "^1.4",
"voku/stop-words": "^2.0"
},
"require-dev": {
"phpunit/phpunit": "~6.0 || ~7.0"
},
"time": "2019-12-13T19:53:11+00:00",
"time": "2020-06-14T17:15:34+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -710,17 +719,17 @@
},
{
"name": "league/flysystem",
"version": "1.0.67",
"version_normalized": "1.0.67.0",
"version": "1.0.69",
"version_normalized": "1.0.69.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e"
"reference": "7106f78428a344bc4f643c233a94e48795f10967"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5b1f36c75c4bdde981294c2a0ebdb437ee6f275e",
"reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/7106f78428a344bc4f643c233a94e48795f10967",
"reference": "7106f78428a344bc4f643c233a94e48795f10967",
"shasum": ""
},
"require": {
@ -750,7 +759,7 @@
"spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
"srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
},
"time": "2020-04-16T13:21:26+00:00",
"time": "2020-05-18T15:13:39+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -792,6 +801,12 @@
"s3",
"sftp",
"storage"
],
"funding": [
{
"url": "https://offset.earth/frankdejonge",
"type": "other"
}
]
},
{
@ -1210,17 +1225,17 @@
},
{
"name": "masterminds/html5",
"version": "2.7.0",
"version_normalized": "2.7.0.0",
"version": "2.7.1",
"version_normalized": "2.7.1.0",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
"reference": "104443ad663d15981225f99532ba73c2f1d6b6f2"
"reference": "a3edfe52f9e7380e498d33157e1330e85386645d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Masterminds/html5-php/zipball/104443ad663d15981225f99532ba73c2f1d6b6f2",
"reference": "104443ad663d15981225f99532ba73c2f1d6b6f2",
"url": "https://api.github.com/repos/Masterminds/html5-php/zipball/a3edfe52f9e7380e498d33157e1330e85386645d",
"reference": "a3edfe52f9e7380e498d33157e1330e85386645d",
"shasum": ""
},
"require": {
@ -1234,7 +1249,7 @@
"sami/sami": "~2.0",
"satooshi/php-coveralls": "1.0.*"
},
"time": "2019-07-25T07:03:26+00:00",
"time": "2020-02-06T11:39:04+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -1478,26 +1493,26 @@
},
{
"name": "pear/text_languagedetect",
"version": "v1.0.0",
"version_normalized": "1.0.0.0",
"version": "v1.0.1",
"version_normalized": "1.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/pear/Text_LanguageDetect.git",
"reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6"
"reference": "9e253f26cef9a9066f53f200cc3e0684018cb5b5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pear/Text_LanguageDetect/zipball/bb9ff6f4970f686fac59081e916b456021fe7ba6",
"reference": "bb9ff6f4970f686fac59081e916b456021fe7ba6",
"url": "https://api.github.com/repos/pear/Text_LanguageDetect/zipball/9e253f26cef9a9066f53f200cc3e0684018cb5b5",
"reference": "9e253f26cef9a9066f53f200cc3e0684018cb5b5",
"shasum": ""
},
"require-dev": {
"phpunit/phpunit": "*"
"phpunit/phpunit": "8.*|9.*"
},
"suggest": {
"ext-mbstring": "May require the mbstring PHP extension"
},
"time": "2017-03-02T16:14:08+00:00",
"time": "2020-05-17T12:19:40+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -2383,28 +2398,92 @@
]
},
{
"name": "symfony/options-resolver",
"version": "v5.0.8",
"version_normalized": "5.0.8.0",
"name": "symfony/deprecation-contracts",
"version": "v2.1.2",
"version_normalized": "2.1.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1"
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/3707e3caeff2b797c0bfaadd5eba723dd44e6bf1",
"reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337",
"reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337",
"shasum": ""
},
"require": {
"php": "^7.2.5"
"php": ">=7.1"
},
"time": "2020-04-06T10:40:56+00:00",
"time": "2020-05-27T08:34:37+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.0-dev"
"dev-master": "2.1-dev"
}
},
"installation-source": "dist",
"autoload": {
"files": [
"function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
]
},
{
"name": "symfony/options-resolver",
"version": "v5.1.1",
"version_normalized": "5.1.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "663f5dd5e14057d1954fe721f9709d35837f2447"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/663f5dd5e14057d1954fe721f9709d35837f2447",
"reference": "663f5dd5e14057d1954fe721f9709d35837f2447",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-php80": "^1.15"
},
"time": "2020-05-23T13:08:13+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.1-dev"
}
},
"installation-source": "dist",
@ -2436,21 +2515,35 @@
"config",
"configuration",
"options"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
]
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.15.0",
"version_normalized": "1.15.0.0",
"version": "v1.17.0",
"version_normalized": "1.17.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14"
"reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
"reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
"reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
"shasum": ""
},
"require": {
@ -2459,11 +2552,11 @@
"suggest": {
"ext-ctype": "For best performance"
},
"time": "2020-02-27T09:26:54+00:00",
"time": "2020-05-12T16:14:59+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
},
"installation-source": "dist",
@ -2496,21 +2589,35 @@
"ctype",
"polyfill",
"portable"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
]
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.15.0",
"version_normalized": "1.15.0.0",
"version": "v1.17.0",
"version_normalized": "1.17.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf"
"reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf",
"reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
"reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
"shasum": ""
},
"require": {
@ -2521,11 +2628,11 @@
"suggest": {
"ext-intl": "For best performance"
},
"time": "2020-03-09T19:04:49+00:00",
"time": "2020-05-12T16:47:27+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
},
"installation-source": "dist",
@ -2560,21 +2667,35 @@
"polyfill",
"portable",
"shim"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
]
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.15.0",
"version_normalized": "1.15.0.0",
"version": "v1.17.0",
"version_normalized": "1.17.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac"
"reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
"reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
"reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
"shasum": ""
},
"require": {
@ -2583,11 +2704,11 @@
"suggest": {
"ext-mbstring": "For best performance"
},
"time": "2020-03-09T19:04:49+00:00",
"time": "2020-05-12T16:47:27+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
},
"installation-source": "dist",
@ -2621,31 +2742,45 @@
"polyfill",
"portable",
"shim"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
]
},
{
"name": "symfony/polyfill-php72",
"version": "v1.15.0",
"version_normalized": "1.15.0.0",
"version": "v1.17.0",
"version_normalized": "1.17.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "37b0976c78b94856543260ce09b460a7bc852747"
"reference": "f048e612a3905f34931127360bdd2def19a5e582"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/37b0976c78b94856543260ce09b460a7bc852747",
"reference": "37b0976c78b94856543260ce09b460a7bc852747",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
"reference": "f048e612a3905f34931127360bdd2def19a5e582",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "2020-02-27T09:26:54+00:00",
"time": "2020-05-12T16:47:27+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
},
"installation-source": "dist",
@ -2678,31 +2813,124 @@
"polyfill",
"portable",
"shim"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
]
},
{
"name": "symfony/polyfill-php80",
"version": "v1.17.0",
"version_normalized": "1.17.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/5e30b2799bc1ad68f7feb62b60a73743589438dd",
"reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd",
"shasum": ""
},
"require": {
"php": ">=7.0.8"
},
"time": "2020-05-12T16:47:27+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.17-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
]
},
{
"name": "symfony/process",
"version": "v5.0.8",
"version_normalized": "5.0.8.0",
"version": "v5.1.1",
"version_normalized": "5.1.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "3179f68dff5bad14d38c4114a1dab98030801fd7"
"reference": "7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/3179f68dff5bad14d38c4114a1dab98030801fd7",
"reference": "3179f68dff5bad14d38c4114a1dab98030801fd7",
"url": "https://api.github.com/repos/symfony/process/zipball/7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1",
"reference": "7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1",
"shasum": ""
},
"require": {
"php": "^7.2.5"
"php": ">=7.2.5",
"symfony/polyfill-php80": "^1.15"
},
"time": "2020-04-15T15:59:10+00:00",
"time": "2020-05-30T20:35:19+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.0-dev"
"dev-master": "5.1-dev"
}
},
"installation-source": "dist",
@ -2729,7 +2957,21 @@
}
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com"
"homepage": "https://symfony.com",
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
]
},
{
"name": "twbs/bootstrap",
@ -2786,17 +3028,17 @@
},
{
"name": "voku/portable-ascii",
"version": "1.4.10",
"version_normalized": "1.4.10.0",
"version": "1.5.1",
"version_normalized": "1.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/voku/portable-ascii.git",
"reference": "240e93829a5f985fab0984a6e55ae5e26b78a334"
"reference": "e7f9bd5deff09a57318f9b900ab33a05acfcf4d3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/voku/portable-ascii/zipball/240e93829a5f985fab0984a6e55ae5e26b78a334",
"reference": "240e93829a5f985fab0984a6e55ae5e26b78a334",
"url": "https://api.github.com/repos/voku/portable-ascii/zipball/e7f9bd5deff09a57318f9b900ab33a05acfcf4d3",
"reference": "e7f9bd5deff09a57318f9b900ab33a05acfcf4d3",
"shasum": ""
},
"require": {
@ -2808,13 +3050,12 @@
"suggest": {
"ext-intl": "Use Intl for transliterator_transliterate() support"
},
"time": "2020-03-13T01:23:26+00:00",
"time": "2020-05-26T06:40:44+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"voku\\": "src/voku/",
"voku\\tests\\": "tests/"
"voku\\": "src/voku/"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -2833,6 +3074,24 @@
"ascii",
"clean",
"php"
],
"funding": [
{
"url": "https://www.paypal.me/moelleken",
"type": "custom"
},
{
"url": "https://github.com/voku",
"type": "github"
},
{
"url": "https://www.patreon.com/voku",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
"type": "tidelift"
}
]
},
{

View file

@ -18,13 +18,13 @@
{"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
],
"require": {
"php": "^7.1.3"
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0",
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan-shim": "^0.9.2",
"vimeo/psalm": "^3.2.2"
"vimeo/psalm": "^3.8.1"
},
"autoload": {
"psr-4": { "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" }
@ -33,10 +33,5 @@
"psr-4": {
"Doctrine\\Tests\\": "tests/Doctrine/Tests"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.6.x-dev"
}
}
}

View file

@ -7,6 +7,7 @@ use Closure;
/**
* Lazy collection that is backed by a concrete collection
*
* @phpstan-template TKey
* @psalm-template TKey of array-key
* @psalm-template T
* @template-implements Collection<TKey,T>
@ -284,6 +285,8 @@ abstract class AbstractLazyCollection implements Collection
/**
* {@inheritDoc}
*
* @psalm-param TKey $offset
*/
public function offsetExists($offset)
{
@ -294,6 +297,12 @@ abstract class AbstractLazyCollection implements Collection
/**
* {@inheritDoc}
*
* @param int|string $offset
*
* @return mixed
*
* @psalm-param TKey $offset
*/
public function offsetGet($offset)
{
@ -304,6 +313,10 @@ abstract class AbstractLazyCollection implements Collection
/**
* {@inheritDoc}
*
* @param mixed $value
*
* @psalm-param TKey $offset
*/
public function offsetSet($offset, $value)
{
@ -313,6 +326,8 @@ abstract class AbstractLazyCollection implements Collection
/**
* {@inheritDoc}
*
* @psalm-param TKey $offset
*/
public function offsetUnset($offset)
{

View file

@ -32,6 +32,7 @@ use function uasort;
* serialize a collection use {@link toArray()} and reconstruct the collection
* manually.
*
* @phpstan-template TKey
* @psalm-template TKey of array-key
* @psalm-template T
* @template-implements Collection<TKey,T>
@ -160,6 +161,8 @@ class ArrayCollection implements Collection, Selectable
* Required by interface ArrayAccess.
*
* {@inheritDoc}
*
* @psalm-param TKey $offset
*/
public function offsetExists($offset)
{
@ -170,6 +173,8 @@ class ArrayCollection implements Collection, Selectable
* Required by interface ArrayAccess.
*
* {@inheritDoc}
*
* @psalm-param TKey $offset
*/
public function offsetGet($offset)
{
@ -196,6 +201,8 @@ class ArrayCollection implements Collection, Selectable
* Required by interface ArrayAccess.
*
* {@inheritDoc}
*
* @psalm-param TKey $offset
*/
public function offsetUnset($offset)
{
@ -282,6 +289,11 @@ class ArrayCollection implements Collection, Selectable
/**
* {@inheritDoc}
*
* @psalm-suppress InvalidPropertyAssignmentValue
*
* This breaks assumptions about the template type, but it would
* be a backwards-incompatible change to remove this method
*/
public function add($element)
{

View file

@ -24,6 +24,7 @@ use IteratorAggregate;
* position unless you explicitly positioned it before. Prefer iteration with
* external iterators.
*
* @phpstan-template TKey
* @psalm-template TKey of array-key
* @psalm-template T
* @template-extends IteratorAggregate<TKey, T>

View file

@ -14,6 +14,7 @@ namespace Doctrine\Common\Collections;
* this API can implement efficient database access without having to ask the
* EntityManager or Repositories.
*
* @phpstan-template TKey
* @psalm-template TKey as array-key
* @psalm-template T
*/

View file

@ -1,5 +1,9 @@
# Change Log
## 6.5.4 - 2020-05-25
* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
## 6.5.3 - 2020-04-18
* Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550)
@ -19,7 +23,10 @@
* Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143)
* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
* Fix: `RetryMiddleware` did not do exponential delay between retires due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
**After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
`Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
* Deprecated `ClientInterface::VERSION`

View file

@ -23,7 +23,7 @@
"require": {
"php": ">=5.5",
"ext-json": "*",
"symfony/polyfill-intl-idn": "^1.11",
"symfony/polyfill-intl-idn": "1.17.0",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1"
},

View file

@ -2,7 +2,7 @@
namespace GuzzleHttp;
use GuzzleHttp\Cookie\CookieJar;
use GuzzleHttp\Exception\InvalidArgumentException;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Promise;
use GuzzleHttp\Psr7;
use Psr\Http\Message\RequestInterface;
@ -47,9 +47,8 @@ class Client implements ClientInterface
* wire. The function is called with a Psr7\Http\Message\RequestInterface
* and array of transfer options, and must return a
* GuzzleHttp\Promise\PromiseInterface that is fulfilled with a
* Psr7\Http\Message\ResponseInterface on success. "handler" is a
* constructor only option that cannot be overridden in per/request
* options. If no handler is provided, a default handler will be created
* Psr7\Http\Message\ResponseInterface on success.
* If no handler is provided, a default handler will be created
* that enables all of the request options below by attaching all of the
* default middleware to the handler.
* - base_uri: (string|UriInterface) Base URI of the client that is merged
@ -489,7 +488,7 @@ class Client implements ClientInterface
/**
* Throw Exception with pre-set message.
* @return void
* @throws InvalidArgumentException Invalid body.
* @throws \InvalidArgumentException Invalid body.
*/
private function invalidBody()
{

View file

@ -15,7 +15,7 @@ interface ClientInterface
/**
* @deprecated Will be removed in Guzzle 7.0.0
*/
const VERSION = '6.5.3';
const VERSION = '6.5.4';
/**
* Send an HTTP request.

View file

@ -1,7 +1,6 @@
<?php
namespace GuzzleHttp\Handler;
use GuzzleHttp\Exception\InvalidArgumentException;
use GuzzleHttp\Promise as P;
use GuzzleHttp\Promise\Promise;
use GuzzleHttp\Utils;

View file

@ -3,6 +3,7 @@ namespace GuzzleHttp;
use GuzzleHttp\Exception\InvalidArgumentException;
use Psr\Http\Message\UriInterface;
use Symfony\Polyfill\Intl\Idn\Idn;
final class Utils
{
@ -30,10 +31,7 @@ final class Utils
public static function idnUriConvert(UriInterface $uri, $options = 0)
{
if ($uri->getHost()) {
$idnaVariant = defined('INTL_IDNA_VARIANT_UTS46') ? INTL_IDNA_VARIANT_UTS46 : 0;
$asciiHost = $idnaVariant === 0
? idn_to_ascii($uri->getHost(), $options)
: idn_to_ascii($uri->getHost(), $options, $idnaVariant, $info);
$asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
if ($asciiHost === false) {
$errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
@ -64,4 +62,28 @@ final class Utils
return $uri;
}
/**
* @param string $domain
* @param int $options
* @param array $info
*
* @return string|false
*/
private static function idnToAsci($domain, $options, &$info = [])
{
if (\preg_match('%^[ -~]+$%', $domain) === 1) {
return $domain;
}
if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) {
return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info);
}
/*
* The Idn class is marked as @internal. We've locked the version to
* symfony/polyfill-intl-idn to avoid issues in the future.
*/
return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
}
}

View file

@ -1,16 +0,0 @@
language: php
php:
- 7.0
- 7.1
- 7.2
- 7.3
- 7.4snapshot
before_script:
- composer install --no-interaction --prefer-source
- if [ "$(phpenv version-name)" == 7.3 ]; then travis_retry composer require phpstan/phpstan; fi
script:
- vendor/bin/phpunit --coverage-text --verbose
- if [ "$(phpenv version-name)" == 7.3 ]; then php vendor/bin/phpstan analyse; fi

View file

@ -1,9 +1,15 @@
# URLify for PHP [![Build Status](https://travis-ci.org/jbroadway/urlify.png)](https://travis-ci.org/jbroadway/urlify)
A PHP port of [URLify.js](https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/urlify.js)
from the Django project. Handles symbols from Latin languages as well as Arabic, Azerbaijani, Czech, German, Greek, Kazakh,
Latvian, Lithuanian, Persian, Polish, Romanian, Bulgarian, Russian, Serbian, Turkish, Ukrainian, Vietnamese and Slovak. Symbols it cannot
transliterate it will simply omit.
A fast PHP slug generator and transliteration library, started as a PHP port of
[URLify.js](https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/urlify.js)
from the Django project.
Handles symbols from latin languages, Arabic, Azerbaijani, Bulgarian, Burmese, Croatian, Czech, Danish, Esperanto,
Estonian, Finnish, French, Switzerland (French), Austrian (French), Georgian, German, Switzerland (German),
Austrian (German), Greek, Hindi, Kazakh, Latvian, Lithuanian, Norwegian, Persian, Polish, Romanian, Russian, Swedish,
Serbian, Slovak, Turkish, Ukrainian and Vietnamese, and many other via `ASCII::to_transliterate()`.
Symbols it cannot transliterate it can omit or replace with a specified character.
## Installation
@ -15,15 +21,21 @@ $ composer require jbroadway/urlify
## Usage
First, include Composer's autoloader:
```php
require_once 'vendor/autoload.php';
```
To generate slugs for URLs:
```php
<?php
echo URLify::filter (' J\'étudie le français ');
echo URLify::slug (' J\'étudie le français ');
// "jetudie-le-francais"
echo URLify::filter ('Lo siento, no hablo español.');
echo URLify::slug ('Lo siento, no hablo español.');
// "lo-siento-no-hablo-espanol"
```

View file

@ -1,7 +1,8 @@
<?php
/**
* A PHP port of URLify.js from the Django project + fallback via "Portable ASCII".
* A fast PHP slug generator and transliteration library, started as a PHP port of URLify.js
* from the Django project + fallback via "Portable ASCII".
*
* - https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/urlify.js
* - https://github.com/voku/portable-ascii
@ -126,6 +127,25 @@ class URLify
false
);
}
/**
* Convert a String to URL slug. Wraps <strong>filter()</strong> with a simpler
* set of defaults for typical usage in generating blog post slugs.
*
* @param string $string <p>The text you want to convert.</p>
* @param int $maxLength <p>Max. length of the output string, set to "0" (zero) to
* disable it</p>
* @param string $separator <p>Define a new separator for the words.</p>
* @param string $language <p>The language you want to convert to.</p>
*/
public static function slug(
string $string,
int $maxLength = 200,
string $separator = '-',
string $language = 'en'
): string {
return self::filter ($string, $maxLength, $language, false, false, true, $separator);
}
/**
* Convert a String to URL.

View file

@ -13,7 +13,7 @@
}
],
"require": {
"php": ">=7.0.0",
"php": ">=7.2.0",
"voku/portable-ascii": "^1.4",
"voku/stop-words": "^2.0"
},

View file

@ -1,8 +0,0 @@
<phpunit bootstrap="tests/bootstrap.php">
<testsuite name="URLify Test Suite">
<directory>tests</directory>
</testsuite>
<logging>
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
</logging>
</phpunit>

View file

@ -4,6 +4,7 @@
// Downcode the provided argument or stdin if the argument was not present
//
require_once \dirname(__DIR__) . '/vendor/autoload.php';
require_once \dirname(__DIR__) . '/URLify.php';
// Print usage and exit if arguments are invalid
@ -12,6 +13,7 @@ if ($argc < 1 || $argc > 2) {
}
// Process the provided argument
$piped = false;
if ($argc === 2) {
$s = $argv[1];
// Or read from stdin if the argument wasn't present

View file

@ -4,6 +4,7 @@
// Filter the provided argument or stdin if the argument was not present
//
require_once \dirname(__DIR__) . '/vendor/autoload.php';
require_once \dirname(__DIR__) . '/URLify.php';
// Print usage and exit if arguments are invalid
@ -12,6 +13,7 @@ if ($argc < 1 || $argc > 2) {
}
// Process the provided argument
$piped = false;
if ($argc === 2) {
$s = $argv[1];
// Or read from stdin if the argument wasn't present

View file

@ -4,6 +4,7 @@
// Transliterate the provided argument or stdin if the argument was not present
//
require_once \dirname(__DIR__) . '/vendor/autoload.php';
require_once \dirname(__DIR__) . '/URLify.php';
// Print usage and exit if arguments are invalid
@ -12,6 +13,7 @@ if ($argc < 1 || $argc > 2) {
}
// Process the provided argument
$piped = false;
if ($argc === 2) {
$s = $argv[1];
// Or read from stdin if the argument wasn't present

View file

@ -301,7 +301,7 @@ class Filesystem implements FilesystemInterface
return false;
}
return $object['timestamp'];
return (int) $object['timestamp'];
}
/**

View file

@ -87,7 +87,7 @@ interface FilesystemInterface
*
* @throws FileNotFoundException
*
* @return string|false The timestamp or false on failure.
* @return int|false The timestamp or false on failure.
*/
public function getTimestamp($path);

View file

@ -20,6 +20,8 @@ use League\Flysystem\Plugin\PluginNotFoundException;
* @method void assertPresent($path)
* @method void assertAbsent($path)
* @method Filesystem addPlugin(PluginInterface $plugin)
*
* @deprecated This functionality will be removed in 2.0
*/
class MountManager implements FilesystemInterface
{

View file

@ -188,6 +188,7 @@ class MimeType
'odb' => 'application/vnd.oasis.opendocument.database',
'ott' => 'application/vnd.oasis.opendocument.text-template',
'webp' => 'image/webp',
'ico' => 'image/x-icon',
];
/**

View file

@ -18,6 +18,7 @@ matrix:
- php: 7.2
- php: 7.3
env: BENCHMARK=1
- php: 7.4snapshot
fast_finish: true
cache:

View file

@ -1111,6 +1111,13 @@ class Tokenizer
if ('#' === $tok) {
$tok = $this->scanner->next();
if (false === $tok) {
$this->parseError('Expected &#DEC; &#HEX;, got EOF');
$this->scanner->unconsume(1);
return '&';
}
// Hexidecimal encoding.
// X[0-9a-fA-F]+;
// x[0-9a-fA-F]+;

View file

@ -133,6 +133,14 @@ class DOMTreeBuilderTest extends \Masterminds\HTML5\Tests\TestCase
</html>', $doc->saveXML());
}
public function testEntityAtEndOfFile()
{
$fragment = $this->parseFragment('&#');
$this->assertInstanceOf('DOMDocumentFragment', $fragment);
$this->assertSame('&#', $fragment->textContent);
$this->assertEquals('Line 1, Col 2: Expected &#DEC; &#HEX;, got EOF', $this->errors[0]);
}
public function testStrangeCapitalization()
{
$html = '<!doctype html>

View file

@ -26,7 +26,8 @@ class TokenizerTest extends \Masterminds\HTML5\Tests\TestCase
if (is_array($expects)) {
$this->assertEquals($expects, $event['data'], "Event $type should equal " . print_r($expects, true) . ': ' . print_r($event, true));
} else {
$this->assertEquals($expects, $event['data'][0], "Event $type should equal $expects: " . print_r($event, true));
$d = (is_array($event['data']) ? $event['data'][0] : null);
$this->assertEquals($expects, $d, "Event $type should equal $expects: " . print_r($event, true));
}
}

View file

@ -0,0 +1,6 @@
# composer related
composer.lock
composer.phar
vendor
/README.html
/dist

View file

@ -0,0 +1,14 @@
language: php
sudo: false
php:
- 7.2
- 7.3
- 7.4
install:
- pear install pear/PHP_CodeSniffer
- composer install
- phpenv rehash
script:
- composer validate
- ./vendor/bin/phpunit --coverage-text tests
- phpcs Text/

View file

@ -155,3 +155,12 @@ Unit test status
.. image:: https://travis-ci.org/pear/Text_LanguageDetect.svg?branch=master
:target: https://travis-ci.org/pear/Text_LanguageDetect
Notes
=====
Where are the data from?
I don't recall where I got the original data set.
It's just the frequencies of 3-letter combinations in each supported language.
It could be generated from a few random wikipedia pages from each language.

View file

@ -12,9 +12,9 @@
* @link http://pear.php.net/package/Text_LanguageDetect/
*/
//require_once 'Text/LanguageDetect/Exception.php';
//require_once 'Text/LanguageDetect/Parser.php';
//require_once 'Text/LanguageDetect/ISO639.php';
require_once 'Text/LanguageDetect/Exception.php';
require_once 'Text/LanguageDetect/Parser.php';
require_once 'Text/LanguageDetect/ISO639.php';
/**
* Detects the language of a given piece of text.
@ -189,7 +189,7 @@ class Text_LanguageDetect
*/
protected function _get_data_loc($fname)
{
if ($fname{0} == '/' || $fname{0} == '.') {
if ($fname[0] == '/' || $fname[0] == '.') {
// if filename starts with a slash, assume it's an absolute pathname
// and skip whatever is in $this->_data_dir
return $fname;
@ -247,12 +247,6 @@ class Text_LanguageDetect
protected function _checkTrigram($trigram)
{
if (!is_array($trigram)) {
if (ini_get('magic_quotes_runtime')) {
throw new Text_LanguageDetect_Exception(
'Error loading database. Try turning magic_quotes_runtime off.',
Text_LanguageDetect_Exception::MAGIC_QUOTES
);
}
throw new Text_LanguageDetect_Exception(
'Language database is not an array.',
Text_LanguageDetect_Exception::DB_NOT_ARRAY
@ -1470,31 +1464,31 @@ class Text_LanguageDetect
case 1:
// normal ASCII-7 byte
// 0xxxxxxx --> 0xxxxxxx
return ord($char{0});
return ord($char[0]);
case 2:
// 2 byte unicode
// 110zzzzx 10xxxxxx --> 00000zzz zxxxxxxx
$z = (ord($char{0}) & 0x000001F) << 6;
$x = (ord($char{1}) & 0x0000003F);
$z = (ord($char[0]) & 0x000001F) << 6;
$x = (ord($char[1]) & 0x0000003F);
return ($z | $x);
case 3:
// 3 byte unicode
// 1110zzzz 10zxxxxx 10xxxxxx --> zzzzzxxx xxxxxxxx
$z = (ord($char{0}) & 0x0000000F) << 12;
$x1 = (ord($char{1}) & 0x0000003F) << 6;
$x2 = (ord($char{2}) & 0x0000003F);
$z = (ord($char[0]) & 0x0000000F) << 12;
$x1 = (ord($char[1]) & 0x0000003F) << 6;
$x2 = (ord($char[2]) & 0x0000003F);
return ($z | $x1 | $x2);
case 4:
// 4 byte unicode
// 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx -->
// 000zzzzz xxxxxxxx xxxxxxxx
$z1 = (ord($char{0}) & 0x00000007) << 18;
$z2 = (ord($char{1}) & 0x0000003F) << 12;
$x1 = (ord($char{2}) & 0x0000003F) << 6;
$x2 = (ord($char{3}) & 0x0000003F);
$z1 = (ord($char[0]) & 0x00000007) << 18;
$z2 = (ord($char[1]) & 0x0000003F) << 12;
$x1 = (ord($char[2]) & 0x0000003F) << 6;
$x2 = (ord($char[3]) & 0x0000003F);
return ($z1 | $z2 | $x1 | $x2);
}
}
@ -1514,7 +1508,7 @@ class Text_LanguageDetect
*/
protected static function _next_char($str, &$counter, $special_convert = false)
{
$char = $str{$counter++};
$char = $str[$counter++];
$ord = ord($char);
// for a description of the utf8 system see
@ -1538,7 +1532,7 @@ class Text_LanguageDetect
} elseif ($ord >> 5 == 6) { // two-byte char
// multi-byte chars
$nextchar = $str{$counter++}; // get next byte
$nextchar = $str[$counter++]; // get next byte
// lower-casing of non-ascii characters is still incomplete
@ -1580,12 +1574,12 @@ class Text_LanguageDetect
} elseif ($ord >> 4 == 14) { // three-byte char
// tag on next 2 bytes
return $char . $str{$counter++} . $str{$counter++};
return $char . $str[$counter++] . $str[$counter++];
} elseif ($ord >> 3 == 30) { // four-byte char
// tag on next 3 bytes
return $char . $str{$counter++} . $str{$counter++} . $str{$counter++};
return $char . $str[$counter++] . $str[$counter++] . $str[$counter++];
} else {
// error?

View file

@ -27,6 +27,6 @@
"ext-mbstring": "May require the mbstring PHP extension"
},
"require-dev": {
"phpunit/phpunit": "*"
"phpunit/phpunit": "8.*|9.*"
}
}

View file

@ -0,0 +1,18 @@
<?php
require_once 'Text/LanguageDetect.php';
$text = 'Was wäre, wenn ich Ihnen das jetzt sagen würde?';
$ld = new Text_LanguageDetect();
//3 most probable languages
$results = $ld->detect($text, 3);
foreach ($results as $language => $confidence) {
echo $language . ': ' . number_format($confidence, 2) . "\n";
}
//output:
//german: 0.35
//dutch: 0.25
//swedish: 0.20
?>

View file

@ -0,0 +1,15 @@
<?php
/**
* How to handle errors
*/
require_once 'Text/LanguageDetect.php';
require_once 'Text/LanguageDetect/Exception.php';
try {
$ld = new Text_LanguageDetect();
$lang = $ld->detectSimple('Das ist ein kleiner Text');
echo "Language is: $lang\n";
} catch (Text_LanguageDetect_Exception $e) {
echo 'An error occured! Message: ' . $e . "\n";
}
?>

View file

@ -0,0 +1,35 @@
<?php
/**
* example usage (CLI)
*
* @package Text_LanguageDetect
* @version CVS: $Id$
*/
require_once 'Text/LanguageDetect.php';
$l = new Text_LanguageDetect;
$stdin = fopen('php://stdin', 'r');
echo "Supported languages:\n";
$langs = $l->getLanguages();
sort($langs);
echo join(', ', $langs);
echo "\ntotal ", count($langs), "\n\n";
while ($line = fgets($stdin)) {
$result = $l->detect($line, 4);
print_r($result);
$blocks = $l->detectUnicodeBlocks($line, true);
print_r($blocks);
}
fclose($stdin);
unset($l);
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
?>

View file

@ -0,0 +1,72 @@
<?php
/**
* example usage (web)
*
* @package Text_LanguageDetect
* @version CVS: $Id$
*/
// browsers will encode multi-byte characters wrong unless they think the page is utf8-encoded
header('Content-type: text/html; charset=utf-8', true);
require_once 'Text/LanguageDetect.php';
$l = new Text_LanguageDetect;
if (isset($_REQUEST['q'])) {
$q = stripslashes($_REQUEST['q']);
}
?>
<html>
<head>
<title>Text_LanguageDetect demonstration</title>
</head>
<body>
<h2>Text_LanguageDetect</h2>
<?
echo "<small>Supported languages:\n";
$langs = $l->getLanguages();
sort($langs);
foreach ($langs as $lang) {
echo ucfirst($lang), ', ';
$i++;
}
echo "<br />total $i</small><br /><br />";
?>
<form method="post">
Enter text to identify language (at least a couple of sentences):<br />
<textarea name="q" wrap="virtual" cols="80" rows="8"><?= $q ?></textarea>
<br />
<input type="submit" value="Submit" />
</form>
<?
if (isset($q) && strlen($q)) {
$len = $l->utf8strlen($q);
if ($len < 20) { // this value picked somewhat arbitrarily
echo "Warning: string not very long ($len chars)<br />\n";
}
$result = $l->detectConfidence($q);
if ($result == null) {
echo "Text_LanguageDetect cannot identify this piece of text. <br /><br />\n";
} else {
echo "Text_LanguageDetect thinks this text is written in <b>{$result['language']}</b> ({$result['similarity']}, {$result['confidence']})<br /><br />\n";
}
$result = $l->detectUnicodeBlocks($q, false);
if (!empty($result)) {
arsort($result);
echo "Unicode blocks present: ", join(', ', array_keys($result)), "\n<br /><br />";
}
}
unset($l);
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
?>
</body></html>

View file

@ -0,0 +1,19 @@
<?php
/**
* Demonstrates how to use ISO language codes.
*
* The "name mode" changes the way languages are accepted and returned.
*/
require_once 'Text/LanguageDetect.php';
$ld = new Text_LanguageDetect();
//will output the ISO 639-1 two-letter language code
// "de"
$ld->setNameMode(2);
echo $ld->detectSimple('Das ist ein kleiner Text') . "\n";
//will output the ISO 639-2 three-letter language code
// "deu"
$ld->setNameMode(3);
echo $ld->detectSimple('Das ist ein kleiner Text') . "\n";
?>

View file

@ -0,0 +1,11 @@
<?php
/**
* List all supported languages
*/
require_once 'Text/LanguageDetect.php';
$ld = new Text_LanguageDetect();
foreach ($ld->getLanguages() as $lang) {
echo $lang . "\n";
}
?>

View file

@ -0,0 +1,10 @@
<?php
require_once 'Text/LanguageDetect.php';
$text = 'Was wäre, wenn ich Ihnen das jetzt sagen würde?';
$ld = new Text_LanguageDetect();
$result = $ld->detectSimple($text);
var_dump($result);
//output: german
?>

View file

@ -0,0 +1,10 @@
<?xml version="1.0"?>
<ruleset name="PEAR-textlanguagedetect">
<rule ref="PEAR">
<!-- we keep the old php4-style variable names for now -->
<exclude name="PEAR.NamingConventions.ValidFunctionName.PublicUnderscore"/>
<exclude name="PEAR.NamingConventions.ValidVariableName.PublicUnderscore"/>
<!-- we keep the method names for BC reasons -->
<exclude name="PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps"/>
</rule>
</ruleset>

View file

@ -0,0 +1,3 @@
vendor/
composer.lock
phpunit.xml

View file

@ -0,0 +1,5 @@
CHANGELOG
=========
The changelog is maintained for all Symfony contracts at the following URL:
https://github.com/symfony/contracts/blob/master/CHANGELOG.md

View file

@ -0,0 +1,19 @@
Copyright (c) 2020 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,26 @@
Symfony Deprecation Contracts
=============================
A generic function and convention to trigger deprecation notices.
This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices.
By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component,
the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments.
The function requires at least 3 arguments:
- the name of the Composer package that is triggering the deprecation
- the version of the package that introduced the deprecation
- the message of the deprecation
- more arguments can be provided: they will be inserted in the message using `printf()` formatting
Example:
```php
trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin');
```
This will generate the following message:
`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.`
While not necessarily recommended, the deprecation notices can be completely ignored by declaring an empty
`function trigger_deprecation() {}` in your application.

View file

@ -0,0 +1,31 @@
{
"name": "symfony/deprecation-contracts",
"type": "library",
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"license": "MIT",
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"require": {
"php": ">=7.1"
},
"autoload": {
"files": [
"function.php"
]
},
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "2.1-dev"
}
}
}

View file

@ -0,0 +1,27 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
if (!function_exists('trigger_deprecation')) {
/**
* Triggers a silenced deprecation notice.
*
* @param string $package The name of the Composer package that is triggering the deprecation
* @param string $version The version of the package that introduced the deprecation
* @param string $message The message of the deprecation
* @param mixed ...$args Values to insert in the message using printf() formatting
*
* @author Nicolas Grekas <p@tchwork.com>
*/
function trigger_deprecation(string $package, string $version, string $message, ...$args): void
{
@trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), E_USER_DEPRECATED);
}
}

View file

@ -1,6 +1,14 @@
CHANGELOG
=========
5.1.0
-----
* added fluent configuration of options using `OptionResolver::define()`
* added `setInfo()` and `getInfo()` methods
* updated the signature of method `OptionsResolver::setDeprecated()` to `OptionsResolver::setDeprecation(string $option, string $package, string $version, $message)`
* deprecated `OptionsResolverIntrospector::getDeprecationMessage()`, use `OptionsResolverIntrospector::getDeprecation()` instead
5.0.0
-----

View file

@ -100,8 +100,20 @@ class OptionsResolverIntrospector
* @return string|\Closure
*
* @throws NoConfigurationException on no configured deprecation
*
* @deprecated since Symfony 5.1, use "getDeprecation()" instead.
*/
public function getDeprecationMessage(string $option)
{
trigger_deprecation('symfony/options-resolver', '5.1', 'The "%s()" method is deprecated, use "getDeprecation()" instead.', __METHOD__);
return $this->getDeprecation($option)['message'];
}
/**
* @throws NoConfigurationException on no configured deprecation
*/
public function getDeprecation(string $option): array
{
return ($this->get)('deprecated', $option, sprintf('No deprecation was set for the "%s" option.', $option));
}

View file

@ -0,0 +1,143 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\OptionsResolver;
use Symfony\Component\OptionsResolver\Exception\AccessException;
final class OptionConfigurator
{
private $name;
private $resolver;
public function __construct(string $name, OptionsResolver $resolver)
{
$this->name = $name;
$this->resolver = $resolver;
$this->resolver->setDefined($name);
}
/**
* Adds allowed types for this option.
*
* @param string ...$types One or more accepted types
*
* @return $this
*
* @throws AccessException If called from a lazy option or normalizer
*/
public function allowedTypes(string ...$types): self
{
$this->resolver->setAllowedTypes($this->name, $types);
return $this;
}
/**
* Sets allowed values for this option.
*
* @param mixed ...$values One or more acceptable values/closures
*
* @return $this
*
* @throws AccessException If called from a lazy option or normalizer
*/
public function allowedValues(...$values): self
{
$this->resolver->setAllowedValues($this->name, $values);
return $this;
}
/**
* Sets the default value for this option.
*
* @param mixed $value The default value of the option
*
* @return $this
*
* @throws AccessException If called from a lazy option or normalizer
*/
public function default($value): self
{
$this->resolver->setDefault($this->name, $value);
return $this;
}
/**
* Defines an option configurator with the given name.
*/
public function define(string $option): self
{
return $this->resolver->define($option);
}
/**
* Marks this option as deprecated.
*
* @param string $package The name of the composer package that is triggering the deprecation
* @param string $version The version of the package that introduced the deprecation
* @param string|\Closure $message The deprecation message to use
*
* @return $this
*/
public function deprecated(string $package, string $version, $message = 'The option "%name%" is deprecated.'): self
{
$this->resolver->setDeprecated($this->name, $package, $version, $message);
return $this;
}
/**
* Sets the normalizer for this option.
*
* @param \Closure $normalizer The normalizer
*
* @return $this
*
* @throws AccessException If called from a lazy option or normalizer
*/
public function normalize(\Closure $normalizer): self
{
$this->resolver->setNormalizer($this->name, $normalizer);
return $this;
}
/**
* Marks this option as required.
*
* @return $this
*
* @throws AccessException If called from a lazy option or normalizer
*/
public function required(): self
{
$this->resolver->setRequired($this->name);
return $this;
}
/**
* Sets an info message for an option.
*
* @return $this
*
* @throws AccessException If called from a lazy option or normalizer
*/
public function info(string $info): self
{
$this->resolver->setInfo($this->name, $info);
return $this;
}
}

View file

@ -71,6 +71,11 @@ class OptionsResolver implements Options
*/
private $allowedTypes = [];
/**
* A list of info messages for each option.
*/
private $info = [];
/**
* A list of closures for evaluating lazy options.
*/
@ -180,7 +185,7 @@ class OptionsResolver implements Options
$reflClosure = new \ReflectionFunction($value);
$params = $reflClosure->getParameters();
if (isset($params[0]) && null !== ($class = $params[0]->getClass()) && Options::class === $class->name) {
if (isset($params[0]) && Options::class === $this->getParameterClassName($params[0])) {
// Initialize the option if no previous value exists
if (!isset($this->defaults[$option])) {
$this->defaults[$option] = null;
@ -201,7 +206,7 @@ class OptionsResolver implements Options
return $this;
}
if (isset($params[0]) && null !== ($class = $params[0]->getClass()) && self::class === $class->name && (!isset($params[1]) || (null !== ($class = $params[1]->getClass()) && Options::class === $class->name))) {
if (isset($params[0]) && null !== ($type = $params[0]->getType()) && self::class === $type->getName() && (!isset($params[1]) || (null !== ($type = $params[1]->getType()) && Options::class === $type->getName()))) {
// Store closure for later evaluation
$this->nested[$option][] = $value;
$this->defaults[$option] = [];
@ -416,9 +421,11 @@ class OptionsResolver implements Options
* passed to the closure is the value of the option after validating it
* and before normalizing it.
*
* @param string|\Closure $deprecationMessage
* @param string $package The name of the composer package that is triggering the deprecation
* @param string $version The version of the package that introduced the deprecation
* @param string|\Closure $message The deprecation message to use
*/
public function setDeprecated(string $option, $deprecationMessage = 'The option "%name%" is deprecated.'): self
public function setDeprecated(string $option/*, string $package, string $version, $message = 'The option "%name%" is deprecated.' */): self
{
if ($this->locked) {
throw new AccessException('Options cannot be deprecated from a lazy option or normalizer.');
@ -428,16 +435,33 @@ class OptionsResolver implements Options
throw new UndefinedOptionsException(sprintf('The option "%s" does not exist, defined options are: "%s".', $this->formatOptions([$option]), implode('", "', array_keys($this->defined))));
}
if (!\is_string($deprecationMessage) && !$deprecationMessage instanceof \Closure) {
throw new InvalidArgumentException(sprintf('Invalid type for deprecation message argument, expected string or \Closure, but got "%s".', \gettype($deprecationMessage)));
$args = \func_get_args();
if (\func_num_args() < 3) {
trigger_deprecation('symfony/options-resolver', '5.1', 'The signature of method "%s()" requires 2 new arguments: "string $package, string $version", not defining them is deprecated.', __METHOD__);
$message = $args[1] ?? 'The option "%name%" is deprecated.';
$package = $version = '';
} else {
$package = $args[1];
$version = $args[2];
$message = $args[3] ?? 'The option "%name%" is deprecated.';
}
if (!\is_string($message) && !$message instanceof \Closure) {
throw new InvalidArgumentException(sprintf('Invalid type for deprecation message argument, expected string or \Closure, but got "%s".', get_debug_type($message)));
}
// ignore if empty string
if ('' === $deprecationMessage) {
if ('' === $message) {
return $this;
}
$this->deprecated[$option] = $deprecationMessage;
$this->deprecated[$option] = [
'package' => $package,
'version' => $version,
'message' => $message,
];
// Make sure the option is processed
unset($this->resolved[$option]);
@ -703,6 +727,53 @@ class OptionsResolver implements Options
return $this;
}
/**
* Defines an option configurator with the given name.
*/
public function define(string $option): OptionConfigurator
{
if (isset($this->defined[$option])) {
throw new OptionDefinitionException(sprintf('The option "%s" is already defined.', $option));
}
return new OptionConfigurator($option, $this);
}
/**
* Sets an info message for an option.
*
* @return $this
*
* @throws UndefinedOptionsException If the option is undefined
* @throws AccessException If called from a lazy option or normalizer
*/
public function setInfo(string $option, string $info): self
{
if ($this->locked) {
throw new AccessException('The Info message cannot be set from a lazy option or normalizer.');
}
if (!isset($this->defined[$option])) {
throw new UndefinedOptionsException(sprintf('The option "%s" does not exist. Defined options are: "%s".', $this->formatOptions([$option]), implode('", "', array_keys($this->defined))));
}
$this->info[$option] = $info;
return $this;
}
/**
* Gets the info message for an option.
*/
public function getInfo(string $option): ?string
{
if (!isset($this->defined[$option])) {
throw new UndefinedOptionsException(sprintf('The option "%s" does not exist. Defined options are: "%s".', $this->formatOptions([$option]), implode('", "', array_keys($this->defined))));
}
return $this->info[$option] ?? null;
}
/**
* Removes the option with the given name.
*
@ -722,7 +793,7 @@ class OptionsResolver implements Options
foreach ((array) $optionNames as $option) {
unset($this->defined[$option], $this->defaults[$option], $this->required[$option], $this->resolved[$option]);
unset($this->lazy[$option], $this->normalizers[$option], $this->allowedTypes[$option], $this->allowedValues[$option]);
unset($this->lazy[$option], $this->normalizers[$option], $this->allowedTypes[$option], $this->allowedValues[$option], $this->info[$option]);
}
return $this;
@ -751,6 +822,7 @@ class OptionsResolver implements Options
$this->allowedTypes = [];
$this->allowedValues = [];
$this->deprecated = [];
$this->info = [];
return $this;
}
@ -830,7 +902,7 @@ class OptionsResolver implements Options
* Returns the resolved value of an option.
*
* @param string $option The option name
* @param bool $triggerDeprecation Whether to trigger the deprecation or not
* @param bool $triggerDeprecation Whether to trigger the deprecation or not (true by default)
*
* @return mixed The option value
*
@ -850,8 +922,8 @@ class OptionsResolver implements Options
// Shortcut for resolved options
if (isset($this->resolved[$option]) || \array_key_exists($option, $this->resolved)) {
if ($triggerDeprecation && isset($this->deprecated[$option]) && (isset($this->given[$option]) || $this->calling) && \is_string($this->deprecated[$option])) {
@trigger_error(strtr($this->deprecated[$option], ['%name%' => $option]), E_USER_DEPRECATED);
if ($triggerDeprecation && isset($this->deprecated[$option]) && (isset($this->given[$option]) || $this->calling) && \is_string($this->deprecated[$option]['message'])) {
trigger_deprecation($this->deprecated[$option]['package'], $this->deprecated[$option]['version'], strtr($this->deprecated[$option]['message'], ['%name%' => $option]));
}
return $this->resolved[$option];
@ -876,7 +948,7 @@ class OptionsResolver implements Options
}
if (!\is_array($value)) {
throw new InvalidOptionsException(sprintf('The nested option "%s" with value %s is expected to be of type array, but is of type "%s".', $this->formatOptions([$option]), $this->formatValue($value), $this->formatTypeOf($value)));
throw new InvalidOptionsException(sprintf('The nested option "%s" with value %s is expected to be of type array, but is of type "%s".', $this->formatOptions([$option]), $this->formatValue($value), get_debug_type($value)));
}
// The following section must be protected from cyclic calls.
@ -984,6 +1056,10 @@ class OptionsResolver implements Options
);
}
if (isset($this->info[$option])) {
$message .= sprintf(' Info: %s.', $this->info[$option]);
}
throw new InvalidOptionsException($message);
}
}
@ -991,9 +1067,10 @@ class OptionsResolver implements Options
// Check whether the option is deprecated
// and it is provided by the user or is being called from a lazy evaluation
if ($triggerDeprecation && isset($this->deprecated[$option]) && (isset($this->given[$option]) || ($this->calling && \is_string($this->deprecated[$option])))) {
$deprecationMessage = $this->deprecated[$option];
$deprecation = $this->deprecated[$option];
$message = $this->deprecated[$option]['message'];
if ($deprecationMessage instanceof \Closure) {
if ($message instanceof \Closure) {
// If the closure is already being called, we have a cyclic dependency
if (isset($this->calling[$option])) {
throw new OptionDefinitionException(sprintf('The options "%s" have a cyclic dependency.', $this->formatOptions(array_keys($this->calling))));
@ -1001,16 +1078,16 @@ class OptionsResolver implements Options
$this->calling[$option] = true;
try {
if (!\is_string($deprecationMessage = $deprecationMessage($this, $value))) {
throw new InvalidOptionsException(sprintf('Invalid type for deprecation message, expected string but got "%s", return an empty string to ignore.', \gettype($deprecationMessage)));
if (!\is_string($message = $message($this, $value))) {
throw new InvalidOptionsException(sprintf('Invalid type for deprecation message, expected string but got "%s", return an empty string to ignore.', get_debug_type($message)));
}
} finally {
unset($this->calling[$option]);
}
}
if ('' !== $deprecationMessage) {
@trigger_error(strtr($deprecationMessage, ['%name%' => $option]), E_USER_DEPRECATED);
if ('' !== $message) {
trigger_deprecation($deprecation['package'], $deprecation['version'], strtr($message, ['%name%' => $option]));
}
}
@ -1063,7 +1140,7 @@ class OptionsResolver implements Options
}
if (!$invalidTypes || $level > 0) {
$invalidTypes[$this->formatTypeOf($value)] = true;
$invalidTypes[get_debug_type($value)] = true;
}
return false;
@ -1129,18 +1206,6 @@ class OptionsResolver implements Options
return \count($this->defaults);
}
/**
* Returns a string representation of the type of the value.
*
* @param mixed $value The value to return the type of
*
* @return string The type of the value
*/
private function formatTypeOf($value): string
{
return \is_object($value) ? \get_class($value) : \gettype($value);
}
/**
* Returns a string representation of the value.
*
@ -1215,4 +1280,13 @@ class OptionsResolver implements Options
return implode('", "', $options);
}
private function getParameterClassName(\ReflectionParameter $parameter): ?string
{
if (!($type = $parameter->getType()) || $type->isBuiltin()) {
return null;
}
return $type->getName();
}
}

View file

@ -16,7 +16,9 @@
}
],
"require": {
"php": "^7.2.5"
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-php80": "^1.15"
},
"autoload": {
"psr-4": { "Symfony\\Component\\OptionsResolver\\": "" },
@ -27,7 +29,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "5.0-dev"
"dev-master": "5.1-dev"
}
}
}

View file

@ -13,14 +13,34 @@ use Symfony\Polyfill\Ctype as p;
if (!function_exists('ctype_alnum')) {
function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); }
}
if (!function_exists('ctype_alpha')) {
function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); }
}
if (!function_exists('ctype_cntrl')) {
function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); }
}
if (!function_exists('ctype_digit')) {
function ctype_digit($text) { return p\Ctype::ctype_digit($text); }
}
if (!function_exists('ctype_graph')) {
function ctype_graph($text) { return p\Ctype::ctype_graph($text); }
}
if (!function_exists('ctype_lower')) {
function ctype_lower($text) { return p\Ctype::ctype_lower($text); }
}
if (!function_exists('ctype_print')) {
function ctype_print($text) { return p\Ctype::ctype_print($text); }
}
if (!function_exists('ctype_punct')) {
function ctype_punct($text) { return p\Ctype::ctype_punct($text); }
}
if (!function_exists('ctype_space')) {
function ctype_space($text) { return p\Ctype::ctype_space($text); }
}
if (!function_exists('ctype_upper')) {
function ctype_upper($text) { return p\Ctype::ctype_upper($text); }
}
if (!function_exists('ctype_xdigit')) {
function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); }
}

View file

@ -28,7 +28,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
}
}

View file

@ -127,6 +127,10 @@ final class Idn
private static function encodePart($input)
{
if (\substr($input, 0, 1) === '-' || \substr($input, -1) === '-') {
return false;
}
$codePoints = self::listCodePoints($input);
$n = 128;

View file

@ -11,51 +11,131 @@
use Symfony\Polyfill\Intl\Idn as p;
if (!defined('IDNA_DEFAULT')) {
if (extension_loaded('intl')) {
return;
}
if (!defined('U_IDNA_PROHIBITED_ERROR')) {
define('U_IDNA_PROHIBITED_ERROR', 66560);
}
if (!defined('U_IDNA_ERROR_START')) {
define('U_IDNA_ERROR_START', 66560);
}
if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
define('U_IDNA_UNASSIGNED_ERROR', 66561);
}
if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
define('U_IDNA_CHECK_BIDI_ERROR', 66562);
}
if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
}
if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
define('U_IDNA_ACE_PREFIX_ERROR', 66564);
}
if (!defined('U_IDNA_VERIFICATION_ERROR')) {
define('U_IDNA_VERIFICATION_ERROR', 66565);
}
if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
}
if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
}
if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
}
if (!defined('U_IDNA_ERROR_LIMIT')) {
define('U_IDNA_ERROR_LIMIT', 66569);
}
if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
}
if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
}
if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
}
if (!defined('IDNA_DEFAULT')) {
define('IDNA_DEFAULT', 0);
}
if (!defined('IDNA_ALLOW_UNASSIGNED')) {
define('IDNA_ALLOW_UNASSIGNED', 1);
}
if (!defined('IDNA_USE_STD3_RULES')) {
define('IDNA_USE_STD3_RULES', 2);
}
if (!defined('IDNA_CHECK_BIDI')) {
define('IDNA_CHECK_BIDI', 4);
}
if (!defined('IDNA_CHECK_CONTEXTJ')) {
define('IDNA_CHECK_CONTEXTJ', 8);
}
if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
}
if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
}
if (!defined('INTL_IDNA_VARIANT_2003')) {
define('INTL_IDNA_VARIANT_2003', 0);
}
if (!defined('INTL_IDNA_VARIANT_UTS46')) {
define('INTL_IDNA_VARIANT_UTS46', 1);
}
if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
define('IDNA_ERROR_EMPTY_LABEL', 1);
}
if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
define('IDNA_ERROR_LABEL_TOO_LONG', 2);
}
if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
}
if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
define('IDNA_ERROR_LEADING_HYPHEN', 8);
}
if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
define('IDNA_ERROR_TRAILING_HYPHEN', 16);
}
if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
define('IDNA_ERROR_HYPHEN_3_4', 32);
}
if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
}
if (!defined('IDNA_ERROR_DISALLOWED')) {
define('IDNA_ERROR_DISALLOWED', 128);
}
if (!defined('IDNA_ERROR_PUNYCODE')) {
define('IDNA_ERROR_PUNYCODE', 256);
}
if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
define('IDNA_ERROR_LABEL_HAS_DOT', 512);
}
if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
}
if (!defined('IDNA_ERROR_BIDI')) {
define('IDNA_ERROR_BIDI', 2048);
}
if (!defined('IDNA_ERROR_CONTEXTJ')) {
define('IDNA_ERROR_CONTEXTJ', 4096);
}
if (!function_exists('idn_to_ascii')) {
if (PHP_VERSION_ID < 70400) {
if (PHP_VERSION_ID < 70400) {
if (!function_exists('idn_to_ascii')) {
function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
}
if (!function_exists('idn_to_utf8')) {
function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
} else {
}
} else {
if (!function_exists('idn_to_ascii')) {
function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
}
if (!function_exists('idn_to_utf8')) {
function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
}
}

View file

@ -30,7 +30,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
}
}

View file

@ -11,54 +11,131 @@
use Symfony\Polyfill\Mbstring as p;
if (!defined('MB_CASE_UPPER')) {
define('MB_CASE_UPPER', 0);
define('MB_CASE_LOWER', 1);
define('MB_CASE_TITLE', 2);
}
if (!function_exists('mb_strlen')) {
if (!function_exists('mb_convert_encoding')) {
function mb_convert_encoding($s, $to, $from = null) { return p\Mbstring::mb_convert_encoding($s, $to, $from); }
}
if (!function_exists('mb_decode_mimeheader')) {
function mb_decode_mimeheader($s) { return p\Mbstring::mb_decode_mimeheader($s); }
}
if (!function_exists('mb_encode_mimeheader')) {
function mb_encode_mimeheader($s, $charset = null, $transferEnc = null, $lf = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($s, $charset, $transferEnc, $lf, $indent); }
}
if (!function_exists('mb_decode_numericentity')) {
function mb_decode_numericentity($s, $convmap, $enc = null) { return p\Mbstring::mb_decode_numericentity($s, $convmap, $enc); }
}
if (!function_exists('mb_encode_numericentity')) {
function mb_encode_numericentity($s, $convmap, $enc = null, $is_hex = false) { return p\Mbstring::mb_encode_numericentity($s, $convmap, $enc, $is_hex); }
}
if (!function_exists('mb_convert_case')) {
function mb_convert_case($s, $mode, $enc = null) { return p\Mbstring::mb_convert_case($s, $mode, $enc); }
}
if (!function_exists('mb_internal_encoding')) {
function mb_internal_encoding($enc = null) { return p\Mbstring::mb_internal_encoding($enc); }
}
if (!function_exists('mb_language')) {
function mb_language($lang = null) { return p\Mbstring::mb_language($lang); }
}
if (!function_exists('mb_list_encodings')) {
function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
}
if (!function_exists('mb_encoding_aliases')) {
function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
}
if (!function_exists('mb_check_encoding')) {
function mb_check_encoding($var = null, $encoding = null) { return p\Mbstring::mb_check_encoding($var, $encoding); }
}
if (!function_exists('mb_detect_encoding')) {
function mb_detect_encoding($str, $encodingList = null, $strict = false) { return p\Mbstring::mb_detect_encoding($str, $encodingList, $strict); }
}
if (!function_exists('mb_detect_order')) {
function mb_detect_order($encodingList = null) { return p\Mbstring::mb_detect_order($encodingList); }
}
if (!function_exists('mb_parse_str')) {
function mb_parse_str($s, &$result = array()) { parse_str($s, $result); }
}
if (!function_exists('mb_strlen')) {
function mb_strlen($s, $enc = null) { return p\Mbstring::mb_strlen($s, $enc); }
}
if (!function_exists('mb_strpos')) {
function mb_strpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strpos($s, $needle, $offset, $enc); }
}
if (!function_exists('mb_strtolower')) {
function mb_strtolower($s, $enc = null) { return p\Mbstring::mb_strtolower($s, $enc); }
}
if (!function_exists('mb_strtoupper')) {
function mb_strtoupper($s, $enc = null) { return p\Mbstring::mb_strtoupper($s, $enc); }
}
if (!function_exists('mb_substitute_character')) {
function mb_substitute_character($char = null) { return p\Mbstring::mb_substitute_character($char); }
}
if (!function_exists('mb_substr')) {
function mb_substr($s, $start, $length = 2147483647, $enc = null) { return p\Mbstring::mb_substr($s, $start, $length, $enc); }
}
if (!function_exists('mb_stripos')) {
function mb_stripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_stripos($s, $needle, $offset, $enc); }
}
if (!function_exists('mb_stristr')) {
function mb_stristr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_stristr($s, $needle, $part, $enc); }
}
if (!function_exists('mb_strrchr')) {
function mb_strrchr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrchr($s, $needle, $part, $enc); }
}
if (!function_exists('mb_strrichr')) {
function mb_strrichr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrichr($s, $needle, $part, $enc); }
}
if (!function_exists('mb_strripos')) {
function mb_strripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strripos($s, $needle, $offset, $enc); }
}
if (!function_exists('mb_strrpos')) {
function mb_strrpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strrpos($s, $needle, $offset, $enc); }
}
if (!function_exists('mb_strstr')) {
function mb_strstr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strstr($s, $needle, $part, $enc); }
}
if (!function_exists('mb_get_info')) {
function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
}
if (!function_exists('mb_http_output')) {
function mb_http_output($enc = null) { return p\Mbstring::mb_http_output($enc); }
}
if (!function_exists('mb_strwidth')) {
function mb_strwidth($s, $enc = null) { return p\Mbstring::mb_strwidth($s, $enc); }
}
if (!function_exists('mb_substr_count')) {
function mb_substr_count($haystack, $needle, $enc = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $enc); }
}
if (!function_exists('mb_output_handler')) {
function mb_output_handler($contents, $status) { return p\Mbstring::mb_output_handler($contents, $status); }
}
if (!function_exists('mb_http_input')) {
function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
}
if (!function_exists('mb_convert_variables')) {
function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $a, $b, $c, $d, $e, $f); }
}
if (!function_exists('mb_chr')) {
if (!function_exists('mb_ord')) {
function mb_ord($s, $enc = null) { return p\Mbstring::mb_ord($s, $enc); }
}
if (!function_exists('mb_chr')) {
function mb_chr($code, $enc = null) { return p\Mbstring::mb_chr($code, $enc); }
}
if (!function_exists('mb_scrub')) {
function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
}
if (!function_exists('mb_str_split')) {
function mb_str_split($string, $split_length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $split_length, $encoding); }
}
if (extension_loaded('mbstring')) {
return;
}
if (!defined('MB_CASE_UPPER')) {
define('MB_CASE_UPPER', 0);
}
if (!defined('MB_CASE_LOWER')) {
define('MB_CASE_LOWER', 1);
}
if (!defined('MB_CASE_TITLE')) {
define('MB_CASE_TITLE', 2);
}

View file

@ -28,7 +28,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
}
}

View file

@ -95,7 +95,8 @@ final class Php72
return;
}
return self::$hashMask ^ hexdec(substr($hash, 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
// On 32-bit systems, PHP_INT_SIZE is 4,
return self::$hashMask ^ hexdec(substr($hash, 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
}
public static function sapi_windows_vt100_support($stream, $enable = null)
@ -166,7 +167,7 @@ final class Php72
self::$hashMask = (int) substr(ob_get_clean(), 17);
}
self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
}
public static function mb_chr($code, $encoding = null)

View file

@ -15,7 +15,8 @@ Moved to core since 7.2 (was in the optional XML extension earlier):
- [`utf8_encode`](https://php.net/utf8_encode)
- [`utf8_decode`](https://php.net/utf8_decode)
Also, it provides a constant added to PHP 7.2:
Also, it provides constants added to PHP 7.2:
- [`PHP_FLOAT_*`](https://php.net/reserved.constants#constant.php-float-dig)
- [`PHP_OS_FAMILY`](https://php.net/reserved.constants#constant.php-os-family)
More information can be found in the

View file

@ -11,26 +11,47 @@
use Symfony\Polyfill\Php72 as p;
if (PHP_VERSION_ID < 70200) {
if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
}
if (!function_exists('stream_isatty')) {
function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
}
if (!function_exists('utf8_encode')) {
function utf8_encode($s) { return p\Php72::utf8_encode($s); }
function utf8_decode($s) { return p\Php72::utf8_decode($s); }
}
if (!function_exists('spl_object_id')) {
function spl_object_id($s) { return p\Php72::spl_object_id($s); }
}
if (!defined('PHP_OS_FAMILY')) {
define('PHP_OS_FAMILY', p\Php72::php_os_family());
}
if (!function_exists('mb_chr')) {
function mb_ord($s, $enc = null) { return p\Php72::mb_ord($s, $enc); }
function mb_chr($code, $enc = null) { return p\Php72::mb_chr($code, $enc); }
function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
}
if (PHP_VERSION_ID >= 70200) {
return;
}
if (!defined('PHP_FLOAT_DIG')) {
define('PHP_FLOAT_DIG', 15);
}
if (!defined('PHP_FLOAT_EPSILON')) {
define('PHP_FLOAT_EPSILON', 2.2204460492503E-16);
}
if (!defined('PHP_FLOAT_MIN')) {
define('PHP_FLOAT_MIN', 2.2250738585072E-308);
}
if (!defined('PHP_FLOAT_MAX')) {
define('PHP_FLOAT_MAX', 1.7976931348623157E+308);
}
if (!defined('PHP_OS_FAMILY')) {
define('PHP_OS_FAMILY', p\Php72::php_os_family());
}
if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
}
if (!function_exists('stream_isatty')) {
function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
}
if (!function_exists('utf8_encode')) {
function utf8_encode($s) { return p\Php72::utf8_encode($s); }
}
if (!function_exists('utf8_decode')) {
function utf8_decode($s) { return p\Php72::utf8_decode($s); }
}
if (!function_exists('spl_object_id')) {
function spl_object_id($s) { return p\Php72::spl_object_id($s); }
}
if (!function_exists('mb_ord')) {
function mb_ord($s, $enc = null) { return p\Php72::mb_ord($s, $enc); }
}
if (!function_exists('mb_chr')) {
function mb_chr($code, $enc = null) { return p\Php72::mb_chr($code, $enc); }
}
if (!function_exists('mb_scrub')) {
function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
}

View file

@ -25,7 +25,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
}
}

19
vendor/symfony/polyfill-php80/LICENSE vendored Normal file
View file

@ -0,0 +1,19 @@
Copyright (c) 2020 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

105
vendor/symfony/polyfill-php80/Php80.php vendored Normal file
View file

@ -0,0 +1,105 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Polyfill\Php80;
/**
* @author Ion Bazan <ion.bazan@gmail.com>
* @author Nico Oelgart <nicoswd@gmail.com>
* @author Nicolas Grekas <p@tchwork.com>
*
* @internal
*/
final class Php80
{
public static function fdiv(float $dividend, float $divisor): float
{
return @($dividend / $divisor);
}
public static function get_debug_type($value): string
{
switch (true) {
case null === $value: return 'null';
case \is_bool($value): return 'bool';
case \is_string($value): return 'string';
case \is_array($value): return 'array';
case \is_int($value): return 'int';
case \is_float($value): return 'float';
case \is_object($value): break;
case $value instanceof \__PHP_Incomplete_Class: return '__PHP_Incomplete_Class';
default:
if (null === $type = @get_resource_type($value)) {
return 'unknown';
}
if ('Unknown' === $type) {
$type = 'closed';
}
return "resource ($type)";
}
$class = \get_class($value);
if (false === strpos($class, '@')) {
return $class;
}
return (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous';
}
public static function get_resource_id($res): int
{
if (!\is_resource($res) && null === @get_resource_type($res)) {
throw new \TypeError(sprintf('Argument 1 passed to get_resource_id() must be of the type resource, %s given', get_debug_type($res)));
}
return (int) $res;
}
public static function preg_last_error_msg(): string
{
switch (preg_last_error()) {
case PREG_INTERNAL_ERROR:
return 'Internal error';
case PREG_BAD_UTF8_ERROR:
return 'Malformed UTF-8 characters, possibly incorrectly encoded';
case PREG_BAD_UTF8_OFFSET_ERROR:
return 'The offset did not correspond to the beginning of a valid UTF-8 code point';
case PREG_BACKTRACK_LIMIT_ERROR:
return 'Backtrack limit exhausted';
case PREG_RECURSION_LIMIT_ERROR:
return 'Recursion limit exhausted';
case PREG_JIT_STACKLIMIT_ERROR:
return 'JIT stack limit exhausted';
case PREG_NO_ERROR:
return 'No error';
default:
return 'Unknown error';
}
}
public static function str_contains(string $haystack, string $needle): bool
{
return '' === $needle || false !== strpos($haystack, $needle);
}
public static function str_starts_with(string $haystack, string $needle): bool
{
return 0 === \strncmp($haystack, $needle, \strlen($needle));
}
public static function str_ends_with(string $haystack, string $needle): bool
{
return '' === $needle || ('' !== $haystack && 0 === \substr_compare($haystack, $needle, -\strlen($needle)));
}
}

23
vendor/symfony/polyfill-php80/README.md vendored Normal file
View file

@ -0,0 +1,23 @@
Symfony Polyfill / Php80
========================
This component provides features added to PHP 8.0 core:
- `Stringable` interface
- [`fdiv`](https://php.net/fdiv)
- `ValueError` class
- `FILTER_VALIDATE_BOOL` constant
- [`get_debug_type`](https://php.net/get_debug_type)
- [`preg_last_error_msg`](https://php.net/preg_last_error_msg)
- [`str_contains`](https://php.net/str_contains)
- [`str_starts_with`](https://php.net/str_starts_with)
- [`str_ends_with`](https://php.net/str_ends_with)
- [`get_resource_id`](https://php.net/get_resource_id)
More information can be found in the
[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
License
=======
This library is released under the [MIT license](LICENSE).

View file

@ -0,0 +1,9 @@
<?php
interface Stringable
{
/**
* @return string
*/
public function __toString();
}

View file

@ -0,0 +1,5 @@
<?php
class ValueError extends Error
{
}

View file

@ -0,0 +1,42 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Symfony\Polyfill\Php80 as p;
if (PHP_VERSION_ID >= 80000) {
return;
}
if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) {
define('FILTER_VALIDATE_BOOL', FILTER_VALIDATE_BOOLEAN);
}
if (!function_exists('fdiv')) {
function fdiv(float $dividend, float $divisor): float { return p\Php80::fdiv($dividend, $divisor); }
}
if (!function_exists('preg_last_error_msg')) {
function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); }
}
if (!function_exists('str_contains')) {
function str_contains(string $haystack, string $needle): bool { return p\Php80::str_contains($haystack, $needle); }
}
if (!function_exists('str_starts_with')) {
function str_starts_with(string $haystack, string $needle): bool { return p\Php80::str_starts_with($haystack, $needle); }
}
if (!function_exists('str_ends_with')) {
function str_ends_with(string $haystack, string $needle): bool { return p\Php80::str_ends_with($haystack, $needle); }
}
if (!function_exists('get_debug_type')) {
function get_debug_type($value): string { return p\Php80::get_debug_type($value); }
}
if (!function_exists('get_resource_id')) {
function get_resource_id($res): int { return p\Php80::get_resource_id($res); }
}

View file

@ -0,0 +1,36 @@
{
"name": "symfony/polyfill-php80",
"type": "library",
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"keywords": ["polyfill", "shim", "compatibility", "portable"],
"homepage": "https://symfony.com",
"license": "MIT",
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"require": {
"php": ">=7.0.8"
},
"autoload": {
"psr-4": { "Symfony\\Polyfill\\Php80\\": "" },
"files": [ "bootstrap.php" ],
"classmap": [ "Resources/stubs" ]
},
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "1.17-dev"
}
}
}

View file

@ -1,6 +1,11 @@
CHANGELOG
=========
5.1.0
-----
* added `Process::getStartTime()` to retrieve the start time of the process as float
5.0.0
-----

View file

@ -103,7 +103,7 @@ abstract class AbstractPipes implements PipesInterface
} elseif (!isset($this->inputBuffer[0])) {
if (!\is_string($input)) {
if (!is_scalar($input)) {
throw new InvalidArgumentException(sprintf('"%s" yielded a value of type "%s", but only scalars and stream resources are supported.', \get_class($this->input), \gettype($input)));
throw new InvalidArgumentException(sprintf('"%s" yielded a value of type "%s", but only scalars and stream resources are supported.', get_debug_type($this->input), get_debug_type($input)));
}
$input = (string) $input;
}

View file

@ -1208,6 +1208,18 @@ class Process implements \IteratorAggregate
}
}
/**
* @throws LogicException in case process is not started
*/
public function getStartTime(): float
{
if (!$this->isStarted()) {
throw new LogicException('Start time is only available after process start.');
}
return $this->starttime;
}
/**
* Returns whether TTY is supported on the current operating system.
*/
@ -1596,7 +1608,7 @@ class Process implements \IteratorAggregate
{
return preg_replace_callback('/"\$\{:([_a-zA-Z]++[_a-zA-Z0-9]*+)\}"/', function ($matches) use ($commandline, $env) {
if (!isset($env[$matches[1]]) || false === $env[$matches[1]]) {
throw new InvalidArgumentException(sprintf('Command line is missing a value for parameter "%s": '.$commandline, $matches[1]));
throw new InvalidArgumentException(sprintf('Command line is missing a value for parameter "%s": ', $matches[1]).$commandline);
}
return $this->escapeArgument($env[$matches[1]]);

View file

@ -16,7 +16,8 @@
}
],
"require": {
"php": "^7.2.5"
"php": ">=7.2.5",
"symfony/polyfill-php80": "^1.15"
},
"autoload": {
"psr-4": { "Symfony\\Component\\Process\\": "" },
@ -27,7 +28,7 @@
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "5.0-dev"
"dev-master": "5.1-dev"
}
}
}

View file

@ -1,5 +1,20 @@
# Changelog
### 1.5.1 (2020-05-26)
- fix merge ASCII transliterations from "avian2/unidecode" (python)
-> https://github.com/avian2/unidecode/
### 1.5.0 (2020-05-24)
- merge ASCII transliterations from "avian2/unidecode" (python)
-> https://github.com/avian2/unidecode/
### 1.4.11 (2020-05-23)
- "composer.json" -> remove "autoload-dev" stuff from "autoload"
- "voku/php-readme-helper" -> auto-generate the API documentation in the README
### 1.4.10 (2020-03-13)
- ASCII::to_ascii() -> fix extra symbol handling in the regex

View file

@ -1,3 +1,4 @@
[//]: # (AUTO-GENERATED BY "PHP README Helper": base file -> docs/base.md)
[![Build Status](https://travis-ci.org/voku/portable-ascii.svg?branch=master)](https://travis-ci.org/voku/portable-ascii)
[![Build status](https://ci.appveyor.com/api/projects/status/gnejjnk7qplr7f5t/branch/master?svg=true)](https://ci.appveyor.com/project/voku/portable-ascii/branch/master)
[![Coverage Status](https://coveralls.io/repos/voku/portable-ascii/badge.svg?branch=master&service=github)](https://coveralls.io/github/voku/portable-ascii?branch=master)
@ -30,16 +31,6 @@ The project based on ...
* [Requirements and Recommendations](#requirements-and-recommendations)
* [Usage](#usage)
* [Class methods](#class-methods)
* [charsArray](#charsarraybool-withextras--false-array)
* [charsArrayWithMultiLanguageValues](#charsarraywithmultilanguagevaluesbool-withextras--false-array)
* [charsArrayWithOneLanguage](#charsarraywithonelanguagestring-language--en-bool-withextras--false-array-)
* [charsArrayWithSingleLanguageValues](#charsarraywithsinglelanguagevaluesbool-withextras--false-array)
* [is_ascii](#is_asciistring-str--bool)
* [normalize_msword](#normalize_mswordstring-str--string)
* [normalize_whitespace](#normalize_whitespacestring-str-bool-keepnonbreakingspace--false-bool-keepbidiunicodecontrols--false--string)
* [to_ascii](#to_asciistring-str-string-language--en-bool-removeunsupported--true-string)
* [to_filename](#to_filenamestring-str-bool-use_transliterate--false-string-fallback_char----string)
* [to_transliterate](#to_transliteratestring-str-string-unknown---bool-strict--string)
* [Unit Test](#unit-test)
* [License and Copyright](#license-and-copyright)
@ -94,98 +85,307 @@ The API from the "ASCII"-Class is written as small static methods.
## Class methods
##### charsArray(bool $withExtras = false): array
<p id="voku-php-readme-class-methods"></p><table><tr><td><a href="#charsarraybool-replace_extra_symbols-array">charsArray</a>
</td><td><a href="#charsarraywithmultilanguagevaluesbool-replace_extra_symbols-array">charsArrayWithMultiLanguageValues</a>
</td><td><a href="#charsarraywithonelanguagestring-language-bool-replace_extra_symbols-bool-asorigreplacearray-array">charsArrayWithOneLanguage</a>
</td><td><a href="#charsarraywithsinglelanguagevaluesbool-replace_extra_symbols-bool-asorigreplacearray-array">charsArrayWithSingleLanguageValues</a>
</td></tr><tr><td><a href="#cleanstring-str-bool-normalize_whitespace-bool-keep_non_breaking_space-bool-normalize_msword-bool-remove_invisible_characters-string">clean</a>
</td><td><a href="#getalllanguages-string">getAllLanguages</a>
</td><td><a href="#is_asciistring-str-bool">is_ascii</a>
</td><td><a href="#normalize_mswordstring-str-string">normalize_msword</a>
</td></tr><tr><td><a href="#normalize_whitespacestring-str-bool-keepnonbreakingspace-bool-keepbidiunicodecontrols-string">normalize_whitespace</a>
</td><td><a href="#remove_invisible_charactersstring-str-bool-url_encoded-string-replacement-string">remove_invisible_characters</a>
</td><td><a href="#to_asciistring-str-string-language-bool-remove_unsupported_chars-bool-replace_extra_symbols-bool-use_transliterate-boolnull-replace_single_chars_only-string">to_ascii</a>
</td><td><a href="#to_filenamestring-str-bool-use_transliterate-string-fallback_char-string">to_filename</a>
</td></tr><tr><td><a href="#to_slugifystring-str-string-separator-string-language-string-replacements-bool-replace_extra_symbols-bool-use_str_to_lower-bool-use_transliterate-string">to_slugify</a>
</td><td><a href="#to_transliteratestring-str-stringnull-unknown-bool-strict-string">to_transliterate</a>
</td></tr></table>
#### charsArray(bool $replace_extra_symbols): array
<a href="#voku-php-readme-class-methods"></a>
Returns an replacement array for ASCII methods.
```php
EXAMPLE: <code>
$array = ASCII::charsArray();
var_dump($array['ru']['б']); // 'b'
```
</code>
##### charsArrayWithMultiLanguageValues(bool $withExtras = false): array
**Parameters:**
- `bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>`
**Return:**
- `- `array``
--------
#### charsArrayWithMultiLanguageValues(bool $replace_extra_symbols): array
<a href="#voku-php-readme-class-methods"></a>
Returns an replacement array for ASCII methods with a mix of multiple languages.
```php
EXAMPLE: <code>
$array = ASCII::charsArrayWithMultiLanguageValues();
var_dump($array['b']); // ['β', 'б', 'ဗ', 'ბ', 'ب']
```
</code>
##### charsArrayWithOneLanguage(string $language = 'en', bool $withExtras = false): array {
**Parameters:**
- `bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>`
**Return:**
- `- `array <p>An array of replacements.</p>``
--------
#### charsArrayWithOneLanguage(string $language, bool $replace_extra_symbols, bool $asOrigReplaceArray): array
<a href="#voku-php-readme-class-methods"></a>
Returns an replacement array for ASCII methods with one language.
For example, German will map 'ä' to 'ae', while other languages
will simply return e.g. 'a'.
```php
EXAMPLE: <code>
$array = ASCII::charsArrayWithOneLanguage('ru');
$tmpKey = \array_search('yo', $array['replace']);
echo $array['orig'][$tmpKey]; // 'ё'
```
</code>
##### charsArrayWithSingleLanguageValues(bool $withExtras = false): array
**Parameters:**
- `string $language [optional] <p>Language of the source string e.g.: en, de_at, or de-ch.
(default is 'en') | ASCII::*_LANGUAGE_CODE</p>`
- `bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>`
- `bool $asOrigReplaceArray [optional] <p>TRUE === return thr {orig: string[], replace: string[]}
array</p>`
**Return:**
- `- `array <p>An array of replacements.</p>``
--------
#### charsArrayWithSingleLanguageValues(bool $replace_extra_symbols, bool $asOrigReplaceArray): array
<a href="#voku-php-readme-class-methods"></a>
Returns an replacement array for ASCII methods with multiple languages.
```php
EXAMPLE: <code>
$array = ASCII::charsArrayWithSingleLanguageValues();
$tmpKey = \array_search('hnaik', $array['replace']);
echo $array['orig'][$tmpKey]; // '၌'
```
</code>
##### is_ascii(string $str) : bool
**Parameters:**
- `bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>`
- `bool $asOrigReplaceArray [optional] <p>TRUE === return thr {orig: string[], replace: string[]}
array</p>`
**Return:**
- `- `array <p>An array of replacements.</p>``
--------
#### clean(string $str, bool $normalize_whitespace, bool $keep_non_breaking_space, bool $normalize_msword, bool $remove_invisible_characters): string
<a href="#voku-php-readme-class-methods"></a>
Accepts a string and removes all non-UTF-8 characters from it + extras if needed.
**Parameters:**
- `string $str <p>The string to be sanitized.</p>`
- `bool $normalize_whitespace [optional] <p>Set to true, if you need to normalize the
whitespace.</p>`
- `bool $keep_non_breaking_space [optional] <p>Set to true, to keep non-breaking-spaces, in
combination with
$normalize_whitespace</p>`
- `bool $normalize_msword [optional] <p>Set to true, if you need to normalize MS Word chars
e.g.: "…"
=> "..."</p>`
- `bool $remove_invisible_characters [optional] <p>Set to false, if you not want to remove invisible
characters e.g.: "\0"</p>`
**Return:**
- `- `string <p>A clean UTF-8 string.</p>``
--------
#### getAllLanguages(): string[]
<a href="#voku-php-readme-class-methods"></a>
Get all languages from the constants "ASCII::.*LANGUAGE_CODE".
**Parameters:**
__nothing__
**Return:**
- `- `string[]``
--------
#### is_ascii(string $str): bool
<a href="#voku-php-readme-class-methods"></a>
Checks if a string is 7 bit ASCII.
```php
EXAMPLE: <code>
ASCII::is_ascii('白'); // false
```
</code>
##### normalize_msword(string $str) : string
**Parameters:**
- `string $str <p>The string to check.</p>`
Normalize some MS Word special characters.
**Return:**
- `- `bool <p>
<strong>true</strong> if it is ASCII<br>
<strong>false</strong> otherwise
</p>``
```php
--------
#### normalize_msword(string $str): string
<a href="#voku-php-readme-class-methods"></a>
Returns a string with smart quotes, ellipsis characters, and dashes from
Windows-1252 (commonly used in Word documents) replaced by their ASCII
equivalents.
EXAMPLE: <code>
ASCII::normalize_msword('„Abcdef…”'); // '"Abcdef..."'
```
</code>
##### normalize_whitespace(string $str, bool $keepNonBreakingSpace = false, bool $keepBidiUnicodeControls = false) : string
**Parameters:**
- `string $str <p>The string to be normalized.</p>`
**Return:**
- `- `string <p>A string with normalized characters for commonly used chars in Word documents.</p>``
--------
#### normalize_whitespace(string $str, bool $keepNonBreakingSpace, bool $keepBidiUnicodeControls): string
<a href="#voku-php-readme-class-methods"></a>
Normalize the whitespace.
```php
EXAMPLE: <code>
ASCII::normalize_whitespace("abc-\xc2\xa0-öäü-\xe2\x80\xaf-\xE2\x80\xAC", true); // "abc-\xc2\xa0-öäü- -"
```
</code>
##### to_ascii(string $str, string $language = 'en', bool $removeUnsupported = true): string
**Parameters:**
- `string $str <p>The string to be normalized.</p>`
- `bool $keepNonBreakingSpace [optional] <p>Set to true, to keep non-breaking-spaces.</p>`
- `bool $keepBidiUnicodeControls [optional] <p>Set to true, to keep non-printable (for the web)
bidirectional text chars.</p>`
Convert a string into language specific ASCII.
**Return:**
- `- `string <p>A string with normalized whitespace.</p>``
```php
--------
#### remove_invisible_characters(string $str, bool $url_encoded, string $replacement): string
<a href="#voku-php-readme-class-methods"></a>
Remove invisible characters from a string.
e.g.: This prevents sandwiching null characters between ascii characters, like Java\0script.
copy&past from https://github.com/bcit-ci/CodeIgniter/blob/develop/system/core/Common.php
**Parameters:**
- `string $str`
- `bool $url_encoded`
- `string $replacement`
**Return:**
- `- `string``
--------
#### to_ascii(string $str, string $language, bool $remove_unsupported_chars, bool $replace_extra_symbols, bool $use_transliterate, bool|null $replace_single_chars_only): string
<a href="#voku-php-readme-class-methods"></a>
Returns an ASCII version of the string. A set of non-ASCII characters are
replaced with their closest ASCII counterparts, and the rest are removed
by default. The language or locale of the source string can be supplied
for language-specific transliteration in any of the following formats:
en, en_GB, or en-GB. For example, passing "de" results in "äöü" mapping
to "aeoeue" rather than "aou" as in other languages.
EXAMPLE: <code>
ASCII::to_ascii('<27>Düsseldorf<72>', 'en'); // Dusseldorf
```
</code>
##### to_filename(string $str, bool $use_transliterate = false, string $fallback_char = '-'): string
**Parameters:**
- `string $str <p>The input string.</p>`
- `string $language [optional] <p>Language of the source string.
(default is 'en') | ASCII::*_LANGUAGE_CODE</p>`
- `bool $remove_unsupported_chars [optional] <p>Whether or not to remove the
unsupported characters.</p>`
- `bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound
".</p>`
- `bool $use_transliterate [optional] <p>Use ASCII::to_transliterate() for unknown chars.</p>`
- `bool|null $replace_single_chars_only [optional] <p>Single char replacement is better for the
performance, but some languages need to replace more then one char
at the same time. | NULL === auto-setting, depended on the
language</p>`
**Return:**
- `- `string <p>A string that contains only ASCII characters.</p>``
--------
#### to_filename(string $str, bool $use_transliterate, string $fallback_char): string
<a href="#voku-php-readme-class-methods"></a>
Convert given string to safe filename (and keep string case).
```php
EXAMPLE: <code>
ASCII::to_filename('שדגשדג.png', true)); // 'shdgshdg.png'
```
</code>
##### to_transliterate(string $str, string $unknown = '?', bool $strict) : string
**Parameters:**
- `string $str`
- `bool $use_transliterate <p>ASCII::to_transliterate() is used by default - unsafe characters are
simply replaced with hyphen otherwise.</p>`
- `string $fallback_char`
Convert a string into ASCII.
**Return:**
- `- `string <p>A string that contains only safe characters for a filename.</p>``
```php
--------
#### to_slugify(string $str, string $separator, string $language, string[] $replacements, bool $replace_extra_symbols, bool $use_str_to_lower, bool $use_transliterate): string
<a href="#voku-php-readme-class-methods"></a>
Converts the string into an URL slug. This includes replacing non-ASCII
characters with their closest ASCII equivalents, removing remaining
non-ASCII and non-alphanumeric characters, and replacing whitespace with
$separator. The separator defaults to a single dash, and the string
is also converted to lowercase. The language of the source string can
also be supplied for language-specific transliteration.
**Parameters:**
- `string $str`
- `string $separator [optional] <p>The string used to replace whitespace.</p>`
- `string $language [optional] <p>Language of the source string.
(default is 'en') | ASCII::*_LANGUAGE_CODE</p>`
- `array<string, string> $replacements [optional] <p>A map of replaceable strings.</p>`
- `bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with "
pound ".</p>`
- `bool $use_str_to_lower [optional] <p>Use "string to lower" for the input.</p>`
- `bool $use_transliterate [optional] <p>Use ASCII::to_transliterate() for unknown
chars.</p>`
**Return:**
- `- `string <p>A string that has been converted to an URL slug.</p>``
--------
#### to_transliterate(string $str, string|null $unknown, bool $strict): string
<a href="#voku-php-readme-class-methods"></a>
Returns an ASCII version of the string. A set of non-ASCII characters are
replaced with their closest ASCII counterparts, and the rest are removed
unless instructed otherwise.
EXAMPLE: <code>
ASCII::to_transliterate('déjà σσς iıii'); // 'deja sss iiii'
```
</code>
**Parameters:**
- `string $str <p>The input string.</p>`
- `null|string $unknown [optional] <p>Character use if character unknown. (default is '?')
But you can also use NULL to keep the unknown chars.</p>`
- `bool $strict [optional] <p>Use "transliterator_transliterate()" from PHP-Intl`
**Return:**
- `- `string <p>A String that contains only ASCII characters.</p>``
--------
## Unit Test
@ -216,7 +416,7 @@ For professional support please contact [me](https://about.me/voku).
- Thanks to [IntelliJ](https://www.jetbrains.com) as they make the best IDEs for PHP and they gave me an open source license for PhpStorm!
- Thanks to [Travis CI](https://travis-ci.com/) for being the most awesome, easiest continous integration tool out there!
- Thanks to [StyleCI](https://styleci.io/) for the simple but powerful code style check.
- Thanks to [PHPStan](https://github.com/phpstan/phpstan) && [Psalm](https://github.com/vimeo/psalm) for relly great Static analysis tools and for discover bugs in the code!
- Thanks to [PHPStan](https://github.com/phpstan/phpstan) && [Psalm](https://github.com/vimeo/psalm) for really great Static analysis tools and for discover bugs in the code!
### License and Copyright

View file

@ -0,0 +1,5 @@
{
"require-dev": {
"voku/php-readme-helper": "~0.4"
}
}

View file

@ -0,0 +1,124 @@
[![Build Status](https://travis-ci.org/voku/portable-ascii.svg?branch=master)](https://travis-ci.org/voku/portable-ascii)
[![Build status](https://ci.appveyor.com/api/projects/status/gnejjnk7qplr7f5t/branch/master?svg=true)](https://ci.appveyor.com/project/voku/portable-ascii/branch/master)
[![Coverage Status](https://coveralls.io/repos/voku/portable-ascii/badge.svg?branch=master&service=github)](https://coveralls.io/github/voku/portable-ascii?branch=master)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/997c9bb10d1c4791967bdf2e42013e8e)](https://www.codacy.com/app/voku/portable-ascii)
[![Latest Stable Version](https://poser.pugx.org/voku/portable-ascii/v/stable)](https://packagist.org/packages/voku/portable-ascii)
[![Total Downloads](https://poser.pugx.org/voku/portable-ascii/downloads)](https://packagist.org/packages/voku/portable-ascii)
[![License](https://poser.pugx.org/voku/portable-ascii/license)](https://packagist.org/packages/voku/portable-ascii)
[![Donate to this project using Paypal](https://img.shields.io/badge/paypal-donate-yellow.svg)](https://www.paypal.me/moelleken)
[![Donate to this project using Patreon](https://img.shields.io/badge/patreon-donate-yellow.svg)](https://www.patreon.com/voku)
# 🔡 Portable ASCII
## Description
It is written in PHP (PHP 7+) and can work without "mbstring", "iconv" or any other extra encoding php-extension on your server.
The benefit of Portable ASCII is that it is easy to use, easy to bundle.
The project based on ...
+ Portable UTF-8 work (https://github.com/voku/portable-utf8)
+ Daniel St. Jules's work (https://github.com/danielstjules/Stringy)
+ Johnny Broadway's work (https://github.com/jbroadway/urlify)
+ and many cherry-picks from "github"-gists and "Stack Overflow"-snippets ...
## Index
* [Alternative](#alternative)
* [Install](#install-portable-ascii-via-composer-require)
* [Why Portable ASCII?](#why-portable-ascii)
* [Requirements and Recommendations](#requirements-and-recommendations)
* [Usage](#usage)
* [Class methods](#class-methods)
* [Unit Test](#unit-test)
* [License and Copyright](#license-and-copyright)
## Alternative
If you like a more Object Oriented Way to edit strings, then you can take a look at [voku/Stringy](https://github.com/voku/Stringy), it's a fork of "danielstjules/Stringy" but it used the "Portable ASCII"-Class and some extra methods.
```php
// Portable ASCII
use voku\helper\ASCII;
ASCII::to_transliterate('déjà σσς iıii'); // 'deja sss iiii'
// voku/Stringy
use Stringy\Stringy as S;
$stringy = S::create('déjà σσς iıii');
$stringy->toTransliterate(); // 'deja sss iiii'
```
## Install "Portable ASCII" via "composer require"
```shell
composer require voku/portable-ascii
```
## Why Portable ASCII?[]()
I need ASCII char handling in different classes and before I added this functions into "Portable UTF-8",
but this repo is more modular and portable, because it has no dependencies.
## Requirements and Recommendations
* No extensions are required to run this library. Portable ASCII only needs PCRE library that is available by default since PHP 4.2.0 and cannot be disabled since PHP 5.3.0. "\u" modifier support in PCRE for ASCII handling is not a must.
* PHP 7.0 is the minimum requirement
## Usage
Example: ASCII::to_ascii()
```php
echo ASCII::to_ascii('<27>Düsseldorf<72>', 'de');
// will output
// Duesseldorf
echo ASCII::to_ascii('<27>Düsseldorf<72>', 'en');
// will output
// Dusseldorf
```
# Portable ASCII | API
The API from the "ASCII"-Class is written as small static methods.
## Class methods
%__functions_index__voku\helper\ASCII__%
%__functions_list__voku\helper\ASCII__%
## Unit Test
1) [Composer](https://getcomposer.org) is a prerequisite for running the tests.
```
composer install
```
2) The tests can be executed by running this command from the root directory:
```bash
./vendor/bin/phpunit
```
### Support
For support and donations please visit [Github](https://github.com/voku/portable-ascii/) | [Issues](https://github.com/voku/portable-ascii/issues) | [PayPal](https://paypal.me/moelleken) | [Patreon](https://www.patreon.com/voku).
For status updates and release announcements please visit [Releases](https://github.com/voku/portable-ascii/releases) | [Twitter](https://twitter.com/suckup_de) | [Patreon](https://www.patreon.com/voku/posts).
For professional support please contact [me](https://about.me/voku).
### Thanks
- Thanks to [GitHub](https://github.com) (Microsoft) for hosting the code and a good infrastructure including Issues-Managment, etc.
- Thanks to [IntelliJ](https://www.jetbrains.com) as they make the best IDEs for PHP and they gave me an open source license for PhpStorm!
- Thanks to [Travis CI](https://travis-ci.com/) for being the most awesome, easiest continous integration tool out there!
- Thanks to [StyleCI](https://styleci.io/) for the simple but powerful code style check.
- Thanks to [PHPStan](https://github.com/phpstan/phpstan) && [Psalm](https://github.com/vimeo/psalm) for really great Static analysis tools and for discover bugs in the code!
### License and Copyright
Released under the MIT License - see `LICENSE.txt` for details.

View file

@ -0,0 +1,26 @@
<?php
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/vendor/autoload.php';
$readmeGenerator = new \voku\PhpReadmeHelper\GenerateApi();
$readmeGenerator->templateMethod = <<<RAW
#### %name%
<a href="#voku-php-readme-class-methods"></a>
%description%
**Parameters:**
%params%
**Return:**
- `%return%`
--------
RAW;
$readmeText = ($readmeGenerator)->generate(
__DIR__ . '/../src/voku/helper/ASCII.php',
__DIR__ . '/docs/base.md'
);
file_put_contents(__DIR__ . '/../README.md', $readmeText);

View file

@ -26,8 +26,7 @@
},
"autoload": {
"psr-4": {
"voku\\": "src/voku/",
"voku\\tests\\": "tests/"
"voku\\": "src/voku/"
}
},
"autoload-dev": {

View file

@ -193,7 +193,9 @@ final class ASCII
/**
* Get all languages from the constants "ASCII::.*LANGUAGE_CODE".
*
* @return array<string,string>
* @return string[]
*
* @psalm-return array<string, string>
*
* @noinspection PhpDocMissingThrowsInspection
*/
@ -220,13 +222,20 @@ final class ASCII
/**
* Returns an replacement array for ASCII methods.
*
* EXAMPLE: <code>
* $array = ASCII::charsArray();
* var_dump($array['ru']['б']); // 'b'
* </code>
*
* @psalm-suppress InvalidNullableReturnType - we use the prepare* methods here, so we don't get NULL here
*
* @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>
*
* @psalm-pure
*
* @return array<string, array<string , string>>
* @return array
*
* @psalm-return array<string, array<string , string>>
*/
public static function charsArray(bool $replace_extra_symbols = false): array
{
@ -244,19 +253,24 @@ final class ASCII
/**
* Returns an replacement array for ASCII methods with a mix of multiple languages.
*
* EXAMPLE: <code>
* $array = ASCII::charsArrayWithMultiLanguageValues();
* var_dump($array['b']); // ['β', 'б', 'ဗ', 'ბ', 'ب']
* </code>
*
* @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>
*
* @psalm-pure
*
* @return array <p>An array of replacements.</p>
* @return array<string, array<int, string>>
* <p>An array of replacements.</p>
*/
public static function charsArrayWithMultiLanguageValues(bool $replace_extra_symbols = false): array
{
/**
* @psalm-suppress ImpureStaticVariable
*
* @var array<string,array>
* @var array<string, array>
*/
static $CHARS_ARRAY = [];
$cacheKey = '' . $replace_extra_symbols;
@ -296,6 +310,12 @@ final class ASCII
* For example, German will map 'ä' to 'ae', while other languages
* will simply return e.g. 'a'.
*
* EXAMPLE: <code>
* $array = ASCII::charsArrayWithOneLanguage('ru');
* $tmpKey = \array_search('yo', $array['replace']);
* echo $array['orig'][$tmpKey]; // 'ё'
* </code>
*
* @psalm-suppress InvalidNullableReturnType - we use the prepare* methods here, so we don't get NULL here
*
* @param string $language [optional] <p>Language of the source string e.g.: en, de_at, or de-ch.
@ -305,8 +325,9 @@ final class ASCII
* array</p>
* @psalm-pure
*
* @return array{orig: string[], replace: string[]}|array<string, string>
* <p>An array of replacements.</p>
* @return array <p>An array of replacements.</p>
*
* @psalm-return array{orig: string[], replace: string[]}|array<string, string>
*/
public static function charsArrayWithOneLanguage(
string $language = self::ENGLISH_LANGUAGE_CODE,
@ -319,7 +340,7 @@ final class ASCII
/**
* @psalm-suppress ImpureStaticVariable
*
* @var array<string,array>
* @var array<string, array>
*/
static $CHARS_ARRAY = [];
$cacheKey = '' . $replace_extra_symbols . '-' . $asOrigReplaceArray;
@ -389,13 +410,20 @@ final class ASCII
/**
* Returns an replacement array for ASCII methods with multiple languages.
*
* EXAMPLE: <code>
* $array = ASCII::charsArrayWithSingleLanguageValues();
* $tmpKey = \array_search('hnaik', $array['replace']);
* echo $array['orig'][$tmpKey]; // '၌'
* </code>
*
* @param bool $replace_extra_symbols [optional] <p>Add some more replacements e.g. "£" with " pound ".</p>
* @param bool $asOrigReplaceArray [optional] <p>TRUE === return thr {orig: string[], replace: string[]}
* array</p>
* @psalm-pure
*
* @return array{orig: string[], replace: string[]}|array<string, string>
* <p>An array of replacements.</p>
* @return array <p>An array of replacements.</p>
*
* @psalm-return array{orig: string[], replace: string[]}|array<string, string>
*/
public static function charsArrayWithSingleLanguageValues(
bool $replace_extra_symbols = false,
@ -505,6 +533,10 @@ final class ASCII
/**
* Checks if a string is 7 bit ASCII.
*
* EXAMPLE: <code>
* ASCII::is_ascii('白'); // false
* </code>
*
* @param string $str <p>The string to check.</p>
*
* @psalm-pure
@ -529,6 +561,10 @@ final class ASCII
* Windows-1252 (commonly used in Word documents) replaced by their ASCII
* equivalents.
*
* EXAMPLE: <code>
* ASCII::normalize_msword('„Abcdef…”'); // '"Abcdef..."'
* </code>
*
* @param string $str <p>The string to be normalized.</p>
*
* @psalm-pure
@ -542,7 +578,6 @@ final class ASCII
return '';
}
// init
/**
* @psalm-suppress ImpureStaticVariable
*
@ -572,6 +607,10 @@ final class ASCII
/**
* Normalize the whitespace.
*
* EXAMPLE: <code>
* ASCII::normalize_whitespace("abc-\xc2\xa0-öäü-\xe2\x80\xaf-\xE2\x80\xAC", true); // "abc-\xc2\xa0-öäü- -"
* </code>
*
* @param string $str <p>The string to be normalized.</p>
* @param bool $keepNonBreakingSpace [optional] <p>Set to true, to keep non-breaking-spaces.</p>
* @param bool $keepBidiUnicodeControls [optional] <p>Set to true, to keep non-printable (for the web)
@ -620,6 +659,7 @@ final class ASCII
static $BIDI_UNICODE_CONTROLS_CACHE = null;
if ($BIDI_UNICODE_CONTROLS_CACHE === null) {
/** @noinspection PsalmLocalImmutableInspection */
$BIDI_UNICODE_CONTROLS_CACHE = self::$BIDI_UNI_CODE_CONTROLS_TABLE;
}
@ -678,6 +718,10 @@ final class ASCII
* en, en_GB, or en-GB. For example, passing "de" results in "äöü" mapping
* to "aeoeue" rather than "aou" as in other languages.
*
* EXAMPLE: <code>
* ASCII::to_ascii('<27>Düsseldorf<72>', 'en'); // Dusseldorf
* </code>
*
* @param string $str <p>The input string.</p>
* @param string $language [optional] <p>Language of the source string.
* (default is 'en') | ASCII::*_LANGUAGE_CODE</p>
@ -739,12 +783,11 @@ final class ASCII
$EXTRA_SYMBOLS_CACHE[$extrasDataKeyTmp] = $extrasDataKeyTmp;
}
}
$EXTRA_SYMBOLS_CACHE = \implode('',$EXTRA_SYMBOLS_CACHE);
$EXTRA_SYMBOLS_CACHE = \implode('', $EXTRA_SYMBOLS_CACHE);
}
$charDone = [];
if (\preg_match_all('/' . self::$REGEX_ASCII . ($replace_extra_symbols ? '|[' . $EXTRA_SYMBOLS_CACHE . ']' : '') . '/u', $str, $matches)) {
if (!$replace_single_chars_only) {
foreach ($matches[0] as $keyTmp => $char) {
if (isset($matches[0][$keyTmp + 2])) {
@ -759,7 +802,7 @@ final class ASCII
&&
isset($REPLACE_HELPER_CACHE[$cacheKey][$threeChars])
&&
strpos($str, $threeChars) !== false
\strpos($str, $threeChars) !== false
) {
// DEBUG
//\var_dump($str, $threeChars, $REPLACE_HELPER_CACHE[$cacheKey][$threeChars]);
@ -785,7 +828,7 @@ final class ASCII
&&
isset($REPLACE_HELPER_CACHE[$cacheKey][$twoChars])
&&
strpos($str, $twoChars) !== false
\strpos($str, $twoChars) !== false
) {
// DEBUG
//\var_dump($str, $twoChars, $REPLACE_HELPER_CACHE[$cacheKey][$twoChars]);
@ -805,7 +848,7 @@ final class ASCII
&&
isset($REPLACE_HELPER_CACHE[$cacheKey][$char])
&&
strpos($str, $char) !== false
\strpos($str, $char) !== false
) {
// DEBUG
//\var_dump($str, $char, $REPLACE_HELPER_CACHE[$cacheKey][$char]);
@ -817,7 +860,6 @@ final class ASCII
//\var_dump($str, "\n");
}
}
}
/** @psalm-suppress PossiblyNullOperand - we use the prepare* methods here, so we don't get NULL here */
@ -841,6 +883,10 @@ final class ASCII
/**
* Convert given string to safe filename (and keep string case).
*
* EXAMPLE: <code>
* ASCII::to_filename('שדגשדג.png', true)); // 'shdgshdg.png'
* </code>
*
* @param string $str
* @param bool $use_transliterate <p>ASCII::to_transliterate() is used by default - unsafe characters are
* simply replaced with hyphen otherwise.</p>
@ -960,6 +1006,10 @@ final class ASCII
* replaced with their closest ASCII counterparts, and the rest are removed
* unless instructed otherwise.
*
* EXAMPLE: <code>
* ASCII::to_transliterate('déjà σσς iıii'); // 'deja sss iiii'
* </code>
*
* @param string $str <p>The input string.</p>
* @param string|null $unknown [optional] <p>Character use if character unknown. (default is '?')
* But you can also use NULL to keep the unknown chars.</p>
@ -1059,6 +1109,7 @@ final class ASCII
}
if (self::$ORD === null) {
/** @noinspection PsalmLocalImmutableInspection */
self::$ORD = self::getData('ascii_ord');
}
@ -1131,7 +1182,7 @@ final class ASCII
$bank = $ord >> 8;
if (!isset($UTF8_TO_TRANSLIT[$bank])) {
$UTF8_TO_TRANSLIT[$bank] = self::getDataIfExists(\sprintf('x%02x', $bank));
$UTF8_TO_TRANSLIT[$bank] = self::getDataIfExists(\sprintf('x%03x', $bank));
}
$new_char = $ord & 255;
@ -1276,6 +1327,7 @@ final class ASCII
self::prepareAsciiExtras();
/** @psalm-suppress PossiblyNullArgument - we use the prepare* methods here, so we don't get NULL here */
/** @noinspection PsalmLocalImmutableInspection */
self::$ASCII_MAPS_AND_EXTRAS = \array_merge_recursive(
self::$ASCII_MAPS ?? [],
self::$ASCII_EXTRAS ?? []
@ -1291,6 +1343,7 @@ final class ASCII
private static function prepareAsciiMaps()
{
if (self::$ASCII_MAPS === null) {
/** @noinspection PsalmLocalImmutableInspection */
self::$ASCII_MAPS = self::getData('ascii_by_languages');
}
}
@ -1303,6 +1356,7 @@ final class ASCII
private static function prepareAsciiExtras()
{
if (self::$ASCII_EXTRAS === null) {
/** @noinspection PsalmLocalImmutableInspection */
self::$ASCII_EXTRAS = self::getData('ascii_extras_by_languages');
}
}

View file

@ -674,8 +674,6 @@ return [
'å' => 'a',
'Ö' => 'O',
'ö' => 'o',
'Ø' => 'O',
'ø' => 'o',
],
// Turkmen
'tk' => [

View file

@ -1,20 +0,0 @@
<?php
return [
"\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f",
"\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f",
' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', "\x7f",
'EUR', '', ',', 'f', ',,', '...', '+', '++', '^', '%0', 'S', '<', 'OE', '', 'Z', '',
'', '\'', '\'', '"', '"', '*', '-', '--', '~', 'tm', 's', '>', 'oe', '', 'z', 'Y',
' ', '!', 'C/', 'PS', '$?', 'Y=', '|', 'SS', '"', '(c)', 'a', '<<', '!', '', '(r)', '-',
'deg', '+-', '2', '3', '\'', 'u', 'P', '*', ',', '1', 'o', '>>', '1/4', '1/2', '3/4', '?',
'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I',
'D', 'N', 'O', 'O', 'O', 'O', 'O', 'x', 'O', 'U', 'U', 'U', 'U', 'Y', 'Th', 'ss',
'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i',
'd', 'n', 'o', 'o', 'o', 'o', 'o', '/', 'o', 'u', 'u', 'u', 'u', 'y', 'th', 'y',
];

View file

@ -0,0 +1,278 @@
<?php
return [
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
' ',
'!',
'"',
'#',
'$',
'%',
'&',
'\'',
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
':',
';',
'<',
'=',
'>',
'?',
'@',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'[',
'\\',
']',
'^',
'_',
'`',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'{',
'|',
'}',
'~',
'',
'EUR', // "\xc2\x80" => "\xe2\x82\xac" => EURO SIGN
'',
',', // "\xc2\x82" => "\xe2\x80\x9a" => SINGLE LOW-9 QUOTATION MARK
'f', // "\xc2\x83" => "\xc6\x92" => LATIN SMALL LETTER F WITH HOOK
',,', // "\xc2\x84" => "\xe2\x80\x9e" => DOUBLE LOW-9 QUOTATION MARK
'...', // "\xc2\x85" => "\xe2\x80\xa6" => HORIZONTAL ELLIPSIS
'+', // "\xc2\x86" => "\xe2\x80\xa0" => DAGGER
'++', // "\xc2\x87" => "\xe2\x80\xa1" => DOUBLE DAGGER
'^', // "\xc2\x88" => "\xcb\x86" => MODIFIER LETTER CIRCUMFLEX ACCENT
'%0', // "\xc2\x89" => "\xe2\x80\xb0" => PER MILLE SIGN
'S', // "\xc2\x8a" => "\xc5\xa0" => LATIN CAPITAL LETTER S WITH CARON
'<', // "\xc2\x8b" => "\xe2\x80\xb9" => SINGLE LEFT-POINTING ANGLE QUOTE
'OE', // "\xc2\x8c" => "\xc5\x92" => LATIN CAPITAL LIGATURE OE
'',
'Z', // "\xc2\x8e" => "\xc5\xbd" => LATIN CAPITAL LETTER Z WITH CARON
'',
'',
'\'', // "\xc2\x91" => "\xe2\x80\x98" => LEFT SINGLE QUOTATION MARK
'\'', // "\xc2\x92" => "\xe2\x80\x99" => RIGHT SINGLE QUOTATION MARK
'"', // "\xc2\x93" => "\xe2\x80\x9c" => LEFT DOUBLE QUOTATION MARK
'"', // "\xc2\x94" => "\xe2\x80\x9d" => RIGHT DOUBLE QUOTATION MARK
'*', // "\xc2\x95" => "\xe2\x80\xa2" => BULLET
'-', // "\xc2\x96" => "\xe2\x80\x93" => EN DASH
'--', // "\xc2\x97" => "\xe2\x80\x94" => EM DASH
'~', // "\xc2\x98" => "\xcb\x9c" => SMALL TILDE
'tm',
's',
'>',
'oe',
'',
'z',
'Y',
' ',
'!',
'C/',
'PS',
'$?',
'Y=',
'|',
'SS',
'"',
'(c)',
'a',
'<<',
'!',
'',
'(r)',
'-',
'deg',
'+-',
'2',
'3',
'\'',
'u',
'P',
'*',
',',
'1',
'o',
'>>',
'1/4',
'1/2',
'3/4',
'?', // 0xbf
'A', // 0xc0
'A', // 0xc1
'A', // 0xc2
'A', // 0xc3
// Not "AE" - used in languages other than German
'A', // 0xc4
'A', // 0xc5
'AE', // 0xc6
'C', // 0xc7
'E', // 0xc8
'E', // 0xc9
'E', // 0xca
'E', // 0xcb
'I', // 0xcc
'I', // 0xcd
'I', // 0xce
'I', // 0xcf
'D', // 0xd0
'N', // 0xd1
'O', // 0xd2
'O', // 0xd3
'O', // 0xd4
'O', // 0xd5
// Not "OE" - used in languages other than German
'O', // 0xd6
'x', // 0xd7
'O', // 0xd8
'U', // 0xd9
'U', // 0xda
'U', // 0xdb
// Not "UE" - used in languages other than German
'U', // 0xdc
'Y', // 0xdd
'Th', // 0xde
'ss', // 0xdf
'a', // 0xe0
'a', // 0xe1
'a', // 0xe2
'a', // 0xe3
// Not "ae" - used in languages other than German
'a', // 0xe4
'a', // 0xe5
'ae', // 0xe6
'c', // 0xe7
'e', // 0xe8
'e', // 0xe9
'e', // 0xea
'e', // 0xeb
'i', // 0xec
'i', // 0xed
'i', // 0xee
'i', // 0xef
'd', // 0xf0
'n', // 0xf1
'o', // 0xf2
'o', // 0xf3
'o', // 0xf4
'o', // 0xf5
// Not "oe" - used in languages other than German
'o', // 0xf6
'/', // 0xf7
'o', // 0xf8
'u', // 0xf9
'u', // 0xfa
'u', // 0xfb
// Not "ue" - used in languages other than German
'u', // 0xfc
'y', // 0xfd
'th', // 0xfe
'y', // 0xff
];

View file

@ -0,0 +1,260 @@
<?php
return [
'A', // 0x00
'a', // 0x01
'A', // 0x02
'a', // 0x03
'A', // 0x04
'a', // 0x05
'C', // 0x06
'c', // 0x07
'C', // 0x08
'c', // 0x09
'C', // 0x0a
'c', // 0x0b
'C', // 0x0c
'c', // 0x0d
'D', // 0x0e
'd', // 0x0f
'D', // 0x10
'd', // 0x11
'E', // 0x12
'e', // 0x13
'E', // 0x14
'e', // 0x15
'E', // 0x16
'e', // 0x17
'E', // 0x18
'e', // 0x19
'E', // 0x1a
'e', // 0x1b
'G', // 0x1c
'g', // 0x1d
'G', // 0x1e
'g', // 0x1f
'G', // 0x20
'g', // 0x21
'G', // 0x22
'g', // 0x23
'H', // 0x24
'h', // 0x25
'H', // 0x26
'h', // 0x27
'I', // 0x28
'i', // 0x29
'I', // 0x2a
'i', // 0x2b
'I', // 0x2c
'i', // 0x2d
'I', // 0x2e
'i', // 0x2f
'I', // 0x30
'i', // 0x31
'IJ', // 0x32
'ij', // 0x33
'J', // 0x34
'j', // 0x35
'K', // 0x36
'k', // 0x37
'k', // 0x38
'L', // 0x39
'l', // 0x3a
'L', // 0x3b
'l', // 0x3c
'L', // 0x3d
'l', // 0x3e
'L', // 0x3f
'l', // 0x40
'L', // 0x41
'l', // 0x42
'N', // 0x43
'n', // 0x44
'N', // 0x45
'n', // 0x46
'N', // 0x47
'n', // 0x48
'\'n', // 0x49
'ng', // 0x4a
'NG', // 0x4b
'O', // 0x4c
'o', // 0x4d
'O', // 0x4e
'o', // 0x4f
'O', // 0x50
'o', // 0x51
'OE', // 0x52
'oe', // 0x53
'R', // 0x54
'r', // 0x55
'R', // 0x56
'r', // 0x57
'R', // 0x58
'r', // 0x59
'S', // 0x5a
's', // 0x5b
'S', // 0x5c
's', // 0x5d
'S', // 0x5e
's', // 0x5f
'S', // 0x60
's', // 0x61
'T', // 0x62
't', // 0x63
'T', // 0x64
't', // 0x65
'T', // 0x66
't', // 0x67
'U', // 0x68
'u', // 0x69
'U', // 0x6a
'u', // 0x6b
'U', // 0x6c
'u', // 0x6d
'U', // 0x6e
'u', // 0x6f
'U', // 0x70
'u', // 0x71
'U', // 0x72
'u', // 0x73
'W', // 0x74
'w', // 0x75
'Y', // 0x76
'y', // 0x77
'Y', // 0x78
'Z', // 0x79
'z', // 0x7a
'Z', // 0x7b
'z', // 0x7c
'Z', // 0x7d
'z', // 0x7e
's', // 0x7f
'b', // 0x80
'B', // 0x81
'B', // 0x82
'b', // 0x83
'6', // 0x84
'6', // 0x85
'O', // 0x86
'C', // 0x87
'c', // 0x88
'D', // 0x89
'D', // 0x8a
'D', // 0x8b
'd', // 0x8c
'd', // 0x8d
'3', // 0x8e
'@', // 0x8f
'E', // 0x90
'F', // 0x91
'f', // 0x92
'G', // 0x93
'G', // 0x94
'hv', // 0x95
'I', // 0x96
'I', // 0x97
'K', // 0x98
'k', // 0x99
'l', // 0x9a
'l', // 0x9b
'W', // 0x9c
'N', // 0x9d
'n', // 0x9e
'O', // 0x9f
'O', // 0xa0
'o', // 0xa1
'OI', // 0xa2
'oi', // 0xa3
'P', // 0xa4
'p', // 0xa5
'YR', // 0xa6
'2', // 0xa7
'2', // 0xa8
'SH', // 0xa9
'sh', // 0xaa
't', // 0xab
'T', // 0xac
't', // 0xad
'T', // 0xae
'U', // 0xaf
'u', // 0xb0
'Y', // 0xb1
'V', // 0xb2
'Y', // 0xb3
'y', // 0xb4
'Z', // 0xb5
'z', // 0xb6
'ZH', // 0xb7
'ZH', // 0xb8
'zh', // 0xb9
'zh', // 0xba
'2', // 0xbb
'5', // 0xbc
'5', // 0xbd
'ts', // 0xbe
'w', // 0xbf
'|', // 0xc0
'||', // 0xc1
'|=', // 0xc2
'!', // 0xc3
'DZ', // 0xc4
'Dz', // 0xc5
'dz', // 0xc6
'LJ', // 0xc7
'Lj', // 0xc8
'lj', // 0xc9
'NJ', // 0xca
'Nj', // 0xcb
'nj', // 0xcc
'A', // 0xcd
'a', // 0xce
'I', // 0xcf
'i', // 0xd0
'O', // 0xd1
'o', // 0xd2
'U', // 0xd3
'u', // 0xd4
'U', // 0xd5
'u', // 0xd6
'U', // 0xd7
'u', // 0xd8
'U', // 0xd9
'u', // 0xda
'U', // 0xdb
'u', // 0xdc
'@', // 0xdd
'A', // 0xde
'a', // 0xdf
'A', // 0xe0
'a', // 0xe1
'AE', // 0xe2
'ae', // 0xe3
'G', // 0xe4
'g', // 0xe5
'G', // 0xe6
'g', // 0xe7
'K', // 0xe8
'k', // 0xe9
'O', // 0xea
'o', // 0xeb
'O', // 0xec
'o', // 0xed
'ZH', // 0xee
'zh', // 0xef
'j', // 0xf0
'DZ', // 0xf1
'Dz', // 0xf2
'dz', // 0xf3
'G', // 0xf4
'g', // 0xf5
'HV', // 0xf6
'W', // 0xf7
'N', // 0xf8
'n', // 0xf9
'A', // 0xfa
'a', // 0xfb
'AE', // 0xfc
'ae', // 0xfd
'O', // 0xfe
'o', // 0xff
];

View file

@ -0,0 +1,259 @@
<?php
return [
'A', // 0x00
'a', // 0x01
'A', // 0x02
'a', // 0x03
'E', // 0x04
'e', // 0x05
'E', // 0x06
'e', // 0x07
'I', // 0x08
'i', // 0x09
'I', // 0x0a
'i', // 0x0b
'O', // 0x0c
'o', // 0x0d
'O', // 0x0e
'o', // 0x0f
'R', // 0x10
'r', // 0x11
'R', // 0x12
'r', // 0x13
'U', // 0x14
'u', // 0x15
'U', // 0x16
'u', // 0x17
'S', // 0x18
's', // 0x19
'T', // 0x1a
't', // 0x1b
'Y', // 0x1c
'y', // 0x1d
'H', // 0x1e
'h', // 0x1f
'N', // 0x20
'd', // 0x21
'OU', // 0x22
'ou', // 0x23
'Z', // 0x24
'z', // 0x25
'A', // 0x26
'a', // 0x27
'E', // 0x28
'e', // 0x29
'O', // 0x2a
'o', // 0x2b
'O', // 0x2c
'o', // 0x2d
'O', // 0x2e
'o', // 0x2f
'O', // 0x30
'o', // 0x31
'Y', // 0x32
'y', // 0x33
'l', // 0x34
'n', // 0x35
't', // 0x36
'j', // 0x37
'db', // 0x38
'qp', // 0x39
'A', // 0x3a
'C', // 0x3b
'c', // 0x3c
'L', // 0x3d
'T', // 0x3e
's', // 0x3f
'z', // 0x40
'[?]', // 0x41
'[?]', // 0x42
'B', // 0x43
'U', // 0x44
'^', // 0x45
'E', // 0x46
'e', // 0x47
'J', // 0x48
'j', // 0x49
'q', // 0x4a
'q', // 0x4b
'R', // 0x4c
'r', // 0x4d
'Y', // 0x4e
'y', // 0x4f
'a', // 0x50
'a', // 0x51
'a', // 0x52
'b', // 0x53
'o', // 0x54
'c', // 0x55
'd', // 0x56
'd', // 0x57
'e', // 0x58
'@', // 0x59
'@', // 0x5a
'e', // 0x5b
'e', // 0x5c
'e', // 0x5d
'e', // 0x5e
'j', // 0x5f
'g', // 0x60
'g', // 0x61
'g', // 0x62
'g', // 0x63
'u', // 0x64
'Y', // 0x65
'h', // 0x66
'h', // 0x67
'i', // 0x68
'i', // 0x69
'I', // 0x6a
'l', // 0x6b
'l', // 0x6c
'l', // 0x6d
'lZ', // 0x6e
'W', // 0x6f
'W', // 0x70
'm', // 0x71
'n', // 0x72
'n', // 0x73
'n', // 0x74
'o', // 0x75
'OE', // 0x76
'O', // 0x77
'F', // 0x78
'r', // 0x79
'r', // 0x7a
'r', // 0x7b
'r', // 0x7c
'r', // 0x7d
'r', // 0x7e
'r', // 0x7f
'R', // 0x80
'R', // 0x81
's', // 0x82
'S', // 0x83
'j', // 0x84
'S', // 0x85
'S', // 0x86
't', // 0x87
't', // 0x88
'u', // 0x89
'U', // 0x8a
'v', // 0x8b
'^', // 0x8c
'w', // 0x8d
'y', // 0x8e
'Y', // 0x8f
'z', // 0x90
'z', // 0x91
'Z', // 0x92
'Z', // 0x93
'?', // 0x94
'?', // 0x95
'?', // 0x96
'C', // 0x97
'@', // 0x98
'B', // 0x99
'E', // 0x9a
'G', // 0x9b
'H', // 0x9c
'j', // 0x9d
'k', // 0x9e
'L', // 0x9f
'q', // 0xa0
'?', // 0xa1
'?', // 0xa2
'dz', // 0xa3
'dZ', // 0xa4
'dz', // 0xa5
'ts', // 0xa6
'tS', // 0xa7
'tC', // 0xa8
'fN', // 0xa9
'ls', // 0xaa
'lz', // 0xab
'WW', // 0xac
']]', // 0xad
'h', // 0xae
'h', // 0xaf
'h', // 0xb0
'h', // 0xb1
'j', // 0xb2
'r', // 0xb3
'r', // 0xb4
'r', // 0xb5
'r', // 0xb6
'w', // 0xb7
'y', // 0xb8
'\'', // 0xb9
'"', // 0xba
'`', // 0xbb
'\'', // 0xbc
'`', // 0xbd
'`', // 0xbe
'\'', // 0xbf
'?', // 0xc0
'?', // 0xc1
'<', // 0xc2
'>', // 0xc3
'^', // 0xc4
'V', // 0xc5
'^', // 0xc6
'V', // 0xc7
'\'', // 0xc8
'-', // 0xc9
'/', // 0xca
'\\', // 0xcb
',', // 0xcc
'_', // 0xcd
'\\', // 0xce
'/', // 0xcf
':', // 0xd0
'.', // 0xd1
'`', // 0xd2
'\'', // 0xd3
'^', // 0xd4
'V', // 0xd5
'+', // 0xd6
'-', // 0xd7
'V', // 0xd8
'.', // 0xd9
'@', // 0xda
',', // 0xdb
'~', // 0xdc
'"', // 0xdd
'R', // 0xde
'X', // 0xdf
'G', // 0xe0
'l', // 0xe1
's', // 0xe2
'x', // 0xe3
'?', // 0xe4
'', // 0xe5
'', // 0xe6
'', // 0xe7
'', // 0xe8
'', // 0xe9
'', // 0xea
'', // 0xeb
'V', // 0xec
'=', // 0xed
'"', // 0xee
'[?]', // 0xef
'[?]', // 0xf0
'[?]', // 0xf1
'[?]', // 0xf2
'[?]', // 0xf3
'[?]', // 0xf4
'[?]', // 0xf5
'[?]', // 0xf6
'[?]', // 0xf7
'[?]', // 0xf8
'[?]', // 0xf9
'[?]', // 0xfa
'[?]', // 0xfb
'[?]', // 0xfc
'[?]', // 0xfd
'[?]', // 0xfe
];

View file

@ -0,0 +1,259 @@
<?php
return [
'', // 0x00
'', // 0x01
'', // 0x02
'', // 0x03
'', // 0x04
'', // 0x05
'', // 0x06
'', // 0x07
'', // 0x08
'', // 0x09
'', // 0x0a
'', // 0x0b
'', // 0x0c
'', // 0x0d
'', // 0x0e
'', // 0x0f
'', // 0x10
'', // 0x11
'', // 0x12
'', // 0x13
'', // 0x14
'', // 0x15
'', // 0x16
'', // 0x17
'', // 0x18
'', // 0x19
'', // 0x1a
'', // 0x1b
'', // 0x1c
'', // 0x1d
'', // 0x1e
'', // 0x1f
'', // 0x20
'', // 0x21
'', // 0x22
'', // 0x23
'', // 0x24
'', // 0x25
'', // 0x26
'', // 0x27
'', // 0x28
'', // 0x29
'', // 0x2a
'', // 0x2b
'', // 0x2c
'', // 0x2d
'', // 0x2e
'', // 0x2f
'', // 0x30
'', // 0x31
'', // 0x32
'', // 0x33
'', // 0x34
'', // 0x35
'', // 0x36
'', // 0x37
'', // 0x38
'', // 0x39
'', // 0x3a
'', // 0x3b
'', // 0x3c
'', // 0x3d
'', // 0x3e
'', // 0x3f
'', // 0x40
'', // 0x41
'', // 0x42
'', // 0x43
'', // 0x44
'', // 0x45
'', // 0x46
'', // 0x47
'', // 0x48
'', // 0x49
'', // 0x4a
'', // 0x4b
'', // 0x4c
'', // 0x4d
'', // 0x4e
'[?]', // 0x4f
'[?]', // 0x50
'[?]', // 0x51
'[?]', // 0x52
'[?]', // 0x53
'[?]', // 0x54
'[?]', // 0x55
'[?]', // 0x56
'[?]', // 0x57
'[?]', // 0x58
'[?]', // 0x59
'[?]', // 0x5a
'[?]', // 0x5b
'[?]', // 0x5c
'[?]', // 0x5d
'[?]', // 0x5e
'[?]', // 0x5f
'', // 0x60
'', // 0x61
'', // 0x62
'a', // 0x63
'e', // 0x64
'i', // 0x65
'o', // 0x66
'u', // 0x67
'c', // 0x68
'd', // 0x69
'h', // 0x6a
'm', // 0x6b
'r', // 0x6c
't', // 0x6d
'v', // 0x6e
'x', // 0x6f
'[?]', // 0x70
'[?]', // 0x71
'[?]', // 0x72
'[?]', // 0x73
'\'', // 0x74
',', // 0x75
'[?]', // 0x76
'[?]', // 0x77
'[?]', // 0x78
'[?]', // 0x79
'', // 0x7a
'[?]', // 0x7b
'[?]', // 0x7c
'[?]', // 0x7d
'?', // 0x7e
'[?]', // 0x7f
'[?]', // 0x80
'[?]', // 0x81
'[?]', // 0x82
'[?]', // 0x83
'', // 0x84
'', // 0x85
'A', // 0x86
';', // 0x87
'E', // 0x88
'E', // 0x89
'I', // 0x8a
'[?]', // 0x8b
'O', // 0x8c
'[?]', // 0x8d
'U', // 0x8e
'O', // 0x8f
'I', // 0x90
'A', // 0x91
'B', // 0x92
'G', // 0x93
'D', // 0x94
'E', // 0x95
'Z', // 0x96
'E', // 0x97
'Th', // 0x98
'I', // 0x99
'K', // 0x9a
'L', // 0x9b
'M', // 0x9c
'N', // 0x9d
'Ks', // 0x9e
'O', // 0x9f
'P', // 0xa0
'R', // 0xa1
'[?]', // 0xa2
'S', // 0xa3
'T', // 0xa4
'U', // 0xa5
'Ph', // 0xa6
'Kh', // 0xa7
'Ps', // 0xa8
'O', // 0xa9
'I', // 0xaa
'U', // 0xab
'a', // 0xac
'e', // 0xad
'e', // 0xae
'i', // 0xaf
'u', // 0xb0
'a', // 0xb1
'b', // 0xb2
'g', // 0xb3
'd', // 0xb4
'e', // 0xb5
'z', // 0xb6
'e', // 0xb7
'th', // 0xb8
'i', // 0xb9
'k', // 0xba
'l', // 0xbb
'm', // 0xbc
'n', // 0xbd
'x', // 0xbe
'o', // 0xbf
'p', // 0xc0
'r', // 0xc1
's', // 0xc2
's', // 0xc3
't', // 0xc4
'u', // 0xc5
'ph', // 0xc6
'kh', // 0xc7
'ps', // 0xc8
'o', // 0xc9
'i', // 0xca
'u', // 0xcb
'o', // 0xcc
'u', // 0xcd
'o', // 0xce
'[?]', // 0xcf
'b', // 0xd0
'th', // 0xd1
'U', // 0xd2
'U', // 0xd3
'U', // 0xd4
'ph', // 0xd5
'p', // 0xd6
'&', // 0xd7
'[?]', // 0xd8
'[?]', // 0xd9
'St', // 0xda
'st', // 0xdb
'W', // 0xdc
'w', // 0xdd
'Q', // 0xde
'q', // 0xdf
'Sp', // 0xe0
'sp', // 0xe1
'Sh', // 0xe2
'sh', // 0xe3
'F', // 0xe4
'f', // 0xe5
'Kh', // 0xe6
'kh', // 0xe7
'H', // 0xe8
'h', // 0xe9
'G', // 0xea
'g', // 0xeb
'CH', // 0xec
'ch', // 0xed
'Ti', // 0xee
'ti', // 0xef
'k', // 0xf0
'r', // 0xf1
'c', // 0xf2
'j', // 0xf3
'[?]', // 0xf4
'[?]', // 0xf5
'[?]', // 0xf6
'[?]', // 0xf7
'[?]', // 0xf8
'[?]', // 0xf9
'[?]', // 0xfa
'[?]', // 0xfb
'[?]', // 0xfc
'[?]', // 0xfd
'[?]', // 0xfe
];

View file

@ -0,0 +1,259 @@
<?php
return [
'Ie', // 0x00
'Io', // 0x01
'Dj', // 0x02
'Gj', // 0x03
'Ie', // 0x04
'Dz', // 0x05
'I', // 0x06
'Yi', // 0x07
'J', // 0x08
'Lj', // 0x09
'Nj', // 0x0a
'Tsh', // 0x0b
'Kj', // 0x0c
'I', // 0x0d
'U', // 0x0e
'Dzh', // 0x0f
'A', // 0x10
'B', // 0x11
'V', // 0x12
'G', // 0x13
'D', // 0x14
'E', // 0x15
'Zh', // 0x16
'Z', // 0x17
'I', // 0x18
'I', // 0x19
'K', // 0x1a
'L', // 0x1b
'M', // 0x1c
'N', // 0x1d
'O', // 0x1e
'P', // 0x1f
'R', // 0x20
'S', // 0x21
'T', // 0x22
'U', // 0x23
'F', // 0x24
'Kh', // 0x25
'Ts', // 0x26
'Ch', // 0x27
'Sh', // 0x28
'Shch', // 0x29
'\'', // 0x2a
'Y', // 0x2b
'\'', // 0x2c
'E', // 0x2d
'Iu', // 0x2e
'Ia', // 0x2f
'a', // 0x30
'b', // 0x31
'v', // 0x32
'g', // 0x33
'd', // 0x34
'e', // 0x35
'zh', // 0x36
'z', // 0x37
'i', // 0x38
'i', // 0x39
'k', // 0x3a
'l', // 0x3b
'm', // 0x3c
'n', // 0x3d
'o', // 0x3e
'p', // 0x3f
'r', // 0x40
's', // 0x41
't', // 0x42
'u', // 0x43
'f', // 0x44
'kh', // 0x45
'ts', // 0x46
'ch', // 0x47
'sh', // 0x48
'shch', // 0x49
'\'', // 0x4a
'y', // 0x4b
'\'', // 0x4c
'e', // 0x4d
'iu', // 0x4e
'ia', // 0x4f
'ie', // 0x50
'io', // 0x51
'dj', // 0x52
'gj', // 0x53
'ie', // 0x54
'dz', // 0x55
'i', // 0x56
'yi', // 0x57
'j', // 0x58
'lj', // 0x59
'nj', // 0x5a
'tsh', // 0x5b
'kj', // 0x5c
'i', // 0x5d
'u', // 0x5e
'dzh', // 0x5f
'O', // 0x60
'o', // 0x61
'E', // 0x62
'e', // 0x63
'Ie', // 0x64
'ie', // 0x65
'E', // 0x66
'e', // 0x67
'Ie', // 0x68
'ie', // 0x69
'O', // 0x6a
'o', // 0x6b
'Io', // 0x6c
'io', // 0x6d
'Ks', // 0x6e
'ks', // 0x6f
'Ps', // 0x70
'ps', // 0x71
'F', // 0x72
'f', // 0x73
'Y', // 0x74
'y', // 0x75
'Y', // 0x76
'y', // 0x77
'u', // 0x78
'u', // 0x79
'O', // 0x7a
'o', // 0x7b
'O', // 0x7c
'o', // 0x7d
'Ot', // 0x7e
'ot', // 0x7f
'Q', // 0x80
'q', // 0x81
'*1000*', // 0x82
'', // 0x83
'', // 0x84
'', // 0x85
'', // 0x86
'[?]', // 0x87
'*100.000*', // 0x88
'*1.000.000*', // 0x89
'[?]', // 0x8a
'[?]', // 0x8b
'"', // 0x8c
'"', // 0x8d
'R\'', // 0x8e
'r\'', // 0x8f
'G\'', // 0x90
'g\'', // 0x91
'G\'', // 0x92
'g\'', // 0x93
'G\'', // 0x94
'g\'', // 0x95
'Zh\'', // 0x96
'zh\'', // 0x97
'Z\'', // 0x98
'z\'', // 0x99
'K\'', // 0x9a
'k\'', // 0x9b
'K\'', // 0x9c
'k\'', // 0x9d
'K\'', // 0x9e
'k\'', // 0x9f
'K\'', // 0xa0
'k\'', // 0xa1
'N\'', // 0xa2
'n\'', // 0xa3
'Ng', // 0xa4
'ng', // 0xa5
'P\'', // 0xa6
'p\'', // 0xa7
'Kh', // 0xa8
'kh', // 0xa9
'S\'', // 0xaa
's\'', // 0xab
'T\'', // 0xac
't\'', // 0xad
'U', // 0xae
'u', // 0xaf
'U\'', // 0xb0
'u\'', // 0xb1
'Kh\'', // 0xb2
'kh\'', // 0xb3
'Tts', // 0xb4
'tts', // 0xb5
'Ch\'', // 0xb6
'ch\'', // 0xb7
'Ch\'', // 0xb8
'ch\'', // 0xb9
'H', // 0xba
'h', // 0xbb
'Ch', // 0xbc
'ch', // 0xbd
'Ch\'', // 0xbe
'ch\'', // 0xbf
'`', // 0xc0
'Zh', // 0xc1
'zh', // 0xc2
'K\'', // 0xc3
'k\'', // 0xc4
'[?]', // 0xc5
'[?]', // 0xc6
'N\'', // 0xc7
'n\'', // 0xc8
'[?]', // 0xc9
'[?]', // 0xca
'Ch', // 0xcb
'ch', // 0xcc
'[?]', // 0xcd
'[?]', // 0xce
'[?]', // 0xcf
'a', // 0xd0
'a', // 0xd1
'A', // 0xd2
'a', // 0xd3
'Ae', // 0xd4
'ae', // 0xd5
'Ie', // 0xd6
'ie', // 0xd7
'@', // 0xd8
'@', // 0xd9
'@', // 0xda
'@', // 0xdb
'Zh', // 0xdc
'zh', // 0xdd
'Z', // 0xde
'z', // 0xdf
'Dz', // 0xe0
'dz', // 0xe1
'I', // 0xe2
'i', // 0xe3
'I', // 0xe4
'i', // 0xe5
'O', // 0xe6
'o', // 0xe7
'O', // 0xe8
'o', // 0xe9
'O', // 0xea
'o', // 0xeb
'E', // 0xec
'e', // 0xed
'U', // 0xee
'u', // 0xef
'U', // 0xf0
'u', // 0xf1
'U', // 0xf2
'u', // 0xf3
'Ch', // 0xf4
'ch', // 0xf5
'[?]', // 0xf6
'[?]', // 0xf7
'Y', // 0xf8
'y', // 0xf9
'[?]', // 0xfa
'[?]', // 0xfb
'[?]', // 0xfc
'[?]', // 0xfd
'[?]', // 0xfe
];

View file

@ -0,0 +1,259 @@
<?php
return [
'[?]', // 0x00
'[?]', // 0x01
'[?]', // 0x02
'[?]', // 0x03
'[?]', // 0x04
'[?]', // 0x05
'[?]', // 0x06
'[?]', // 0x07
'[?]', // 0x08
'[?]', // 0x09
'[?]', // 0x0a
'[?]', // 0x0b
'[?]', // 0x0c
'[?]', // 0x0d
'[?]', // 0x0e
'[?]', // 0x0f
'[?]', // 0x10
'[?]', // 0x11
'[?]', // 0x12
'[?]', // 0x13
'[?]', // 0x14
'[?]', // 0x15
'[?]', // 0x16
'[?]', // 0x17
'[?]', // 0x18
'[?]', // 0x19
'[?]', // 0x1a
'[?]', // 0x1b
'[?]', // 0x1c
'[?]', // 0x1d
'[?]', // 0x1e
'[?]', // 0x1f
'[?]', // 0x20
'[?]', // 0x21
'[?]', // 0x22
'[?]', // 0x23
'[?]', // 0x24
'[?]', // 0x25
'[?]', // 0x26
'[?]', // 0x27
'[?]', // 0x28
'[?]', // 0x29
'[?]', // 0x2a
'[?]', // 0x2b
'[?]', // 0x2c
'[?]', // 0x2d
'[?]', // 0x2e
'[?]', // 0x2f
'[?]', // 0x30
'A', // 0x31
'B', // 0x32
'G', // 0x33
'D', // 0x34
'E', // 0x35
'Z', // 0x36
'E', // 0x37
'E', // 0x38
'T`', // 0x39
'Zh', // 0x3a
'I', // 0x3b
'L', // 0x3c
'Kh', // 0x3d
'Ts', // 0x3e
'K', // 0x3f
'H', // 0x40
'Dz', // 0x41
'Gh', // 0x42
'Ch', // 0x43
'M', // 0x44
'Y', // 0x45
'N', // 0x46
'Sh', // 0x47
'O', // 0x48
'Ch`', // 0x49
'P', // 0x4a
'J', // 0x4b
'Rh', // 0x4c
'S', // 0x4d
'V', // 0x4e
'T', // 0x4f
'R', // 0x50
'Ts`', // 0x51
'W', // 0x52
'P`', // 0x53
'K`', // 0x54
'O', // 0x55
'F', // 0x56
'[?]', // 0x57
'[?]', // 0x58
'<', // 0x59
'\'', // 0x5a
'/', // 0x5b
'!', // 0x5c
',', // 0x5d
'?', // 0x5e
'.', // 0x5f
'[?]', // 0x60
'a', // 0x61
'b', // 0x62
'g', // 0x63
'd', // 0x64
'e', // 0x65
'z', // 0x66
'e', // 0x67
'e', // 0x68
't`', // 0x69
'zh', // 0x6a
'i', // 0x6b
'l', // 0x6c
'kh', // 0x6d
'ts', // 0x6e
'k', // 0x6f
'h', // 0x70
'dz', // 0x71
'gh', // 0x72
'ch', // 0x73
'm', // 0x74
'y', // 0x75
'n', // 0x76
'sh', // 0x77
'o', // 0x78
'ch`', // 0x79
'p', // 0x7a
'j', // 0x7b
'rh', // 0x7c
's', // 0x7d
'v', // 0x7e
't', // 0x7f
'r', // 0x80
'ts`', // 0x81
'w', // 0x82
'p`', // 0x83
'k`', // 0x84
'o', // 0x85
'f', // 0x86
'ew', // 0x87
'[?]', // 0x88
':', // 0x89
'-', // 0x8a
'[?]', // 0x8b
'[?]', // 0x8c
'[?]', // 0x8d
'[?]', // 0x8e
'[?]', // 0x8f
'[?]', // 0x90
'', // 0x91
'', // 0x92
'', // 0x93
'', // 0x94
'', // 0x95
'', // 0x96
'', // 0x97
'', // 0x98
'', // 0x99
'', // 0x9a
'', // 0x9b
'', // 0x9c
'', // 0x9d
'', // 0x9e
'', // 0x9f
'', // 0xa0
'', // 0xa1
'', // 0xa2
'', // 0xa3
'', // 0xa4
'', // 0xa5
'', // 0xa6
'', // 0xa7
'', // 0xa8
'', // 0xa9
'', // 0xaa
'', // 0xab
'', // 0xac
'', // 0xad
'', // 0xae
'', // 0xaf
'@', // 0xb0
'e', // 0xb1
'a', // 0xb2
'o', // 0xb3
'i', // 0xb4
'e', // 0xb5
'e', // 0xb6
'a', // 0xb7
'a', // 0xb8
'o', // 0xb9
'o', // 0xba
'u', // 0xbb
'\'', // 0xbc
'', // 0xbd
'-', // 0xbe
'-', // 0xbf
'|', // 0xc0
'', // 0xc1
'', // 0xc2
':', // 0xc3
'', // 0xc4
'', // 0xc5
'n', // 0xc6
'o', // 0xc7
'[?]', // 0xc8
'[?]', // 0xc9
'[?]', // 0xca
'[?]', // 0xcb
'[?]', // 0xcc
'[?]', // 0xcd
'[?]', // 0xce
'[?]', // 0xcf
'A', // 0xd0
'b', // 0xd1
'g', // 0xd2
'd', // 0xd3
'h', // 0xd4
'v', // 0xd5
'z', // 0xd6
'KH', // 0xd7
't', // 0xd8
'y', // 0xd9
'k', // 0xda
'k', // 0xdb
'l', // 0xdc
'm', // 0xdd
'm', // 0xde
'n', // 0xdf
'n', // 0xe0
's', // 0xe1
'`', // 0xe2
'p', // 0xe3
'p', // 0xe4
'TS', // 0xe5
'TS', // 0xe6
'q', // 0xe7
'r', // 0xe8
'SH', // 0xe9
't', // 0xea
'[?]', // 0xeb
'[?]', // 0xec
'[?]', // 0xed
'[?]', // 0xee
'[?]', // 0xef
'V', // 0xf0
'OY', // 0xf1
'i', // 0xf2
'\'', // 0xf3
'"', // 0xf4
'v', // 0xf5
'n', // 0xf6
'q', // 0xf7
'[?]', // 0xf8
'[?]', // 0xf9
'[?]', // 0xfa
'[?]', // 0xfb
'[?]', // 0xfc
'[?]', // 0xfd
'[?]', // 0xfe
];

View file

@ -0,0 +1,260 @@
<?php
return [
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
',',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
';',
'[?]',
'[?]',
'[?]',
'?',
'[?]',
'',
'a',
'a',
'w\'',
'',
'y\'',
'',
'b',
'@',
't',
'th',
'j',
'H',
'kh',
'd',
'dh',
'r',
'z',
's',
'sh',
'S',
'D',
'T',
'Z',
'`',
'G',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'',
'f',
'q',
'k',
'l',
'm',
'n',
'h',
'w',
'~',
'y',
'an',
'un',
'in',
'a',
'u',
'i',
'W',
'',
'',
'\'',
'\'',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'[?]',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'%',
'.',
',',
'*',
'[?]',
'[?]',
'',
'\'',
'\'',
'\'',
'',
'\'',
'\'w',
'\'u',
'\'y',
'tt',
'tth',
'b',
't',
'T',
'p',
'th',
'bh',
'\'h',
'H',
'ny',
'dy',
'H',
'ch',
'cch',
'dd',
'D',
'D',
'Dt',
'dh',
'ddh',
'd',
'D',
'D',
'rr',
'R',
'R',
'R',
'R',
'R',
'R',
'j',
'R',
'S',
'S',
'S',
'S',
'S',
'T',
'GH',
'F',
'F',
'F',
'v',
'f',
'ph',
'Q',
'Q',
'kh',
'k',
'K',
'K',
'ng',
'K',
'g',
'G',
'N',
'G',
'G',
'G',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'N',
'N',
'h',
'Ch',
'hy',
'h',
'H',
'@',
'W',
'oe',
'oe',
'u',
'yu',
'yu',
'W',
'v',
'y',
'Y',
'Y',
'W',
'',
'',
'y',
'y\'',
'.',
'ae',
'',
'',
'',
'',
'',
'',
'',
'@',
'#',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'^',
'',
'',
'',
'',
'[?]',
'[?]',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'Sh',
'D',
'Gh',
'&',
'+m',
'h',
];

View file

@ -0,0 +1,259 @@
<?php
return [
'//', // 0x00
'/', // 0x01
',', // 0x02
'!', // 0x03
'!', // 0x04
'-', // 0x05
',', // 0x06
',', // 0x07
';', // 0x08
'?', // 0x09
'~', // 0x0a
'{', // 0x0b
'}', // 0x0c
'*', // 0x0d
'[?]', // 0x0e
'', // 0x0f
'\'', // 0x10
'', // 0x11
'b', // 0x12
'g', // 0x13
'g', // 0x14
'd', // 0x15
'd', // 0x16
'h', // 0x17
'w', // 0x18
'z', // 0x19
'H', // 0x1a
't', // 0x1b
't', // 0x1c
'y', // 0x1d
'yh', // 0x1e
'k', // 0x1f
'l', // 0x20
'm', // 0x21
'n', // 0x22
's', // 0x23
's', // 0x24
'`', // 0x25
'p', // 0x26
'p', // 0x27
'S', // 0x28
'q', // 0x29
'r', // 0x2a
'sh', // 0x2b
't', // 0x2c
'[?]', // 0x2d
'[?]', // 0x2e
'[?]', // 0x2f
'a', // 0x30
'a', // 0x31
'a', // 0x32
'A', // 0x33
'A', // 0x34
'A', // 0x35
'e', // 0x36
'e', // 0x37
'e', // 0x38
'E', // 0x39
'i', // 0x3a
'i', // 0x3b
'u', // 0x3c
'u', // 0x3d
'u', // 0x3e
'o', // 0x3f
'', // 0x40
'`', // 0x41
'\'', // 0x42
'', // 0x43
'', // 0x44
'X', // 0x45
'Q', // 0x46
'@', // 0x47
'@', // 0x48
'|', // 0x49
'+', // 0x4a
'[?]', // 0x4b
'[?]', // 0x4c
'[?]', // 0x4d
'[?]', // 0x4e
'[?]', // 0x4f
'[?]', // 0x50
'[?]', // 0x51
'[?]', // 0x52
'[?]', // 0x53
'[?]', // 0x54
'[?]', // 0x55
'[?]', // 0x56
'[?]', // 0x57
'[?]', // 0x58
'[?]', // 0x59
'[?]', // 0x5a
'[?]', // 0x5b
'[?]', // 0x5c
'[?]', // 0x5d
'[?]', // 0x5e
'[?]', // 0x5f
'[?]', // 0x60
'[?]', // 0x61
'[?]', // 0x62
'[?]', // 0x63
'[?]', // 0x64
'[?]', // 0x65
'[?]', // 0x66
'[?]', // 0x67
'[?]', // 0x68
'[?]', // 0x69
'[?]', // 0x6a
'[?]', // 0x6b
'[?]', // 0x6c
'[?]', // 0x6d
'[?]', // 0x6e
'[?]', // 0x6f
'[?]', // 0x70
'[?]', // 0x71
'[?]', // 0x72
'[?]', // 0x73
'[?]', // 0x74
'[?]', // 0x75
'[?]', // 0x76
'[?]', // 0x77
'[?]', // 0x78
'[?]', // 0x79
'[?]', // 0x7a
'[?]', // 0x7b
'[?]', // 0x7c
'[?]', // 0x7d
'[?]', // 0x7e
'[?]', // 0x7f
'h', // 0x80
'sh', // 0x81
'n', // 0x82
'r', // 0x83
'b', // 0x84
'L', // 0x85
'k', // 0x86
'\'', // 0x87
'v', // 0x88
'm', // 0x89
'f', // 0x8a
'dh', // 0x8b
'th', // 0x8c
'l', // 0x8d
'g', // 0x8e
'ny', // 0x8f
's', // 0x90
'd', // 0x91
'z', // 0x92
't', // 0x93
'y', // 0x94
'p', // 0x95
'j', // 0x96
'ch', // 0x97
'tt', // 0x98
'hh', // 0x99
'kh', // 0x9a
'th', // 0x9b
'z', // 0x9c
'sh', // 0x9d
's', // 0x9e
'd', // 0x9f
't', // 0xa0
'z', // 0xa1
'`', // 0xa2
'gh', // 0xa3
'q', // 0xa4
'w', // 0xa5
'a', // 0xa6
'aa', // 0xa7
'i', // 0xa8
'ee', // 0xa9
'u', // 0xaa
'oo', // 0xab
'e', // 0xac
'ey', // 0xad
'o', // 0xae
'oa', // 0xaf
'', // 0xb0
'[?]', // 0xb1
'[?]', // 0xb2
'[?]', // 0xb3
'[?]', // 0xb4
'[?]', // 0xb5
'[?]', // 0xb6
'[?]', // 0xb7
'[?]', // 0xb8
'[?]', // 0xb9
'[?]', // 0xba
'[?]', // 0xbb
'[?]', // 0xbc
'[?]', // 0xbd
'[?]', // 0xbe
'[?]', // 0xbf
'[?]', // 0xc0
'[?]', // 0xc1
'[?]', // 0xc2
'[?]', // 0xc3
'[?]', // 0xc4
'[?]', // 0xc5
'[?]', // 0xc6
'[?]', // 0xc7
'[?]', // 0xc8
'[?]', // 0xc9
'[?]', // 0xca
'[?]', // 0xcb
'[?]', // 0xcc
'[?]', // 0xcd
'[?]', // 0xce
'[?]', // 0xcf
'[?]', // 0xd0
'[?]', // 0xd1
'[?]', // 0xd2
'[?]', // 0xd3
'[?]', // 0xd4
'[?]', // 0xd5
'[?]', // 0xd6
'[?]', // 0xd7
'[?]', // 0xd8
'[?]', // 0xd9
'[?]', // 0xda
'[?]', // 0xdb
'[?]', // 0xdc
'[?]', // 0xdd
'[?]', // 0xde
'[?]', // 0xdf
'[?]', // 0xe0
'[?]', // 0xe1
'[?]', // 0xe2
'[?]', // 0xe3
'[?]', // 0xe4
'[?]', // 0xe5
'[?]', // 0xe6
'[?]', // 0xe7
'[?]', // 0xe8
'[?]', // 0xe9
'[?]', // 0xea
'[?]', // 0xeb
'[?]', // 0xec
'[?]', // 0xed
'[?]', // 0xee
'[?]', // 0xef
'[?]', // 0xf0
'[?]', // 0xf1
'[?]', // 0xf2
'[?]', // 0xf3
'[?]', // 0xf4
'[?]', // 0xf5
'[?]', // 0xf6
'[?]', // 0xf7
'[?]', // 0xf8
'[?]', // 0xf9
'[?]', // 0xfa
'[?]', // 0xfb
'[?]', // 0xfc
'[?]', // 0xfd
'[?]', // 0xfe
];

View file

@ -0,0 +1,259 @@
<?php
return [
'[?]', // 0x00
'N', // 0x01
'N', // 0x02
'H', // 0x03
'[?]', // 0x04
'a', // 0x05
'aa', // 0x06
'i', // 0x07
'ii', // 0x08
'u', // 0x09
'uu', // 0x0a
'R', // 0x0b
'L', // 0x0c
'eN', // 0x0d
'e', // 0x0e
'e', // 0x0f
'ai', // 0x10
'oN', // 0x11
'o', // 0x12
'o', // 0x13
'au', // 0x14
'k', // 0x15
'kh', // 0x16
'g', // 0x17
'gh', // 0x18
'ng', // 0x19
'c', // 0x1a
'ch', // 0x1b
'j', // 0x1c
'jh', // 0x1d
'ny', // 0x1e
'tt', // 0x1f
'tth', // 0x20
'dd', // 0x21
'ddh', // 0x22
'nn', // 0x23
't', // 0x24
'th', // 0x25
'd', // 0x26
'dh', // 0x27
'n', // 0x28
'nnn', // 0x29
'p', // 0x2a
'ph', // 0x2b
'b', // 0x2c
'bh', // 0x2d
'm', // 0x2e
'y', // 0x2f
'r', // 0x30
'rr', // 0x31
'l', // 0x32
'l', // 0x33
'lll', // 0x34
'v', // 0x35
'sh', // 0x36
'ss', // 0x37
's', // 0x38
'h', // 0x39
'[?]', // 0x3a
'[?]', // 0x3b
'\'', // 0x3c
'\'', // 0x3d
'aa', // 0x3e
'i', // 0x3f
'ii', // 0x40
'u', // 0x41
'uu', // 0x42
'R', // 0x43
'RR', // 0x44
'eN', // 0x45
'e', // 0x46
'e', // 0x47
'ai', // 0x48
'oN', // 0x49
'o', // 0x4a
'o', // 0x4b
'au', // 0x4c
'', // 0x4d
'[?]', // 0x4e
'[?]', // 0x4f
'AUM', // 0x50
'\'', // 0x51
'\'', // 0x52
'`', // 0x53
'\'', // 0x54
'[?]', // 0x55
'[?]', // 0x56
'[?]', // 0x57
'q', // 0x58
'khh', // 0x59
'ghh', // 0x5a
'z', // 0x5b
'dddh', // 0x5c
'rh', // 0x5d
'f', // 0x5e
'yy', // 0x5f
'RR', // 0x60
'LL', // 0x61
'L', // 0x62
'LL', // 0x63
' / ', // 0x64
' // ', // 0x65
'0', // 0x66
'1', // 0x67
'2', // 0x68
'3', // 0x69
'4', // 0x6a
'5', // 0x6b
'6', // 0x6c
'7', // 0x6d
'8', // 0x6e
'9', // 0x6f
'.', // 0x70
'[?]', // 0x71
'[?]', // 0x72
'[?]', // 0x73
'[?]', // 0x74
'[?]', // 0x75
'[?]', // 0x76
'[?]', // 0x77
'[?]', // 0x78
'[?]', // 0x79
'[?]', // 0x7a
'[?]', // 0x7b
'[?]', // 0x7c
'[?]', // 0x7d
'[?]', // 0x7e
'[?]', // 0x7f
'[?]', // 0x80
'N', // 0x81
'N', // 0x82
'H', // 0x83
'[?]', // 0x84
'a', // 0x85
'aa', // 0x86
'i', // 0x87
'ii', // 0x88
'u', // 0x89
'uu', // 0x8a
'R', // 0x8b
'RR', // 0x8c
'[?]', // 0x8d
'[?]', // 0x8e
'e', // 0x8f
'ai', // 0x90
'[?]', // 0x91
'[?]', // 0x92
'o', // 0x93
'au', // 0x94
'k', // 0x95
'kh', // 0x96
'g', // 0x97
'gh', // 0x98
'ng', // 0x99
'c', // 0x9a
'ch', // 0x9b
'j', // 0x9c
'jh', // 0x9d
'ny', // 0x9e
'tt', // 0x9f
'tth', // 0xa0
'dd', // 0xa1
'ddh', // 0xa2
'nn', // 0xa3
't', // 0xa4
'th', // 0xa5
'd', // 0xa6
'dh', // 0xa7
'n', // 0xa8
'[?]', // 0xa9
'p', // 0xaa
'ph', // 0xab
'b', // 0xac
'bh', // 0xad
'm', // 0xae
'y', // 0xaf
'r', // 0xb0
'[?]', // 0xb1
'l', // 0xb2
'[?]', // 0xb3
'[?]', // 0xb4
'[?]', // 0xb5
'sh', // 0xb6
'ss', // 0xb7
's', // 0xb8
'h', // 0xb9
'[?]', // 0xba
'[?]', // 0xbb
'\'', // 0xbc
'[?]', // 0xbd
'aa', // 0xbe
'i', // 0xbf
'ii', // 0xc0
'u', // 0xc1
'uu', // 0xc2
'R', // 0xc3
'RR', // 0xc4
'[?]', // 0xc5
'[?]', // 0xc6
'e', // 0xc7
'ai', // 0xc8
'[?]', // 0xc9
'[?]', // 0xca
'o', // 0xcb
'au', // 0xcc
'', // 0xcd
'[?]', // 0xce
'[?]', // 0xcf
'[?]', // 0xd0
'[?]', // 0xd1
'[?]', // 0xd2
'[?]', // 0xd3
'[?]', // 0xd4
'[?]', // 0xd5
'[?]', // 0xd6
'+', // 0xd7
'[?]', // 0xd8
'[?]', // 0xd9
'[?]', // 0xda
'[?]', // 0xdb
'rr', // 0xdc
'rh', // 0xdd
'[?]', // 0xde
'yy', // 0xdf
'RR', // 0xe0
'LL', // 0xe1
'L', // 0xe2
'LL', // 0xe3
'[?]', // 0xe4
'[?]', // 0xe5
'0', // 0xe6
'1', // 0xe7
'2', // 0xe8
'3', // 0xe9
'4', // 0xea
'5', // 0xeb
'6', // 0xec
'7', // 0xed
'8', // 0xee
'9', // 0xef
'r\'', // 0xf0
'r`', // 0xf1
'Rs', // 0xf2
'Rs', // 0xf3
'1/', // 0xf4
'2/', // 0xf5
'3/', // 0xf6
'4/', // 0xf7
' 1 - 1/', // 0xf8
'/16', // 0xf9
'', // 0xfa
'[?]', // 0xfb
'[?]', // 0xfc
'[?]', // 0xfd
'[?]', // 0xfe
];

View file

@ -0,0 +1,259 @@
<?php
return [
'[?]', // 0x00
'[?]', // 0x01
'N', // 0x02
'[?]', // 0x03
'[?]', // 0x04
'a', // 0x05
'aa', // 0x06
'i', // 0x07
'ii', // 0x08
'u', // 0x09
'uu', // 0x0a
'[?]', // 0x0b
'[?]', // 0x0c
'[?]', // 0x0d
'[?]', // 0x0e
'ee', // 0x0f
'ai', // 0x10
'[?]', // 0x11
'[?]', // 0x12
'oo', // 0x13
'au', // 0x14
'k', // 0x15
'kh', // 0x16
'g', // 0x17
'gh', // 0x18
'ng', // 0x19
'c', // 0x1a
'ch', // 0x1b
'j', // 0x1c
'jh', // 0x1d
'ny', // 0x1e
'tt', // 0x1f
'tth', // 0x20
'dd', // 0x21
'ddh', // 0x22
'nn', // 0x23
't', // 0x24
'th', // 0x25
'd', // 0x26
'dh', // 0x27
'n', // 0x28
'[?]', // 0x29
'p', // 0x2a
'ph', // 0x2b
'b', // 0x2c
'bb', // 0x2d
'm', // 0x2e
'y', // 0x2f
'r', // 0x30
'[?]', // 0x31
'l', // 0x32
'll', // 0x33
'[?]', // 0x34
'v', // 0x35
'sh', // 0x36
'[?]', // 0x37
's', // 0x38
'h', // 0x39
'[?]', // 0x3a
'[?]', // 0x3b
'\'', // 0x3c
'[?]', // 0x3d
'aa', // 0x3e
'i', // 0x3f
'ii', // 0x40
'u', // 0x41
'uu', // 0x42
'[?]', // 0x43
'[?]', // 0x44
'[?]', // 0x45
'[?]', // 0x46
'ee', // 0x47
'ai', // 0x48
'[?]', // 0x49
'[?]', // 0x4a
'oo', // 0x4b
'au', // 0x4c
'', // 0x4d
'[?]', // 0x4e
'[?]', // 0x4f
'[?]', // 0x50
'[?]', // 0x51
'[?]', // 0x52
'[?]', // 0x53
'[?]', // 0x54
'[?]', // 0x55
'[?]', // 0x56
'[?]', // 0x57
'[?]', // 0x58
'khh', // 0x59
'ghh', // 0x5a
'z', // 0x5b
'rr', // 0x5c
'[?]', // 0x5d
'f', // 0x5e
'[?]', // 0x5f
'[?]', // 0x60
'[?]', // 0x61
'[?]', // 0x62
'[?]', // 0x63
'[?]', // 0x64
'[?]', // 0x65
'0', // 0x66
'1', // 0x67
'2', // 0x68
'3', // 0x69
'4', // 0x6a
'5', // 0x6b
'6', // 0x6c
'7', // 0x6d
'8', // 0x6e
'9', // 0x6f
'N', // 0x70
'H', // 0x71
'', // 0x72
'', // 0x73
'G.E.O.', // 0x74
'[?]', // 0x75
'[?]', // 0x76
'[?]', // 0x77
'[?]', // 0x78
'[?]', // 0x79
'[?]', // 0x7a
'[?]', // 0x7b
'[?]', // 0x7c
'[?]', // 0x7d
'[?]', // 0x7e
'[?]', // 0x7f
'[?]', // 0x80
'N', // 0x81
'N', // 0x82
'H', // 0x83
'[?]', // 0x84
'a', // 0x85
'aa', // 0x86
'i', // 0x87
'ii', // 0x88
'u', // 0x89
'uu', // 0x8a
'R', // 0x8b
'[?]', // 0x8c
'eN', // 0x8d
'[?]', // 0x8e
'e', // 0x8f
'ai', // 0x90
'oN', // 0x91
'[?]', // 0x92
'o', // 0x93
'au', // 0x94
'k', // 0x95
'kh', // 0x96
'g', // 0x97
'gh', // 0x98
'ng', // 0x99
'c', // 0x9a
'ch', // 0x9b
'j', // 0x9c
'jh', // 0x9d
'ny', // 0x9e
'tt', // 0x9f
'tth', // 0xa0
'dd', // 0xa1
'ddh', // 0xa2
'nn', // 0xa3
't', // 0xa4
'th', // 0xa5
'd', // 0xa6
'dh', // 0xa7
'n', // 0xa8
'[?]', // 0xa9
'p', // 0xaa
'ph', // 0xab
'b', // 0xac
'bh', // 0xad
'm', // 0xae
'ya', // 0xaf
'r', // 0xb0
'[?]', // 0xb1
'l', // 0xb2
'll', // 0xb3
'[?]', // 0xb4
'v', // 0xb5
'sh', // 0xb6
'ss', // 0xb7
's', // 0xb8
'h', // 0xb9
'[?]', // 0xba
'[?]', // 0xbb
'\'', // 0xbc
'\'', // 0xbd
'aa', // 0xbe
'i', // 0xbf
'ii', // 0xc0
'u', // 0xc1
'uu', // 0xc2
'R', // 0xc3
'RR', // 0xc4
'eN', // 0xc5
'[?]', // 0xc6
'e', // 0xc7
'ai', // 0xc8
'oN', // 0xc9
'[?]', // 0xca
'o', // 0xcb
'au', // 0xcc
'', // 0xcd
'[?]', // 0xce
'[?]', // 0xcf
'AUM', // 0xd0
'[?]', // 0xd1
'[?]', // 0xd2
'[?]', // 0xd3
'[?]', // 0xd4
'[?]', // 0xd5
'[?]', // 0xd6
'[?]', // 0xd7
'[?]', // 0xd8
'[?]', // 0xd9
'[?]', // 0xda
'[?]', // 0xdb
'[?]', // 0xdc
'[?]', // 0xdd
'[?]', // 0xde
'[?]', // 0xdf
'RR', // 0xe0
'[?]', // 0xe1
'[?]', // 0xe2
'[?]', // 0xe3
'[?]', // 0xe4
'[?]', // 0xe5
'0', // 0xe6
'1', // 0xe7
'2', // 0xe8
'3', // 0xe9
'4', // 0xea
'5', // 0xeb
'6', // 0xec
'7', // 0xed
'8', // 0xee
'9', // 0xef
'[?]', // 0xf0
'[?]', // 0xf1
'[?]', // 0xf2
'[?]', // 0xf3
'[?]', // 0xf4
'[?]', // 0xf5
'[?]', // 0xf6
'[?]', // 0xf7
'[?]', // 0xf8
'[?]', // 0xf9
'[?]', // 0xfa
'[?]', // 0xfb
'[?]', // 0xfc
'[?]', // 0xfd
'[?]', // 0xfe
];

Some files were not shown because too many files have changed in this diff Show more