diff options
Diffstat (limited to 'lib/Carp/Always/Color/HTML.pm')
-rw-r--r-- | lib/Carp/Always/Color/HTML.pm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/Carp/Always/Color/HTML.pm b/lib/Carp/Always/Color/HTML.pm new file mode 100644 index 0000000..04846ca --- /dev/null +++ b/lib/Carp/Always/Color/HTML.pm @@ -0,0 +1,34 @@ +package Carp::Always::Color::HTML; +use Carp::Always; + +BEGIN { $Carp::Internal{(__PACKAGE__)}++ } + +sub _die { + eval { Carp::Always::_die(@_) }; + my $err = $@; + $err =~ s/(.*)/<span style="color:#800">$1<\/span>/; + die $err; +} + +sub _warn { + my $warning; + { + local $SIG{__WARN__} = sub { $warning = $_[0] }; + Carp::Always::_warn(@_); + } + $warning =~ s/(.*)/<span style="color:#880">$1<\/span>/; + warn $warning; +} + +my %OLD_SIG; +BEGIN { + @OLD_SIG{qw(__DIE__ __WARN__)} = @SIG{qw(__DIE__ __WARN__)}; + $SIG{__DIE__} = \&_die; + $SIG{__WARN__} = \&_warn; +} + +END { + @SIG{qw(__DIE__ __WARN__)} = @OLD_SIG{qw(__DIE__ __WARN__)}; +} + +1; |