Skip to content

Commit

Permalink
Add autowrap function.
Browse files Browse the repository at this point in the history
  • Loading branch information
gisle committed Jan 2, 2009
1 parent f63a7d6 commit 50dc94a
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions lib/Data/Dump/Trace.pm
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@ package Data::Dump::Trace;
use strict;

use base 'Exporter';
our @EXPORT_OK = qw(call mcall wrap);
our @EXPORT_OK = qw(call mcall wrap autowrap);

use Data::Dump qw(dump);
use Term::ANSIColor qw(YELLOW CYAN RESET);
use Carp qw(croak);
use overload ();

my %obj_name;
my %autowrap_class;
my %name_count;

sub dumpav {
return "(" . dump(@_) . ")" if @_ == 1;
Expand All @@ -25,6 +27,19 @@ sub dumpkv {
return $str;
}

sub autowrap {
while (@_) {
my $class = shift;
my $name = shift;
unless ($name) {
$name = lc($class);
$name =~ s/.*:://;
}
$name = '$' . $name unless $name =~ /^\$/;
$autowrap_class{$class} = $name;
}
}

sub wrap {
my %arg = @_;
my $name = $arg{name} || "func";
Expand Down Expand Up @@ -81,7 +96,14 @@ sub mcall {
}
else {
my $s = $o->$method(@_);
print " ==> ", CYAN, dump($s), RESET, "\n";
if (my $name = $autowrap_class{ref($s)}) {
$name .= $name_count{$name} if $name_count{$name}++;
print " ==> ", CYAN, $name, RESET, "\n";
$s = wrap(name => $name, obj => $s);
}
else {
print " ==> ", CYAN, dump($s), RESET, "\n";
}
return $s;
}
}
Expand Down

0 comments on commit 50dc94a

Please sign in to comment.