html/crapbuster.pl


   1 
   2 # By Stefan 'tommie' Tomanek
   3 use strict;
   4 
   5 use 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 
  17 use Irssi;
  18 use Irssi::TextUI;
  19 
  20 sub 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 
  42 Irssi::command_bind('crapbuster', \&cmd_crapbuster);
  43 Irssi::settings_add_str($IRSSI{name}, 'crapbuster_levels', 'CLIENTCRAP CRAP');