]> git.donarmstrong.com Git - infobot.git/blob - src/Modules/Search.pl
* Merge back with trunk to r1810
[infobot.git] / src / Modules / Search.pl
1 #
2 # infobot copyright kevin lenzo 1997-1998
3 # rewritten by xk 1999
4 #
5
6 package Search;
7
8 use strict;
9
10 ###
11 # Search(keys||vals, str);
12 sub Search {
13     my ( $type, $str ) = @_;
14     my $start_time = &::timeget();
15     my @list;
16     my $maxshow = &::getChanConfDefault( 'maxListReplyCount', 15, $::chan );
17
18     $type =~ s/s$//;    # nice work-around.
19
20     if ( $type eq 'value' ) {
21
22         # search by value.
23         @list =
24           &::searchTable( 'factoids', 'factoid_key', 'factoid_value', $str );
25     }
26     else {
27
28         # search by key.
29         @list =
30           &::searchTable( 'factoids', 'factoid_key', 'factoid_key', $str );
31     }
32
33     @list = grep( !/\#DEL\#$/, @list ) if ( scalar(@list) > $maxshow );
34     my $delta_time = sprintf( "%.02f", &::timedelta($start_time) );
35     &::status("search: took $delta_time sec for query.") if ( $delta_time > 0 );
36
37     my $prefix = "Factoid search of '\002$str\002' by $type ";
38
39     &::performStrictReply( &::formListReply( 1, $prefix, @list ) );
40 }
41
42 1;
43
44 # vim:ts=4:sw=4:expandtab:tw=80