1
2# By Stefan 'tommie' Tomanek
3use strict;
4
5use vars qw($VERSION %IRSSI);
6$VERSION = "2003020801";
7%IRSSI = (
8    authors     => "Stefan 'tommie' Tomanek",
9    contact     => "stefan\@pico.ruhr.de",
10    name        => "CRAPbuster",
11    description => "Removes CRAP or CLIENTCRAP messages from your buffer",
12    license     => "GPLv2",
13    changed     => "$VERSION",
14    commands	=> "crapbuster"
15);
16
17use Irssi;
18use Irssi::TextUI;
19
20sub cmd_crapbuster ($$$) {
21    my ($args, $server, $witem) = @_;
22    my $limit = $args =~ /^\d+$/ ? $args : -1;
23    my $win = ref $witem ? $witem->window() : Irssi::active_win();
24    my $view = $win->view;
25    my $line = $view->get_lines;
26    $line = $line->next while defined $line->next;
27    while (defined $line->prev){
28	last if $limit == 0;
29	my $level = $line->{info}{level};
30	my $copy = $line;
31	$line = $line->prev;
32	foreach (split / /, Irssi::settings_get_str('crapbuster_levels')) {
33	    next unless ($level == Irssi::level2bits($_));
34	    $view->remove_line($copy);
35	    last;
36	}
37	$limit-- if $limit;
38    }
39    $view->redraw();
40}
41
42Irssi::command_bind('crapbuster', \&cmd_crapbuster);
43Irssi::settings_add_str($IRSSI{name}, 'crapbuster_levels', 'CLIENTCRAP CRAP');
44