use strict;
use warnings;

package BarnOwl::Style::IRC;
# Inherit format_message to dispatch
use base qw(BarnOwl::Style::Default);

# freenode #barnowl 14:30 <geofft> Hello
# geofft / stuff 14:30 <geofft> quack
# <geofft> quack
# <OWL ADMIN> stuff

sub description {"A format inspired by traditional IRC clients"}

BarnOwl::create_style("irc", "BarnOwl::Style::IRC");

################################################################################

sub maybe {
    my $thing = shift;
    return defined($thing) ? $thing : "";
}

sub format_login {
  my $self = shift;
  my $m = shift;
  return "* " . $m->type . " " . $m->login . " " . $m->pretty_sender; #$m->login_extra
}

sub format_ping {
  my $self = shift;
  my $m = shift;
  return "* PING from " . $m->pretty_sender;
}

sub format_chat
{
  my $self = shift;
  my $m = shift;

  my $header = $m->context . " / " . $m->subcontext . " <" . $m->pretty_sender . "> ";
  my $left = " " x length($header);
  my @lines = split /\n/, $m->body;
  my $line = shift @lines;
  return $self->humanize($header . $line . "\n" . join "\n", map {$left . $_} @lines);
}

# Format owl admin messages
sub format_admin
{
  my $self = shift;
  my $m = shift;
  return "* OWL ADMIN: " . $m->body;
}

1;
