зеркало из https://github.com/github/ruby.git
remove special processing for U+03B9/U+03BC/U+A64B
* enc/unicode.c: Remove special processing for U+03B9/U+03BC/U+A64B (GREEK SMALL LETTERs IOTA/MU, CYRILLIC SMALL LETTER MONOGRAPH UK) from onigenc_unicode_case_map and simplify code. * enc/unicode/case-folding.rb: Remove check for U+03B9/U+03BC/U+A64B. This and the previous few related commits make sure that we won't hit the equivalent of bug #12990 anymore for future updates of Unicode versions. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
31fb4e3ec3
Коммит
8baa73be48
|
@ -768,19 +768,10 @@ onigenc_unicode_case_map(OnigCaseFoldType* flagP,
|
|||
}
|
||||
}
|
||||
}
|
||||
else if ((folded = onigenc_unicode_unfold1_lookup(code)) != 0) { /* data about character found in CaseUnfold_11_Table */
|
||||
if (flags&OnigCaseFoldFlags(folded->n)) { /* needs and data availability match */
|
||||
MODIFIED;
|
||||
if (flags&OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE)
|
||||
code = folded->code[1];
|
||||
else
|
||||
code = folded->code[0];
|
||||
}
|
||||
else if ((flags&(ONIGENC_CASE_UPCASE))
|
||||
&& (code==0x03B9||code==0x03BC||code==0xA64B)) { /* GREEK SMALL LETTERs IOTA/MU, */
|
||||
MODIFIED; /* CYRILLIC SMALL LETTER MONOGRAPH UK */
|
||||
code = folded->code[1];
|
||||
}
|
||||
else if ((folded = onigenc_unicode_unfold1_lookup(code)) != 0 /* data about character found in CaseUnfold_11_Table */
|
||||
&& flags&OnigCaseFoldFlags(folded->n)) { /* needs and data availability match */
|
||||
MODIFIED;
|
||||
code = folded->code[(flags&OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE) ? 1 : 0];
|
||||
}
|
||||
}
|
||||
to += ONIGENC_CODE_TO_MBC(enc, code, to);
|
||||
|
|
|
@ -305,11 +305,7 @@ class CaseMapping
|
|||
when item.upper then flags += '|U'
|
||||
when item.lower then flags += '|D'
|
||||
else
|
||||
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
|
||||
raise "Unpredicted case 0 in enc/unicode/case_folding.rb. Please contact https://bugs.ruby-lang.org/."
|
||||
end
|
||||
unless item.upper == item.title
|
||||
if item.code == item.title
|
||||
|
|
Загрузка…
Ссылка в новой задаче