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:
duerst 2016-12-04 01:58:54 +00:00
Родитель 31fb4e3ec3
Коммит 8baa73be48
2 изменённых файлов: 5 добавлений и 18 удалений

Просмотреть файл

@ -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