summaryrefslogtreecommitdiff
path: root/enc/windows_1253.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-12-10 17:47:04 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-12-10 17:47:04 +0000
commit2873edeafb6f6df1fc99bb9b1167591b99dd378c ()
treedeb58ca3dc6d6cd71c1740e62aa7e47bea5ed37e /enc/windows_1253.c
parent42a677c895f82bcd611db2773fbe68b0558b142d (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_1253.c43
1 files changed, 22 insertions, 21 deletions
@@ -214,62 +214,63 @@ get_case_fold_codes_by_str(OnigCaseFoldType flag,
}
static int
-case_map (OnigCaseFoldType* flagP, const OnigUChar** pp,
- const OnigUChar* end, OnigUChar* to, OnigUChar* to_end,
- const struct OnigEncodingTypeST* enc)
{
OnigCodePoint code;
OnigUChar *to_start = to;
OnigCaseFoldType flags = *flagP;
- while (*pp<end && to<to_end) {
code = *(*pp)++;
- if (code==0xF2) {
- if (flags&ONIGENC_CASE_UPCASE) {
flags |= ONIGENC_CASE_MODIFIED;
code = 0xD3;
}
- else if (flags&ONIGENC_CASE_FOLD) {
flags |= ONIGENC_CASE_MODIFIED;
code = 0xF3;
}
}
- else if (code==0xB5) {
- if (flags&ONIGENC_CASE_UPCASE) {
flags |= ONIGENC_CASE_MODIFIED;
code = 0xCC;
}
- else if (flags&ONIGENC_CASE_FOLD) {
flags |= ONIGENC_CASE_MODIFIED;
code = 0xEC;
}
}
- else if (code==0xC0 || code==0xE0 || code==0xB6) ;
else if ((EncCP1253_CtypeTable[code] & BIT_CTYPE_UPPER)
- && (flags & (ONIGENC_CASE_DOWNCASE|ONIGENC_CASE_FOLD))) {
flags |= ONIGENC_CASE_MODIFIED;
code = ENC_CP1253_TO_LOWER_CASE(code);
}
else if ((EncCP1253_CtypeTable[code] & BIT_CTYPE_LOWER)
- && (flags&ONIGENC_CASE_UPCASE)) {
flags |= ONIGENC_CASE_MODIFIED;
- if (code==0xDC)
code = 0xA2;
- else if (code>=0xDD && code<=0xDF)
code -= 0x25;
- else if (code==0xFC)
code = 0xBC;
- else if (code==0xFD || code==0xFE)
code -= 0x3F;
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_1253, Windows_1253) = {
@@ -289,8 +290,8 @@ OnigEncodingDefine(windows_1253, Windows_1253) = {
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("CP1253", "Windows-1253")