diff options
author | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-28 05:54:47 +0000 |
---|---|---|
committer | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-03-28 05:54:47 +0000 |
commit | 2ace9ef5a3b9d5ff9f5eccf7bdd893dd2aee0b48 (patch) | |
tree | fb7caa30404a74e752ed5d48098d6d1a99e84a61 /enc | |
parent | d6129fd75f522d518765e2f7ee81bbfa71b2c11c (diff) | |
download | ruby-2ace9ef5a3b9d5ff9f5eccf7bdd893dd2aee0b48.tar.gz |
* enc/unicode.c: Refactoring in preparation for data reduction for
titlecase.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enc')
-rw-r--r-- | enc/unicode.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/enc/unicode.c b/enc/unicode.c index e51c2a1363..5c96448259 100644 --- a/enc/unicode.c +++ b/enc/unicode.c @@ -712,12 +712,15 @@ onigenc_unicode_case_map(OnigCaseFoldType* flagP, if (flags&OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_SPECIALS) { /* special */ OnigCodePoint *SpecialsStart = CaseMappingSpecials + OnigSpecialIndexDecode(folded->n); - if (OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE) { /* Titlecase available */ - if (flags&ONIGENC_CASE_TITLECASE) { /* titlecase needed */ - if (OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_IS_TITLECASE) /* alread titlecase */ - flags ^= ONIGENC_CASE_MODIFIED; + if ((OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE) /* titlecase available, */ + && (flags&ONIGENC_CASE_TITLECASE) /* AND titlecase needed, */ + && (OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_IS_TITLECASE)) { /* BUT alread titlecase */ + flags ^= ONIGENC_CASE_MODIFIED; + goto SpecialsCopy; + } + else if (OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE) { /* Titlecase available */ + if (flags&ONIGENC_CASE_TITLECASE) /* titlecase needed, but not yet titlecase */ goto SpecialsCopy; - } else /* Titlecase not needed */ SpecialsStart += SpecialsLengthExtract(*SpecialsStart); } |