Badger
view release on metacpan or search on metacpan
lib/Badger/Reporter.pm view on Meta::CPAN
package Badger::Reporter;
use Badger::Class
version => 0.01,
debug => 0,
base => 'Badger::Base',
import => 'class',
config => 'verbose=0 quiet=0 nothing|dryrun=0 progress=0 colour|color=1 progress_module|method:PROGRESS_MODULE',
utils => 'self_params params xprintf',
auto_can => 'auto_can',
constants => 'ARRAY HASH BLANK DELIMITER',
constant => {
NO_REASON => 'no reason given',
PROGRESS_MODULE => 'Badger::Progress',
},
messages => {
bad_colour => 'Invalid colour specified for %s event: %s',
};
use Badger::Debug ':dump';
use Badger::Rainbow
ANSI => 'all',
import => 'strip_ANSI_escapes';
our $COLOURS = {
bold => \&bold,
dark => \&dark,
black => \&black,
red => \&red,
green => \&green,
blue => \&blue,
cyan => \&cyan,
magenta => \&magenta,
yellow => \&yellow,
grey => \&grey,
white => \&white,
};
#-----------------------------------------------------------------------
# init methods
#-----------------------------------------------------------------------
sub init {
my ($self, $config) = @_;
$self->configure($config)
->init_events($config)
->init_reporter($config);
return $self;
}
sub init_events {
my ($self, $config) = @_;
my $lookup = $self->{ event } = { };
my $events = $self->{ events } = [ ];
my $names = $self->{ event_names } = [ ];
my ($evspec, $event, $name);
$self->debug("init_events()") if DEBUG;
# events can be specified as a list ref of 'whitespace delimited string'
$evspec = $config->{ events } || [ ];
$evspec = [ split(DELIMITER, $evspec) ]
unless ref $evspec eq ARRAY;
$self->debug("event spec: $evspec ==> ", $self->dump_data($evspec)) if DEBUG;
# now merge it with any events specifed in $EVENTS class variable(s)
$evspec = $self->class->list_vars( EVENTS => $evspec );
$self->debug("event spec: ", $self->dump_data($evspec)) if DEBUG;
foreach (@$evspec) {
$self->debug("event: $_") if DEBUG;
$event = $_; # avoid aliasing
$event = { name => $event }
unless ref $event eq HASH;
$name = $event->{ name }
|| return $self->error_msg( missing => 'event name' );
# set some defaults
$event->{ message } = '%s' unless defined $event->{ message };
$event->{ summary } = '%s %s' unless defined $event->{ summary };
( run in 0.298 second using v1.01-cache-2.11-cpan-99c4e6809bf )