package Xchat::VPIT::Highlight;

use strict;
use warnings;

use Xchat qw/:all/;

use lib get_info 'xchatdir';
use Xchat::XPI;
use Xchat::XPI::Events qw/filter/;

our $VERSION = '0.04';

my $ph;

sub guihl {
 command 'GUI FLASH';
 command 'GUI COLOR 3';
}

sub guiclear {
 command 'GUI COLOR 0';
}

hook_print 'Private Message to Dialog', sub { guihl; return EAT_NONE };

my %hl = (
 '#cpantesters' => [ qw/
    Acme-CPANAuthors-You-re_using
    B-RecDeparse
    Bit-MorseSignals
    CPANPLUS-Dist-Gentoo
    IPC-MorseSignals
    Lexical-Types
    Linux-SysInfo
    Perl-Critic-Policy-Dynamic-NoIndirect
    Regexp-Wildcards
    Scalar-Vec-Util
    Scope-Upper
    Sub-Nary
    Sub-Op
    Sub-Prototype-Util
    Test-Valgrind
    Thread-Cleanup
    Variable-Magic
    autovivification-
    indirect-
    rgit-
    subs-auto
    \bwith-
  / ],
);

for (keys %hl) {
 my $rx = '(?:' . join('|', @{$hl{$_}}) . ')';
 $hl{$_} =  qr/$rx/;
}

filter 'Channel Action' => sub {
 my $chan = lc get_info 'channel';
 if ($hl{$chan} and $_[1] =~ /$hl{$chan}/) {
  guihl;
  1;
 } else {
  0;
 }
} => 'Channel Action Hilight';

my %skip = (
 '#p5p' => [
   '(?i:jesse.vincent)',
 ],
);

for (keys %skip) {
 my $rx = '(?:' . join('|', @{$skip{$_}}) . ')';
 $skip{$_} =  qr/$rx/;
}

filter 'Channel Action Hilight' => sub {
 my $chan = lc get_info 'channel';
 if ($skip{$chan} and $_[1] =~ /$skip{$chan}/) {
  guiclear;
  1;
 } else {
  0;
 }
} => 'Channel Action';

$ph = Xchat::XPI->new(
 name   => 'Smart highlighting',
 tag    => 'HL',
 desc   => 'Highlight on private messages',
 author => 'Vincent Pit (VPIT)',
 email  => 'perl@profvince.com',
 url    => 'http://www.profvince.com',
);
 
1;

