ZealOS/Demo/PhoneNumWords.HC
2020-02-15 14:01:48 -06:00

63 lines
1,000 B
HolyC
Executable file

U8 char_map[26]="22233344455566677778889999";
/*
Fmt of word lst entry:
U8 ACD_WORD_CHAR
U8 word[] with terminating zero
I16 block; //definition offset in ::/Adam/AutoComplete/ACDefs.DATA
*/
U0 PhoneNumWords(U8 *num)
{
I64 ch;
U8 *_num=StrNew(num),*dst=_num,
*dict=acd.word_lst,*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 (!StrNCmp(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=GetStr("Phone Num:")) && *st) {
PhoneNumWords(st);
Free(st);
}
Free(st);
}
PNWDemo;