use strict;
use warnings;

our $VERSION = '0.1'; # 6f4322809b35997
our %IRSSI = (
    authors     => 'Nei',
    contact     => 'Nei @ anti@conference.jabber.teamidiot.de',
    url         => "http://anti.teamidiot.de/",
    name        => 'hexcolors',
    description => 'Implements hexcolors with Ctrl-D in Irssi.',
    license     => 'ISC',
   );

use Irssi;

sub _convert {
    $_[1] =~ s{
        \x04 ([[:xdigit:]]{2}) ([[:xdigit:]]{2}) ([[:xdigit:]]{2})
        ( ,  ([[:xdigit:]]{2}) ([[:xdigit:]]{2}) ([[:xdigit:]]{2}) )?
    }{
        (sprintf "\x1b[38;2;%s;%s;%sm",
         (hex $1), (hex $2), (hex $3)) . ( $4 ?
        (sprintf "\x1b[48;2;%s;%s;%sm",
         (hex $5), (hex $6), (hex $7)) : '' )
    }gex;
    $_[1] =~ s{\x04}{\x1b[39m\x1b[49m}gx;
}

sub sig_hdlr {
    &_convert;
    &Irssi::signal_continue;
}

Irssi::signal_add({
    'server incoming'     => 'sig_hdlr',
    'message own_public'  => 'sig_hdlr',
    'message own_private' => 'sig_hdlr',
});
