The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# ============================================================================
package MooseX::App::Message::BlockColor;
# ============================================================================

use 5.010;
use utf8;

use namespace::autoclean;
use Moose;
extends qw(MooseX::App::Message::Block);

use Term::ANSIColor qw();

sub stringify {
    my ($self) = @_;
    
    my $header_color;
    my $body_color;
    given ($self->type) {
        when('error') {
            $header_color = 'bright_red bold';
            $body_color = 'bright_red';
        }
        when('default') {
            $header_color = 'bold';
        }
        default {
            $header_color = $_;
        }
    }
    
    my $message = '';
    if ($self->has_header) {
        if ($header_color) {
            $message .= Term::ANSIColor::color($header_color).
                $self->header.
                Term::ANSIColor::color('reset')."\n"
        } else {
            $message .= $self->header."\n"
        }
    }
    
    if ($self->has_body) {
        if ($body_color) {
            $message .= Term::ANSIColor::color($body_color).
                $self->body.
                Term::ANSIColor::color('reset')."\n\n"
        } else {
            $message .= $self->body."\n\n"
        }
    }
    
    return $message;
}

__PACKAGE__->meta->make_immutable;
1;