X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FData%2FDumper%2FConcise.pm;h=543f8ce89013854d8168f0ee9edc34c4157339a8;hb=4aab360553cca9fc8b7be05bd6134928cf016ce3;hp=2220af7d8ebc76f99f68c83b17ea5f4447d9d326;hpb=9e8a5bca132ade1de969c6facc731b2985bc8bb9;p=p5sagit%2FData-Dumper-Concise.git diff --git a/lib/Data/Dumper/Concise.pm b/lib/Data/Dumper/Concise.pm index 2220af7..543f8ce 100644 --- a/lib/Data/Dumper/Concise.pm +++ b/lib/Data/Dumper/Concise.pm @@ -2,20 +2,26 @@ package Data::Dumper::Concise; use 5.006; -$VERSION = '1.200'; +our $VERSION = '2.023'; require Exporter; require Data::Dumper; BEGIN { @ISA = qw(Exporter) } -@EXPORT = qw(Dumper); +@EXPORT = qw(Dumper DumperF DumperObject); -sub Dumper { +sub DumperObject { my $dd = Data::Dumper->new([]); + $dd->Trailingcomma(1) if $dd->can('Trailingcomma'); $dd->Terse(1)->Indent(1)->Useqq(1)->Deparse(1)->Quotekeys(0)->Sortkeys(1); - return $dd unless @_; - return $dd->Values([ @_ ])->Dump; +} + +sub Dumper { DumperObject->Values([ @_ ])->Dump } + +sub DumperF (&@) { + my $code = shift; + return $code->(map Dumper($_), @_); } =head1 NAME @@ -38,23 +44,10 @@ is equivalent to: local $Data::Dumper::Deparse = 1; local $Data::Dumper::Quotekeys = 0; local $Data::Dumper::Sortkeys = 1; + local $Data::Dumper::Trailingcomma = 1; warn Dumper($var); } -whereas - - my $dd = Dumper; - -is equivalent to: - - my $dd = Data::Dumper->new([]) - ->Terse(1) - ->Indent(1) - ->Useqq(1) - ->Deparse(1) - ->Quotekeys(0) - ->Sortkeys(1); - So for the structure: { foo => "bar\nbaz", quux => sub { "fleem" } }; @@ -67,32 +60,41 @@ Data::Dumper::Concise will give you: use warnings; use strict 'refs'; 'fleem'; - } + }, } instead of the default Data::Dumper output: $VAR1 = { - 'quux' => sub { "DUMMY" }, - 'foo' => 'bar + 'quux' => sub { "DUMMY" }, + 'foo' => 'bar baz' }; (note the tab indentation, oh joy ...) -=head1 DESCRIPTION +(The trailing comma on the last element of an array or hash is enabled by a new +feature in Data::Dumper version 2.159, which was first released in Perl 5.24. +Using Data::Dumper::Concise with an older version of Data::Dumper will still +work, but you won't get those commas.) -This module always exports a single function, Dumper, which can be called -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 +If you need to get the underlying L object just call C. + +Also try out C which takes a C as the first argument to +format the output. For example: + + use Data::Dumper::Concise; + + warn DumperF { "result: $_[0] result2: $_[1]" } $foo, $bar; - Dumper @list +Which is the same as: -will probably not do what you wanted when @list is empty. In this case use + warn 'result: ' . Dumper($foo) . ' result2: ' . Dumper($bar); - Dumper \@list +=head1 DESCRIPTION -instead. +This module always exports a single function, Dumper, which can be called +with an array of values to dump those values. 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, @@ -146,7 +148,7 @@ frew - Arthur Axel "fREW" Schmidt =head1 COPYRIGHT -Copyright (c) 2009 the Data::Dumper::Concise L and L +Copyright (c) 2010 the Data::Dumper::Concise L and L as listed above. =head1 LICENSE