|
|
|
|
|
|
|
|
for (n_digits = 0; iswdigit(word[n_digits]); n_digits++) // count consecutive digits |
|
|
for (n_digits = 0; iswdigit(word[n_digits]); n_digits++) // count consecutive digits |
|
|
; |
|
|
; |
|
|
|
|
|
|
|
|
if (n_digits > 4) { |
|
|
|
|
|
|
|
|
if (n_digits > 4 && n_digits <= 32) { |
|
|
// word is entirely digits, insert commas and break into 3 digit "words" |
|
|
// word is entirely digits, insert commas and break into 3 digit "words" |
|
|
number_buf[0] = ' '; |
|
|
number_buf[0] = ' '; |
|
|
number_buf[1] = ' '; |
|
|
number_buf[1] = ' '; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*pn++ = c; |
|
|
*pn++ = c; |
|
|
nx--; |
|
|
nx--; |
|
|
if ((nx > 0) && (tr->langopts.break_numbers & (1 << nx))) { |
|
|
|
|
|
|
|
|
if ((nx > 0) && (tr->langopts.break_numbers & (1U << nx))) { |
|
|
memcpy(&num_wtab[nw++], &words[ix], sizeof(WORD_TAB)); // copy the 'words' entry for each word of numbers |
|
|
memcpy(&num_wtab[nw++], &words[ix], sizeof(WORD_TAB)); // copy the 'words' entry for each word of numbers |
|
|
|
|
|
|
|
|
if (tr->langopts.thousands_sep != ' ') |
|
|
if (tr->langopts.thousands_sep != ' ') |
|
|
|
|
|
|
|
|
for (pw = &number_buf[3]; pw < pn;) { |
|
|
for (pw = &number_buf[3]; pw < pn;) { |
|
|
// keep wflags for each part, for FLAG_HYPHEN_AFTER |
|
|
// keep wflags for each part, for FLAG_HYPHEN_AFTER |
|
|
dict_flags = TranslateWord2(tr, pw, &num_wtab[nw++], words[ix].pre_pause); |
|
|
dict_flags = TranslateWord2(tr, pw, &num_wtab[nw++], words[ix].pre_pause); |
|
|
while (*pw && *pw++ != ' ') |
|
|
|
|
|
|
|
|
while (*pw++ != ' ') |
|
|
; |
|
|
; |
|
|
words[ix].pre_pause = 0; |
|
|
words[ix].pre_pause = 0; |
|
|
} |
|
|
} |