From 0d94442be3eb8dff98a5e429768af2a681389939 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 5 Jul 2013 16:38:37 -0400 Subject: make the DataDump plugin respect stringification overload by default --- lib/Reply/Plugin/DataDump.pm | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/Reply/Plugin/DataDump.pm b/lib/Reply/Plugin/DataDump.pm index 64d756e..a020adb 100644 --- a/lib/Reply/Plugin/DataDump.pm +++ b/lib/Reply/Plugin/DataDump.pm @@ -5,7 +5,8 @@ use warnings; use base 'Reply::Plugin'; -use Data::Dump 'pp'; +use Data::Dump 'dumpf'; +use overload (); =head1 SYNOPSIS @@ -18,10 +19,30 @@ This plugin uses L to format results. =cut +sub new { + my $class = shift; + my %opts = @_; + $opts{respect_stringification} = 1 + unless defined $opts{respect_stringification}; + + my $self = $class->SUPER::new(@_); + $self->{filter} = sub { + my ($ctx, $ref) = @_; + return unless $ctx->is_blessed; + my $stringify = overload::Method($ref, '""'); + return unless $stringify; + return { + dump => $stringify->($ref), + }; + } if $opts{respect_stringification}; + + return $self; +} + sub mangle_result { my $self = shift; my (@result) = @_; - return @result ? pp(@result) : (); + return @result ? dumpf(@result, $self->{filter}) : (); } 1; -- cgit v1.2.3-54-g00ecf