U8 char_map[26]="22233344455566677778889999"; /* Format of word list entry: U8 ACD_WORD_CHAR U8 word[] with terminating zero I16 block; //definition offset in ::/System/AutoComplete/ACDefs.DATA */ U0 PhoneNumWords(U8 *num) { I64 ch; U8 *_num = StrNew(num), *dst = _num, *dict = acd.word_list, *st, *src; while (*num) { if ('0' <= *num <= '9') *dst++ = *num; num++; } *dst = 0; while (*dict++) { if (StrLen(dict) > 2) { dst = st = StrNew(dict); while (ch = ToUpper(*dst)) { if ('A' <= ch <= 'Z') *dst = char_map[ch - 'A']; else *dst = CH_SPACE; dst++; } *dst = 0; src = _num; while (*src) { if (!StrNCompare(st, src, StrLen(st))) { ch = *src; *src = 0; "%s", _num; *src = ch; "$GREEN$%s$FG$", dict; "%s\n", src + StrLen(st); } src++; } Free(st); } dict += StrLen(dict) + 3; } Free(_num); '\n'; } U0 PNWDemo() { U8 *st; while ((st = StrGet("Phone Num:")) && *st) { PhoneNumWords(st); Free(st); } Free(st); } PNWDemo;