support multiple values and non-ref values
Matt S Trout [Sun, 22 Nov 2009 14:09:47 +0000 (14:09 +0000)]
Changes
lib/Data/Dumper/Concise.pm
t/concise.t

diff --git a/Changes b/Changes
index 310620d..4c65787 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,7 @@
+1.002 Nov 22 2009
+  - open up non-ref and multiple arguments since I've not seen any other
+    viable use for the additional syntax
+
 1.001 Oct 5 2009
   - more explanation of purpose, limitations and alternatives in the POD
 
index 7c60395..88fe2cd 100644 (file)
@@ -2,7 +2,7 @@ package Data::Dumper::Concise;
 
 use 5.006;
 
-$VERSION = '1.001';
+$VERSION = '1.002';
 
 require Exporter;
 require Data::Dumper;
@@ -11,16 +11,11 @@ BEGIN { @ISA = qw(Exporter) }
 
 @EXPORT = qw(Dumper);
 
-my $USAGE = 'Dumper() to get an object or Dumper($ref) to dump a reference please';
-
 sub Dumper {
-  die $USAGE if @_ > 1;
   my $dd = Data::Dumper->new([]);
   $dd->Terse(1)->Indent(1)->Useqq(1)->Deparse(1)->Quotekeys(0)->Sortkeys(1);
   return $dd unless @_;
-  my $ref = $_[0];
-  die $USAGE unless ref($ref);
-  return $dd->Values([ $ref ])->Dump;
+  return $dd->Values([ @_ ])->Dump;
 }
 
 =head1 NAME
@@ -88,8 +83,16 @@ instead of the default Data::Dumper output:
 =head1 DESCRIPTION
 
 This module always exports a single function, Dumper, which can be called
-with a single reference value to dump that value or with no arguments to
-return the Data::Dumper object it's created.
+with an array of values to dump those values or with no arguments to
+return the Data::Dumper object it's created. Note that this means that
+
+  Dumper @list
+
+will probably not do what you wanted when @list is empty. In this case use
+
+  Dumper \@list
+
+instead.
 
 It exists, fundamentally, as a convenient way to reproduce a set of Dumper
 options that we've found ourselves using across large numbers of applications,
index 18d085d..6b45dd5 100644 (file)
@@ -14,27 +14,27 @@ my $dd = Data::Dumper->new([])
 
 my $dd_c = Dumper;
 
-my $to_dump = { foo => "bar\nbaz", quux => sub { "fleem" } };
-
-$dd_c->Values([ $to_dump ]);
-$dd->Values([ $to_dump ]);
-
-my $example = do {
-  local $Data::Dumper::Terse = 1;
-  local $Data::Dumper::Indent = 1;
-  local $Data::Dumper::Useqq = 1;
-  local $Data::Dumper::Deparse = 1;
-  local $Data::Dumper::Quotekeys = 0;
-  local $Data::Dumper::Sortkeys = 1;
-  Data::Dumper::Dumper($to_dump);
-};
-
-is($example, $dd->Dump, 'Both Data::Dumper usages equivalent');
-
-is($example, $dd_c->Dump, 'Returned object usage equivalent');
-
-is($example, Dumper($to_dump), 'Subroutine call usage equivalent');
-
-ok(!eval { Dumper(1); 1 }, 'Non-ref call dies');
-
-ok(!eval { Dumper({}, {}); 1 }, 'Multi-ref call dies');
+foreach my $to_dump (
+  [ { foo => "bar\nbaz", quux => sub { "fleem" }  } ],
+  [ 'one', 'two' ]
+) {
+
+  $dd_c->Values([ @$to_dump ]);
+  $dd->Values([ @$to_dump ]);
+  
+  my $example = do {
+    local $Data::Dumper::Terse = 1;
+    local $Data::Dumper::Indent = 1;
+    local $Data::Dumper::Useqq = 1;
+    local $Data::Dumper::Deparse = 1;
+    local $Data::Dumper::Quotekeys = 0;
+    local $Data::Dumper::Sortkeys = 1;
+    Data::Dumper::Dumper(@$to_dump);
+  };
+  
+  is($example, $dd->Dump, 'Both Data::Dumper usages equivalent');
+  
+  is($example, $dd_c->Dump, 'Returned object usage equivalent');
+  
+  is($example, Dumper(@$to_dump), 'Subroutine call usage equivalent');
+}