diff options
author | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-30 08:25:46 +0000 |
---|---|---|
committer | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-30 08:25:46 +0000 |
commit | 87b937bdfd017ed710d1b547ef42b2a0c7e92592 (patch) | |
tree | e94b3f175dfd8284d32619dfb546898c0eb53d92 /enc | |
parent | 22c0994bc8b34e4b8b80de3259363b0f27c24988 (diff) | |
download | ruby-87b937bdfd017ed710d1b547ef42b2a0c7e92592.tar.gz |
fix uppercasing for U+A64B, CYRILLIC SMALL LETTER MONOGRAPH UK
* enc/unicode.c: Add U+A64B to the special cases 03B9 and 03BC
at the end of onigenc_unicode_case_map (Bug #12990).
* enc/unicode/case-folding.rb: Add U+A64B to the special cases
03B9 and 03BC. Add a comment pointing to enc/unicode.c.
Change warnings to exceptions for unpredicted cases,
because this would have been more easily noticed
(the warning was not noticed when upgrading to Unicode 9.0.0).
* test/ruby/enc/test_case_comprehensive.rb: Remove temporary
exclusion of U+A64B from testing.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enc')
-rw-r--r-- | enc/unicode.c | 4 | ||||
-rwxr-xr-x | enc/unicode/case-folding.rb | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/enc/unicode.c b/enc/unicode.c index e72b2e64b2..cf77492781 100644 --- a/enc/unicode.c +++ b/enc/unicode.c @@ -777,8 +777,8 @@ onigenc_unicode_case_map(OnigCaseFoldType* flagP, code = folded->code[0]; } else if ((flags&(ONIGENC_CASE_UPCASE)) - && (code==0x03B9||code==0x03BC)) { /* GREEK SMALL LETTERs IOTA/MU */ - MODIFIED; + && (code==0x03B9||code==0x03BC||code==0xA64B)) { /* GREEK SMALL LETTERs IOTA/MU, */ + MODIFIED; /* CYRILLIC SMALL LETTER MONOGRAPH UK */ code = folded->code[1]; } } diff --git a/enc/unicode/case-folding.rb b/enc/unicode/case-folding.rb index ef97baf737..e94b582a02 100755 --- a/enc/unicode/case-folding.rb +++ b/enc/unicode/case-folding.rb @@ -296,17 +296,19 @@ class CaseMapping when item.upper then flags += '|U' when item.lower then flags += '|D' else - unless from=='03B9' or from=='03BC' - warn 'Unpredicted case 0; check data or adjust program (enc/unicode/case_folding.rb).' + unless from=='03B9' or from=='03BC' or from=='A64B' + # cf. code==0x03B9||code==0x03BC||code==0xA64B in enc/unicode.c, + # towards the end of function onigenc_unicode_case_map + raise "Unpredicted case 0 in enc/unicode/case_folding.rb. Please contact https://bugs.ruby-lang.org/." end end unless item.upper == item.title if item.code == item.title - warn 'Unpredicted case 1; check data or adjust program (enc/unicode/case_folding.rb).' + raise "Unpredicted case 1 in enc/unicode/case_folding.rb. Please contact https://bugs.ruby-lang.org/." elsif item.title==to[1] flags += '|ST' else - warn 'Unpredicted case 2; check data or adjust program (enc/unicode/case_folding.rb).' + raise "Unpredicted case 2 in enc/unicode/case_folding.rb. Please contact https://bugs.ruby-lang.org/." end end end |