aboutsummaryrefslogtreecommitdiffstats
path: root/enc/unicode/case-folding.rb
diff options
context:
space:
mode:
authorduerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-04-01 11:58:47 +0000
committerduerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-04-01 11:58:47 +0000
commit5e9d33ad49079877ee9461e0449150a28bf0902d (patch)
treecb2527135ad331227ce938f1f37eac8473f0916a /enc/unicode/case-folding.rb
parent69d6e315b565a1c6956b101503c39ff286e51fa5 (diff)
downloadruby-5e9d33ad49079877ee9461e0449150a28bf0902d.tar.gz
* enc/unicode/case-folding.rb, casefold.h: Data generation to implement
swapcase functionality for titlecase characters. Swapcase isn't defined by Unicode, because the purpose/usage of swapcase is unclear anyway. The implementation follows a proposal from Nobu, swaping the case of each component of a titlecase character individually. This means that the titlecase characters have to be decomposed. * enc/unicode.c: Code using the above data. * test/ruby/enc/test_case_mapping.rb: Tests for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enc/unicode/case-folding.rb')
-rwxr-xr-xenc/unicode/case-folding.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/enc/unicode/case-folding.rb b/enc/unicode/case-folding.rb
index 2df430185f..433ce74dfe 100755
--- a/enc/unicode/case-folding.rb
+++ b/enc/unicode/case-folding.rb
@@ -244,6 +244,15 @@ class CaseMapping
unless item.upper == item.title
if item.code == item.title
flags += '|IT'
+ swap = case item.code
+ when '01C5' then '0064 017D'
+ when '01C8' then '006C 004A'
+ when '01CB' then '006E 004A'
+ when '01F2' then '0064 005A'
+ else # Greek
+ to.split(' ').first + ' 0399'
+ end
+ specials << swap
else
flags += '|ST'
specials << item.title