ee60a841ab2b57e786ec3f74302475957e06cc6c
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / DDS.pm
1 use strict;
2 use warnings;
3 package Devel::REPL::Plugin::DDS;
4
5 use Devel::REPL::Plugin;
6 use Data::Dump::Streamer ();
7 use namespace::autoclean;
8
9 around 'format_result' => sub {
10    my $orig = shift;
11    my $self = shift;
12    my @to_dump = @_;
13    my $out;
14    if (@to_dump > 1 || ref $to_dump[0]) {
15       if (@to_dump == 1 && overload::Method($to_dump[0], '""')) {
16          $out = "@to_dump";
17       } else {
18          my $dds = Data::Dump::Streamer->new;
19          $dds->Freezer(sub { "$_[0]"; });
20          $dds->Data(@to_dump);
21          $out = $dds->Out;
22       }
23    } else {
24       $out = $to_dump[0];
25    }
26    $self->$orig($out);
27 };
28
29 1;
30
31 __END__
32
33 =head1 NAME
34
35 Devel::REPL::Plugin::DDS - Format results with Data::Dump::Streamer
36
37 =head1 SYNOPSIS
38
39  # in your re.pl file:
40  use Devel::REPL;
41  my $repl = Devel::REPL->new;
42  $repl->load_plugin('DDS');
43  $repl->run;
44
45  # after you run re.pl:
46  $ map $_*2, ( 1,2,3 )
47  $ARRAY1 = [
48              2,
49              4,
50              6
51            ];
52
53  $
54
55 =cut
56