diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-12-10 17:47:04 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-12-10 17:47:04 +0000 |
commit | 2873edeafb6f6df1fc99bb9b1167591b99dd378c () | |
tree | deb58ca3dc6d6cd71c1740e62aa7e47bea5ed37e /enc/windows_1254.c | |
parent | 42a677c895f82bcd611db2773fbe68b0558b142d (diff) |
Merge Onigmo 6.0.0
* https://.com/k-takata/Onigmo/blob/Onigmo-6.0.0/HISTORY * fix for ruby 2.4: https://.com/k-takata/Onigmo/pull/78 * suppress warning: https://.com/k-takata/Onigmo/pull/79 * include/ruby/oniguruma.h: include onigmo.h. * template/encdb.h.tmpl: ignore duplicated definition of EUC-CN in enc/euc_kr.c. It is defined in enc/gb2313.c with CRuby macro. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | enc/windows_1254.c | 47 |
1 files changed, 24 insertions, 23 deletions
@@ -212,9 +212,9 @@ apply_all_case_fold(OnigCaseFoldType flag, static int get_case_fold_codes_by_str(OnigCaseFoldType flag, - const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[], - OnigEncoding enc ARG_UNUSED) { return onigenc_get_case_fold_codes_by_str_with_map( numberof(CaseFoldMap), CaseFoldMap, 1, @@ -232,49 +232,50 @@ case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, OnigUChar *to_start = to; OnigCaseFoldType flags = *flagP; - while (*pp<end && to<to_end) { code = *(*pp)++; - if (code==SHARP_s) { - if (flags&ONIGENC_CASE_UPCASE) { flags |= ONIGENC_CASE_MODIFIED; *to++ = 'S'; - code = (flags&ONIGENC_CASE_TITLECASE) ? 's' : 'S'; } - else if (flags&ONIGENC_CASE_FOLD) { flags |= ONIGENC_CASE_MODIFIED; *to++ = 's'; code = 's'; } } else if ((EncCP1254_CtypeTable[code] & BIT_CTYPE_UPPER) - && (flags & (ONIGENC_CASE_DOWNCASE|ONIGENC_CASE_FOLD))) { flags |= ONIGENC_CASE_MODIFIED; - if (code=='I') - code = flags&ONIGENC_CASE_FOLD_TURKISH_AZERI ? DOTLESS_i : 'i'; else code = ENC_CP1254_TO_LOWER_CASE(code); } - else if (code==0x83 || code==0xAA || code==0xBA || code==0xB5) ; - else if ((EncCP1254_CtypeTable[code]&BIT_CTYPE_LOWER) - && (flags&ONIGENC_CASE_UPCASE)) { flags |= ONIGENC_CASE_MODIFIED; - if (code=='i') - code = flags&ONIGENC_CASE_FOLD_TURKISH_AZERI ? I_WITH_DOT_ABOVE : 'I'; - else if (code==DOTLESS_i) code = 'I'; - else if (code==0x9A || code==0x9C || code==0x9E) code -= 0x10; - else if (code==0xFF) code -= 0x60; else code -= 0x20; } *to++ = code; - if (flags&ONIGENC_CASE_TITLECASE) /* switch from titlecase to lowercase for capitalize */ - flags ^= (ONIGENC_CASE_UPCASE|ONIGENC_CASE_DOWNCASE|ONIGENC_CASE_TITLECASE); } *flagP = flags; - return (int)(to-to_start); } OnigEncodingDefine(windows_1254, Windows_1254) = { @@ -294,8 +295,8 @@ OnigEncodingDefine(windows_1254, Windows_1254) = { onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, 0, ONIGENC_FLAG_NONE, - case_map, }; ENC_ALIAS("CP1254", "Windows-1254") |