Create Ddie for die'ing output
Arthur Axel 'fREW' Schmidt [Sat, 23 Oct 2010 03:06:02 +0000 (22:06 -0500)]
Changes
lib/Data/Dumper/Concise/Sugar.pm
lib/Devel/Dwarn.pm
t/sugar.t

diff --git a/Changes b/Changes
index 0784104..9e77f22 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,4 +1,5 @@
   - create DwarnF for formatting Dumper'd output
+  - Create Ddie for die'ing output
 
 2.012 Aug 31 2010
   - Make DwarnN test still work if Devel::ArgNames isn't installed
index 5aef1a1..f82754a 100644 (file)
@@ -7,7 +7,10 @@ use Data::Dumper::Concise ();
 
 BEGIN { @ISA = qw(Exporter) }
 
-@EXPORT = qw($Dwarn $DwarnN Dwarn DwarnS DwarnL DwarnN DwarnF);
+@EXPORT = qw(
+   $Dwarn $DwarnN Dwarn DwarnS DwarnL DwarnN
+   $Ddie $DdieN Ddie DdieS DdieL DdieN DdieD
+);
 
 sub Dwarn { return DwarnL(@_) if wantarray; DwarnS($_[0]) }
 
@@ -26,6 +29,21 @@ sub DwarnN ($) {
 
 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
@@ -112,6 +130,12 @@ is equivalent to:
   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;
index 01da500..6896371 100644 (file)
@@ -82,6 +82,12 @@ is equivalent to:
   warn Dumper($return);
   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 TIPS AND TRICKS
 
 =head2 global usage
index 817f4ad..20eb013 100644 (file)
--- a/t/sugar.t
+++ b/t/sugar.t
@@ -66,3 +66,10 @@ DWARNN: {
    }
 }
 
+DDIE: {
+   eval {
+      DdieS [ 'k', 'bar' ];
+   };
+   is $@, qq{[\n  "k",\n  "bar"\n]\n}, 'DwarnD dies output correctly';
+}
+