Releases: PrinsFrank/standards
v3.8.0 Top Level Domain, Script detection for strings and a lot of fixes and improvements!
What's Changed
Introduction of Top Level Domains
- Add top level domains by @szepeviktor and @PrinsFrank in #171, #188, #187 and #206
There are 6 categories of Top Level Domains, and all of them have been introduced as seperate enums:
CountryCodeTLD::from('nl'); // CountryCodeTLD::nl
CountryCodeTLD::nl; // CountryCodeTLD::nl
CountryCodeTLD::from('nl')->value; // 'nl'
CountryCodeTLD::from('nl')->name; // 'nl'
CountryCodeTLD::from('nl')->isAssigned(); // true
CountryCodeTLD::from('nl')->getCountryAlpha2(); // CountryAlpha2::Netherlands
CountryCodeTLD::from('nl')->getCountryAlpha3(); // CountryAlpha3::Netherlands
CountryCodeTLD::from('nl')->getCountryNumeric(); // CountryNumeric::Netherlands
GenericRestrictedTLD::from('name'); // GenericRestrictedTLD::name
GenericRestrictedTLD::name; // GenericRestrictedTLD::name
GenericRestrictedTLD::from('name')->value; // 'name'
GenericRestrictedTLD::from('name')->name; // 'name'
GenericRestrictedTLD::from('name')->isAssigned(); // true
GenericTLD::from('aaa'); // GenericTLD::aaa
GenericTLD::aaa; // GenericTLD::aaa
GenericTLD::from('aaa')->value; // 'aaa'
GenericTLD::from('aaa')->name; // 'aaa'
GenericTLD::from('aaa')->isAssigned(); // true
InfrastructureTLD::from('arpa'); // InfrastructureTLD::arpa
InfrastructureTLD::arpa; // InfrastructureTLD::arpa
InfrastructureTLD::from('arpa')->value; // 'arpa'
InfrastructureTLD::from('arpa')->name; // 'arpa'
InfrastructureTLD::from('arpa')->isAssigned(); // true
SponsoredTLD::from('aero'); // SponsoredTLD::aero
SponsoredTLD::arpa; // SponsoredTLD::aero
SponsoredTLD::from('aero')->value; // 'aero'
SponsoredTLD::from('aero')->name; // 'aero'
SponsoredTLD::from('aero')->isAssigned(); // true
TestTLD::from('テスト'); // TestTLD::tesuto_katakana
TestTLD::tesuto_katakana; // TestTLD::tesuto_katakana
TestTLD::from('テスト')->value; // 'テスト'
TestTLD::from('テスト')->name; // 'tesuto_katakana'
TestTLD::from('テスト')->isAssigned() // false
Retrieving scripts for strings
- Add script detection to script alias by @PrinsFrank in #195 and #199 based on a brilliant idea of @szepeviktor in #186 (comment)
It is now possible to retrieve the script(s) for a string:
ScriptAlias::allForString('еюeuеюευ'); // [ScriptAlias::Cyrillic, ScriptAlias::Greek, ScriptAlias::Latin]
ScriptAlias::hasMultipleForString('еюeuеюευ'); // true
ScriptAlias::mostCommonInString('еюeuеюευ'); // ScriptAlias::Cyrillic
ScriptCode::allForString('еюeuеюευ'); // [ScriptCode::Cyrillic, ScriptCode::Greek, ScriptCode::Latin]
ScriptCode::hasMultipleForString('еюeuеюευ'); // true
ScriptCode::mostCommonInString('еюeuеюευ'); // ScriptCode::Cyrillic
ScriptNumber::allForString('еюeuеюευ'); // [ScriptNumber::Cyrillic, ScriptAlias::Greek, ScriptAlias::Latin]
ScriptNumber::hasMultipleForString('еюeuеюευ'); // true
ScriptNumber::mostCommonInString('еюeuеюευ'); // ScriptNumber::Cyrillic
LanguageExtensive has received some updates
Fixes and Improvements
- Update PHPStan version by @PrinsFrank in #131
- Fix documentation of exceptions by @PrinsFrank in #132
- Check PSR-4 mapping by @szepeviktor in #134
- Fix PSR4 issues in tests by @PrinsFrank in #138
- Merge pipelines to improve speed by @PrinsFrank in #137
- Enable PHPStan strict rules by @PrinsFrank in #133
- Fix coverage workflow by @PrinsFrank in #140
- Fix missing cron for language extensive spec update by @PrinsFrank in #144
- Add completed job to use for branch protection by @PrinsFrank in #146
- Configure github token for automated PR by @PrinsFrank in #147
- Fix PHPStan cache dir by @PrinsFrank in #148
- Check spec generation on PR by @PrinsFrank in #143
- Fix main/master cache by @PrinsFrank in #149
- Improve CI by @szepeviktor in #154
- Fix non-alphanumeric keys by @szepeviktor in #153
- Transliterate special characters in keys by @szepeviktor in #151
- Add typos CI job by @szepeviktor in #150
- Remove ignored non-ASCII from .typos.toml by @szepeviktor in #157
- Mark shared workflow by @szepeviktor in #156
- Check key in NameNormalizer by @szepeviktor in #136
- Fix typo in CI by @szepeviktor in #152
- Use ramsey/composer-install action by @szepeviktor in #155
- Don't treat PHPDoc as certain by @PrinsFrank in #161
- Fix language extensive spec by @PrinsFrank in #166
- Fixed errors in README.md by @shubhamchugh in #165
- Remove duplicate existence check in enum classes by @PrinsFrank in #168
- Add stale issue/PR workflow by @PrinsFrank in #169
- Upgrade peter-evans/create-pull-request action by @szepeviktor in #170
- Add links to badges in README by @szepeviktor in #172
- Use typed transliterator by @PrinsFrank in #160
- Use updated transliterator by @PrinsFrank in #173
- Remove single space alignment by @PrinsFrank in #176
- Add digits to NameNormalizer::normalize by @szepeviktor in #177
- Throw exception for empty key in NameNormalizer by @szepeviktor in #179
- Use new bugfixed version of transliteration package by @PrinsFrank in #180
- Replace all ASCII signs in NameNormalizer::normalize by @szepeviktor in #178
- Remove CSFixer step and instead regenerate formatted spec immediately by @PrinsFrank in #174
- Enable Dependabot by @szepeviktor in #181
- Bump actions/checkout from 3 to 4 by @dependabot in #184
- Bump actions/cache from 3 to 4 by @dependabot in #185
- Bump peter-evans/create-pull-request from 5 to 6 by @dependabot in #190
- Implement attributes for specs by @PrinsFrank in #191
- Add supported scripts for PHP regexes by @PrinsFrank in #192
- Improve English in CI comment by @szepeviktor in #193
- Fix Lao script name in NameNormalizer by @szepeviktor in #194
- Configure concurrency for CI workflow by @PrinsFrank in #196
- Ignore test coverage for unreachable code by @PrinsFrank in #197
- Optimize spec update in CI by @PrinsFrank in #198
- Danger is my middle name! by @szepeviktor in #183
- Bump codecov/codecov-action from 3 to 4 by @dependabot in #189
- Deduplicate enum cases properly when generating specification from source by @PrinsFrank in #201
- Fix duplicate language extensive names by @PrinsFrank in #203
- Append script name to enum case when script is non latin by @PrinsFrank in #200
- Do not fail phpstan caching by @szepeviktor in #208
- Enforce concat_space in CS by @szepeviktor in #207
New Contributors
- @shubhamchugh made their first contribution in #165
- @dependabot made their first contribution in #184
Full Changelog: v3.7.0...v...
v3.7.0 Sierra Leone has finished currency transition: Sierra_Leone_Old is now deprecated and not returned by currencyForCountry
What's Changed
- Sierra Leone has finished currency transition: Sierra_Leone_Old is now deprecated and not returned by currencyForCountry by @github-actions in #130
Other
- Move enum logic out of package by @PrinsFrank in #128
- Configure phpdoc annotation order by @PrinsFrank in #127
- Fix codeCoverageIgnore annotation for impossible scenarios by @PrinsFrank in #129
Full Changelog: v3.6.0...v3.7.0
v3.6.0 Allow configurable subtag separator for LanguageTags/Locales when parsing from string or casting to string
What's Changed
- Allow configurable subtag separator when parsing from string or casting to string by @PrinsFrank in #125
Full Changelog: v3.5.0...v3.6.0
v3.5.0 Added '__toString' method to LanguageTag
What's Changed
- Add Stringable/__toString() to LanguageTags (Locales) by @PrinsFrank in #124
Full Changelog: v3.4.0...v3.5.0
v3.4.0 Country/Language names in different languages, Number/Currency formatting based on country/language, National call prefixes
What's Changed
- Add national call prefixes by @PrinsFrank in #104
- Add methods for country names in language by @PrinsFrank in #116
- Add 'getNameInLanguage' methods for languages by @PrinsFrank in #117
- Mark Name enums deprecated by @PrinsFrank in #122
- Add currency formatting by @PrinsFrank in #120
- Add formatNumber methods to country and language standards by @PrinsFrank in #123
Full Changelog: v3.3.0...v3.4.0
v3.3.0 Relationship between country and language & Minor units for currencies
What's Changed
- Add minor units to currency by @PrinsFrank in #101
- Add relation between countries and languages by @PrinsFrank in #103
Full Changelog: v3.2.0...v3.3.0
v3.2.0 Add relationships between Countries and Currencies
What's Changed
- Add relationship between countries and currencies by @PrinsFrank in #100
Full Changelog: v3.1.0...v3.2.0
v3.1.0 Add TravelDocuments Alpha2/Alpha3 UserAssigned country codes in new specfication
v3.0.0
New features
RFC 5646 language tags added by @PrinsFrank in #69
Language tags have been added. It is possible to construct a language tag from seperate parts, but much more useful is the parsing of language tags from strings:
+ LanguageTag::from('yue-HK'); // new LanguageTag(LanguageAlpha3Extensive::Yue_Chinese, regionSubtag: CountryAlpha2::Hong_Kong)
+ LanguageTag::from('yue-HK')->regionSubtag; // CountryAlpha2::Hong_Kong
+ new LanguageTag(LanguageAlpha3Extensive::Yue_Chinese, regionSubtag: CountryAlpha2::Hong_Kong);
Relation added between countries and Country Calling Cod(es) by @PrinsFrank in #81
If you have a country, it is now possible to get it's country calling prefix and the other way round:
+ CountryAlpha2::from('US')->getCountryCallingCodes(); // [CountryCallingCode::Integrated_numbering_plan]
+ CountryCallingCode::from(358)->getCountriesAlpha2(); // [CountryAlpha2::Finland, CountryAlpha2::Aland_Islands]
Relation added between countries and international call prefix(es) by @PrinsFrank in #82
International call prefixes were already added, but the relation to specific countries was not there yet. In this release it is now possible to retrieve an international call prefix for a country and the other way round:
+ CountryAlpha2::from('NL')->getInternationalCallPrefix()->value; // '00'
+ InternationalCallPrefix::from('000')->getCountries(); // [CountryAlpha2::Kenya, CountryAlpha2::Singapore, CountryAlpha2::Tanzania, CountryAlpha2::Uganda]
Methods added to create language tags from languages by @PrinsFrank in #83
With the introduction of language tags, it is now also possible to create a language tag instance from a language directly:
$language = LanguageAlpha3Terminology::from('nld')
+ $languageTag = $language->toLanguageTag();
This method has been added to LanguageAlpha2, LanguageAlpha3Bibliographic, LanguageAlpha3Terminology and LanguageAlpha3Extensive.
"getFlagEmoji" method added to country standards by @PrinsFrank in #93
It is now possible to retrieve the country flag emoji from a country:
+ CountryAlpha3::from('NLD')->getFlagEmoji(); // '🇳🇱'
This might not be displayed correctly in these release notes if you're on windows, see https://prinsfrank.nl/2021/01/25/Non-existing-flag-emojis-on-windows to make these flag emojis visible for Windows users.
Breaking changes
(See UPGRADING.md)
Removal of LanguageAlpha3Common; merged into LanguageAlpha3Bibliographic and LanguageAlpha3Terminology by @PrinsFrank in #91
LanguageAlpha3Common contained all the cases that were present in both LanguageAlpha3Bibliographic and LanguageAlpha3Terminology. That resulted in complicated type hints. For the sake of simplicity these have now been merged. All the cases that were present in the LanguageAlpha3Common enum are now also present in the LanguageAlpha3Bibliographic and LanguageAlpha3Terminology enums, and the LanguageAlpha3Common class has been removed.
This change also results in the return types of the methods on language classes 'toLanguageAlpha3Terminology' changing from an intersection type with the common class to just an instance of LanguageAlpha3Terminology or null and the 'toLanguageAlpha3Bibliographic' changing from an intersection type with the common class to just an instance of LanguageAlpha3Bibliographic or null.
To process this change, simply remove all references to the following class:
- LanguageAlpha3Common
ScriptCode and ScriptNumber naming inverted
In the previous release 2.5.0, the naming for scriptCode and ScriptNumber were swapped. In this release the naming has been fixed. If you used any of these classes already, please swap them in your code as well:
- ScriptCode
+ ScriptName
- ScriptName
+ ScriptCode
Typo fixed in CountryCallingCode enum case by @szepeviktor in #65
A typo in the name of Global Mobile Satellite System has been fixed. If you were using the Global_Mobile_Satelite_System_shared_code
case of CountryCallingCode as a hardcoded value in your codebase, you schould change it: (Note the extra letter 'l')
- CountryCallingCode::Global_Mobile_Satelite_System_shared_code;
+ CountryCallingCode::Global_Mobile_Satellite_System_shared_code;
BackedEnum and UnitEnum are now marked internal @PrinsFrank in #92
These classes should not be used outside of this package, as the method signature might change between minor versions. As such, these classes are now marked internal. If you use the classes in your code you can continue to do so at your own risk, or you might want to remove their usages.
Other
- Do not distribute PNG images by @szepeviktor in #79
- Speed up PHPStan execution by @szepeviktor in #89
- Fix PHPStan usage by @szepeviktor in #88
- Synchronize PHPStan usage by @szepeviktor in #90
- Update documentation for languages by @PrinsFrank in #94
Full Changelog: v2.5.0...v3.0.0
v2.5.0 Extensive language tags from ISO639-3 and several fixes
What's Changed
- Rewrite source parsing to allow for more source formats by @PrinsFrank in #72
- Deprecate "unused" status code as multiple status codes are unused and it's not part of the spec by @PrinsFrank in #73
- Exclude "Reserved for local use" from being included in language names as it doesn't have a single code by @PrinsFrank in #75
- Fix incorrect column count in script mapping resulting in incorrect Scripts by @PrinsFrank in #76
- Add missing old "Bolivar Soberano" and "Leone" as due to a name collision it was missing from the spec by @PrinsFrank in #74
- Add extensive alpha3 languages from ISO639-3 by @PrinsFrank in #71
Full Changelog: v2.4.0...v2.5.0