X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FData%2FDumper%2FConcise%2FSugar.pm;h=b37cff473a2b8b8f042c2584a171dffdfd776ad1;hb=126b545b511e06dd03d2d62fad659e68446c565d;hp=75870a512fb20fb156afe75ebd2f8f068a52c87b;hpb=0deeb75fab1e92bc66dd345ed084fe29338ba013;p=p5sagit%2FData-Dumper-Concise.git diff --git a/lib/Data/Dumper/Concise/Sugar.pm b/lib/Data/Dumper/Concise/Sugar.pm index 75870a5..b37cff4 100644 --- a/lib/Data/Dumper/Concise/Sugar.pm +++ b/lib/Data/Dumper/Concise/Sugar.pm @@ -4,23 +4,46 @@ use 5.006; use Exporter (); use Data::Dumper::Concise (); -use Devel::ArgNames; BEGIN { @ISA = qw(Exporter) } -@EXPORT = qw(Dwarn DwarnS DwarnL DwarnN); +@EXPORT = qw( + $Dwarn $DwarnN Dwarn DwarnS DwarnL DwarnN DwarnF + $Ddie $DdieN Ddie DdieS DdieL DdieN DdieD +); sub Dwarn { return DwarnL(@_) if wantarray; DwarnS($_[0]) } +our $Dwarn = \&Dwarn; +our $DwarnN = \&DwarnN; + sub DwarnL { warn Data::Dumper::Concise::Dumper @_; @_ } sub DwarnS ($) { warn Data::Dumper::Concise::Dumper $_[0]; $_[0] } sub DwarnN ($) { - my $x = arg_names(); + require Devel::ArgNames; + my $x = Devel::ArgNames::arg_names(); warn(($x?$x:'(anon)') . ' => ' . Data::Dumper::Concise::Dumper $_[0]); $_[0] } +sub DwarnF (&@) { my $c = shift; warn &Data::Dumper::Concise::DumperF($c, @_); @_ } + +sub Ddie { DdieL(@_) if wantarray; DdieS($_[0]) } + +our $Ddie = \&Ddie; +our $DdieN = \&DdieN; + +sub DdieL { die Data::Dumper::Concise::Dumper @_ } + +sub DdieS ($) { die Data::Dumper::Concise::Dumper $_[0] } + +sub DdieN ($) { + require Devel::ArgNames; + my $x = Devel::ArgNames::arg_names(); + die(($x?$x:'(anon)') . ' => ' . Data::Dumper::Concise::Dumper $_[0]); +} + =head1 NAME Data::Dumper::Concise::Sugar - return Dwarn @return_value @@ -73,17 +96,65 @@ is equivalent to: warn Dumper(@return); return @return; +If you want to label your output, try DwarnN + + use Data::Dumper::Concise::Sugar; + + return DwarnN $foo + +is equivalent to: + + use Data::Dumper::Concise; + + my @return = some_call(...); + warn '$foo => ' . Dumper(@return); + return @return; + +If you want to output a reference returned by a method easily, try $Dwarn + + $foo->bar->{baz}->$Dwarn + +is equivalent to: + + my $return = $foo->bar->{baz}; + warn Dumper($return); + return $return; + +If you want to format the output of your data structures, try DwarnF + + my ($a, $c) = DwarnF { "awesome: $_[0] not awesome: $_[1]" } $awesome, $cheesy; + +is equivalent to: + + my @return = ($awesome, $cheesy); + warn DumperF { "awesome: $_[0] not awesome: $_[1]" } $awesome, $cheesy; + return @return; + +If you want to immediately die after outputting the data structure, every +Dwarn subroutine has a paired Ddie version, so just replace the warn with die. +For example: + + DdieL 'foo', { bar => 'baz' }; + =head1 DESCRIPTION use Data::Dumper::Concise::Sugar; -will import Dwarn, DwarnL, and DwarnS into your namespace. Using L, so see -its docs for ways to make it do something else. +will import Dwarn, $Dwarn, DwarnL, DwarnN, and DwarnS into your namespace. Using +L, so see its docs for ways to make it do something else. =head2 Dwarn sub Dwarn { return DwarnL(@_) if wantarray; DwarnS($_[0]) } +=head2 $Dwarn + + $Dwarn = \&Dwarn + +=head2 $DwarnN + + $DwarnN = \&DwarnN + =head2 DwarnL sub Dwarn { warn Data::Dumper::Concise::Dumper @_; @_ } @@ -92,6 +163,16 @@ its docs for ways to make it do something else. sub DwarnS ($) { warn Data::Dumper::Concise::Dumper $_[0]; $_[0] } +=head2 DwarnN + + sub DwarnN { warn '$argname => ' . Data::Dumper::Concise::Dumper $_[0]; $_[0] } + +B: this requires L to be installed. + +=head2 DwarnF + + sub DwarnF (&@) { my $c = shift; warn &Data::Dumper::Concise::DumperF($c, @_); @_ } + =head1 TIPS AND TRICKS =head2 global usage