/* Do not remove the headers from this file! see /USAGE for more info. */
#include <daemons.h>
inherit CMD;
#define MIN_LEN 3
//:COMMAND
//Returns information on which mudlib functions contain the
//keyword passed, including a short description.
mixed apropos(string s)
{
mapping filer=([]);
mapping topics;
string output="";
string *st;
string pwd;
topics=HELP_D->query_topics();
if(!topics)
{
error("Apropos whines about help_d not giving any info out.\n");
return;
}
foreach (string key,string *files in topics)
{
if (strsrch(key,s)!=-1)
foreach(string f in files)
{
st=explode(f[6..],"/");
pwd=implode(st[0..sizeof(st)-2],"/");
if (!arrayp(filer[pwd])) filer[pwd]=({});
filer[pwd]+=({key});
}
}
foreach (string key in sort_array(keys(filer),1))
{
output += iwrap( "[" + key + "]: " + implode(filer[key],", ")+"\n");
}
output+="\n";
return output;
}
private void
main(string s)
{
string yt;
if (!s)
{
write("apropos <string>\n\n"
"Returns information on which mudlib functions contain the\n"
"keyword passed, including a short description.\n");
return;
}
if (strlen(s)<MIN_LEN)
{
write("Please find a bigger search criteria (min. "+MIN_LEN+
" letters).\n");
return;
}
yt=apropos(s);
if (yt=="\n")
write("No help files match your word.\n");
out(yt);
}