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 | 2d20a27fb4ee8d3401627e538cb68019704d7bae (patch) | |
tree | fb7caa30404a74e752ed5d48098d6d1a99e84a61 /enc | |
parent | 890ce36b797fe3e91d039f5fafcba3681f342557 (diff) |
* 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); } |