diff options
| author | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
|---|---|---|
| committer | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
| commit | 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch) | |
| tree | 1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/wordcompletition.pl | |
| parent | 2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff) | |
| download | scripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2 | |
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/wordcompletition.pl')
| -rw-r--r-- | scripts/wordcompletition.pl | 136 | 
1 files changed, 136 insertions, 0 deletions
| diff --git a/scripts/wordcompletition.pl b/scripts/wordcompletition.pl new file mode 100644 index 0000000..0aa5e52 --- /dev/null +++ b/scripts/wordcompletition.pl @@ -0,0 +1,136 @@ +#!/usr/bin/perl +use Irssi; +use DBI; +use strict; +use vars qw($VERSION %IRSSI); +$VERSION = "0.1"; +%IRSSI = ( +    authors     => "Jesper Lindh", +    contact     => "rakblad\@midgard.liu.se", +    name        => "IRC Completion with mysql-database", +    description => "Adds words from IRC to your tab-completion list", +    license     => "Public Domain", +    url         => "http://midgard.liu.se/~n02jesli/perl/", +    changed     => "2004-03-12" +); +my ($dsn) = "DBI:mysql:yourdatabase:databashostname"; +my ($user_name) = "yourusername"; +my ($password) = "yourpassword"; +my ($dbh, $sth); +my (@ary); +my $query; +my $connect = 1; +$dbh = DBI->connect ($dsn, $user_name, $password, { RaiseError => 1 }); + +sub wordsearch +{ +	my $sw = shift; +	my @retar; +	my $i = 0; +	$query = qq{ select word from words where word like "$sw%" order by prio desc }; +	$sth = $dbh->prepare ( $query ); +	$sth->execute(); +	while (@ary = $sth->fetchrow_array ()) +	{ +        	$retar[$i++] = join ("", @ary), "\n"; +	} +	$sth->finish(); +	return @retar; +}; +sub wordfind +{ +	my $sw = shift; +	my $ret; +	$query = qq{ select word from words where word = "$sw" }; +        $sth = $dbh->prepare ( $query ); +        $sth->execute(); +        @ary = $sth->fetchrow_array; +        $ret = join ("", @ary), "\n"; +        $sth->finish(); +	return $ret; +}; + +sub wordupdate +{ +	my $sw = shift; +	$query = qq { update words set prio = prio + 1 where word = "$sw" }; +        $sth = $dbh->prepare ( $query ); +        $sth->execute(); +        $sth->finish(); +}; +sub delword +{ +	my $sw = shift; +	$query = qq { delete from words where word = "$sw" }; +        $sth = $dbh->prepare ( $query ); +        $sth->execute(); +        $sth->finish(); +}; +sub addword +{ +	my $sw = shift; +	$query = qq { insert into words values ('$sw', 1) }; +        $sth = $dbh->prepare ( $query ); +        $sth->execute(); +        $sth->finish(); +}; +sub word_complete +{ +	my ($complist, $window, $word, $linestart, $want_space) = @_; +        $word =~ s/([^a-zA-Z0-9åäöÅÄÖ])//g; +	@$complist = wordsearch($word);	 +}; +sub word_message +{ +        my ($server, $message) = @_; +        foreach my $word (split(' ', $message)) +        { +		$word =~ s/([^a-zA-Z0-9åäöÅÄÖ])//g; +		if (length($word) >= 4) +		{ +			my $fword = wordfind($word); +			if ($fword) +			{ +				wordupdate($word); +			} +			else +			{ +				addword($word); +			}; +		}; +        }; +}; +sub cmd_delword +{ +	my $dword = shift; +	delword($dword); +	print "Deleted $dword from database!"; +}; +sub cmd_sql_disconnect +{ +	$dbh->disconnect(); +	print "Disconnected from sql-server"; +	$connect = 0; +}; +sub cmd_sql_connect +{ +	if ($connect != 0) +	{ +		print "Connecting to sql-server"; +		$dbh = DBI->connect ($dsn, $user_name, $password, { RaiseError => 1 }); +	} +	else +	{ +		print "Already connected"; +	}; +}; +		 +foreach my $cword ("message own_public", "message own_private") +{ +        Irssi::signal_add($cword, "word_message"); +}; +Irssi::signal_add_last('complete word', 'word_complete'); +Irssi::command_bind("delword", "cmd_delword"); +Irssi::command_bind("sql_disconnect", "cmd_sql_disconnect"); +Irssi::command_bind("sql_connect", "cmd_sql_connect"); + | 
