add Dwarn_only and DwarnS_only
Matt S Trout [Sat, 13 Feb 2010 19:47:14 +0000 (19:47 +0000)]
These routines take a block as their first argument and only warn+Dumper the
results of the block. Dwarn_only is list context and simply provides @_,
DwarnS_only also does local $_ for the argument in order to simplify usage.

lib/Data/Dumper/Concise/Sugar.pm
t/dwarn_only.t [new file with mode: 0644]

index addd8e2..9a514b2 100644 (file)
@@ -9,10 +9,24 @@ BEGIN { @ISA = qw(Exporter) }
 
 @EXPORT = qw(Dwarn DwarnS);
 
+@EXPORT_OK = qw(Dwarn_only DwarnS_only);
+
 sub Dwarn { warn Data::Dumper::Concise::Dumper @_; @_ }
 
 sub DwarnS ($) { warn Data::Dumper::Concise::Dumper $_[0]; $_[0] }
 
+sub Dwarn_only (&@) {
+  my $only = shift;
+  warn Data::Dumper::Concise::Dumper $only->(@_);
+  @_
+}
+
+sub DwarnS_only (&$) {
+  my $only = shift;
+  warn Data::Dumper::Concise::Dumper do { local $_ = $_[0]; $only->($_[0]) };
+  $_[0]
+}
+
 =head1 NAME
 
 Data::Dumper::Concise::Sugar - return Dwarn @return_value
diff --git a/t/dwarn_only.t b/t/dwarn_only.t
new file mode 100644 (file)
index 0000000..0036042
--- /dev/null
@@ -0,0 +1,9 @@
+use strict;
+use warnings FATAL => 'all';
+use Test::More qw(no_plan);
+
+use Devel::Dwarn qw(Dwarn_only DwarnS_only);
+
+warn Dwarn_only { $_[0] } qw(one two three);
+
+warn DwarnS_only { $_->[0] } [ qw(one two three) ];