Skip to content

Commit a81061d

Browse files
committed
Use symbolic constants in Japanese kana conversion code (not magic numbers)
Also correct misspelling of 'hiragana' as 'hirangana' at the same time.
1 parent ec60991 commit a81061d

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

ext/mbstring/libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ mbfl_filt_tl_jisx0201_jisx0208(int c, mbfl_convert_filter *filt)
9393
}
9494
} else if ((mode & MBFL_FILT_TL_HAN2ZEN_HIRAGANA) &&
9595
(mode & MBFL_FILT_TL_HAN2ZEN_GLUE)) {
96-
/* hankaku kana to zenkaku hirangana and glue voiced sound mark */
96+
/* hankaku kana to zenkaku hiragana and glue voiced sound mark */
9797
if (c >= 0xff61 && c <= 0xff9f) {
9898
if (filt->status) {
9999
n = (filt->cache - 0xff60) & 0x3f;
@@ -126,7 +126,7 @@ mbfl_filt_tl_jisx0201_jisx0208(int c, mbfl_convert_filter *filt)
126126
s = 0x3000 + hankana2zenkana_table[c - 0xff60];
127127
} else if ((mode & MBFL_FILT_TL_HAN2ZEN_HIRAGANA)
128128
&& c >= 0xff61 && c <= 0xff9f) {
129-
/* hankaku kana to zenkaku hirangana */
129+
/* hankaku kana to zenkaku hiragana */
130130
s = 0x3000 + hankana2zenhira_table[c - 0xff60];
131131
}
132132
}
@@ -159,16 +159,19 @@ mbfl_filt_tl_jisx0201_jisx0208(int c, mbfl_convert_filter *filt)
159159
}
160160
}
161161

162-
if (mode & 0xf0) { /* zenkaku to hankaku */
163-
if ((mode & 0x10) && c >= 0xff01 && c <= 0xff5d && c != 0xff02 && c != 0xff07 && c!= 0xff3c) { /* all except <"> <'> <\> <~> */
162+
if (mode & (MBFL_FILT_TL_ZEN2HAN_ALL | MBFL_FILT_TL_ZEN2HAN_ALPHA | MBFL_FILT_TL_ZEN2HAN_NUMERIC | MBFL_FILT_TL_ZEN2HAN_SPACE)) {
163+
/* Zenkaku to Hankaku */
164+
if ((mode & MBFL_FILT_TL_ZEN2HAN_ALL) && c >= 0xff01 && c <= 0xff5d && c != 0xff02 && c != 0xff07 && c!= 0xff3c) {
165+
/* all except <"> <'> <\> <~> */
164166
s = c - 0xfee0;
165-
} else if ((mode & 0x20) && ((c >= 0xff21 && c <= 0xff3a) || (c >= 0xff41 && c <= 0xff5a))) { /* alpha */
167+
} else if ((mode & MBFL_FILT_TL_ZEN2HAN_ALPHA) && ((c >= 0xff21 && c <= 0xff3a) || (c >= 0xff41 && c <= 0xff5a))) {
166168
s = c - 0xfee0;
167-
} else if ((mode & 0x40) && (c >= 0xff10 && c <= 0xff19)) { /* num */
169+
} else if ((mode & MBFL_FILT_TL_ZEN2HAN_NUMERIC) && (c >= 0xff10 && c <= 0xff19)) {
168170
s = c - 0xfee0;
169-
} else if ((mode & 0x80) && (c == 0x3000)) { /* spase */
171+
} else if ((mode & MBFL_FILT_TL_ZEN2HAN_SPACE) && (c == 0x3000)) {
170172
s = 0x20;
171-
} else if ((mode & 0x10) && (c == 0x2212)) { /* MINUS SIGN */
173+
} else if ((mode & MBFL_FILT_TL_ZEN2HAN_ALL) && (c == 0x2212)) {
174+
/* MINUS SIGN */
172175
s = 0x2d;
173176
}
174177
}
@@ -188,7 +191,7 @@ mbfl_filt_tl_jisx0201_jisx0208(int c, mbfl_convert_filter *filt)
188191
}
189192
} else if ((mode & MBFL_FILT_TL_ZEN2HAN_HIRAGANA) &&
190193
c >= 0x3041 && c <= 0x3093) {
191-
/* Zenkaku hirangana to hankaku kana */
194+
/* Zenkaku hiragana to hankaku kana */
192195
n = c - 0x3041;
193196
if (zenkana2hankana_table[n][1] != 0) {
194197
(filt->output_function)(0xff00 + zenkana2hankana_table[n][0], filt->data);
@@ -217,11 +220,11 @@ mbfl_filt_tl_jisx0201_jisx0208(int c, mbfl_convert_filter *filt)
217220
| MBFL_FILT_TL_ZEN2HAN_KANA2HIRA)) {
218221
if ((mode & MBFL_FILT_TL_ZEN2HAN_HIRA2KANA) &&
219222
((c >= 0x3041 && c <= 0x3093) || c == 0x309d || c == 0x309e)) {
220-
/* Zenkaku hirangana to Zenkaku katakana */
223+
/* Zenkaku hiragana to Zenkaku katakana */
221224
s = c + 0x60;
222225
} else if ((mode & MBFL_FILT_TL_ZEN2HAN_KANA2HIRA) &&
223226
((c >= 0x30a1 && c <= 0x30f3) || c == 0x30fd || c == 0x30fe)) {
224-
/* Zenkaku katakana to Zenkaku hirangana */
227+
/* Zenkaku katakana to Zenkaku hiragana */
225228
s = c - 0x60;
226229
}
227230
}
@@ -270,9 +273,9 @@ mbfl_filt_tl_jisx0201_jisx0208_flush(mbfl_convert_filter *filt)
270273
ret = 0;
271274
if (filt->status) {
272275
n = (filt->cache - 0xff60) & 0x3f;
273-
if (mode & 0x100) { /* hankaku kana to zenkaku katakana */
276+
if (mode & MBFL_FILT_TL_HAN2ZEN_KATAKANA) { /* hankaku kana to zenkaku katakana */
274277
ret = (*filt->output_function)(0x3000 + hankana2zenkana_table[n], filt->data);
275-
} else if (mode & 0x200) { /* hankaku kana to zenkaku hirangana */
278+
} else if (mode & MBFL_FILT_TL_HAN2ZEN_HIRAGANA) { /* hankaku kana to zenkaku hiragana */
276279
ret = (*filt->output_function)(0x3000 + hankana2zenhira_table[n], filt->data);
277280
}
278281
filt->status = 0;

0 commit comments

Comments
 (0)