+use strict;
+use warnings;
package Devel::REPL::Plugin::Colors;
-use Moose::Role;
+use Devel::REPL::Plugin;
use Term::ANSIColor;
-use namespace::clean -except => [ 'meta' ];
+use namespace::autoclean;
has normal_color => (
is => 'rw', lazy => 1,
default => 'bold red',
);
-around error_return => sub {
+around format_error => sub {
my $orig = shift;
my $self = shift;
return color($self->error_color)
};
# we can't just munge @_ because that screws up DDS
-around print => sub {
+around format_result => sub {
my $orig = shift;
my $self = shift;
- print {$self->out_fh} color($self->normal_color);
- $orig->($self, @_);
- print {$self->out_fh} color('reset');
+ no warnings 'uninitialized';
+ return join "", (
+ color($self->normal_color),
+ $orig->($self, @_),
+ color('reset'),
+ );
};
# make arbitrary warns colored -- somewhat difficult because warn doesn't
# get $self, so we localize $SIG{__WARN__} during eval so it can get
# error_color
-around execute => sub {
+sub _wrap_warn {
my $orig = shift;
my $self = shift;
$orig->($self, @_);
};
+around compile => \&_wrap_warn;
+around execute => \&_wrap_warn;
+
1;
__END__
=head1 SYNOPSIS
- #!/usr/bin/perl
-
- use lib './lib';
use Devel::REPL;
my $repl = Devel::REPL->new;