зеркало из https://github.com/github/ruby.git
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
This commit is contained in:
Родитель
22c0994bc8
Коммит
87b937bdfd
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -146,8 +146,6 @@ TestComprehensiveCaseFold.data_files_available? and class TestComprehensiveCase
|
|||
attributes.prepend '_' unless attributes.empty?
|
||||
define_method "test_#{encoding}_#{test.method_name}#{attributes}" do
|
||||
@@codepoints.each do |code|
|
||||
next if code=="\uA64B" # temporarily exclude this character from testing,
|
||||
# see https://bugs.ruby-lang.org/issues/12990
|
||||
source = code.encode(encoding) * 5
|
||||
target = "#{test.first_data[code]}#{test.follow_data[code]*4}".encode(encoding)
|
||||
result = source.__send__(test.method_name, *test.attributes)
|
||||
|
|
Загрузка…
Ссылка в новой задаче