From: Matt S Trout Date: Sun, 22 Nov 2009 14:09:47 +0000 (+0000) Subject: support multiple values and non-ref values X-Git-Tag: v2.000~19 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e946236eae077a09ce1d8cee071fde812d932a09;p=p5sagit%2FData-Dumper-Concise.git support multiple values and non-ref values --- diff --git a/Changes b/Changes index 310620d..4c65787 100644 --- 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 diff --git a/lib/Data/Dumper/Concise.pm b/lib/Data/Dumper/Concise.pm index 7c60395..88fe2cd 100644 --- a/lib/Data/Dumper/Concise.pm +++ b/lib/Data/Dumper/Concise.pm @@ -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, diff --git a/t/concise.t b/t/concise.t index 18d085d..6b45dd5 100644 --- a/t/concise.t +++ b/t/concise.t @@ -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'); +}