Fix "No arguments!" error in Plugin::DDS when nothing to dump (fixes: #71205)
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / DDS.pm
index 457ec69..d32a5c3 100644 (file)
@@ -1,22 +1,53 @@
 package Devel::REPL::Plugin::DDS;
 
-use Moose::Role;
+use Devel::REPL::Plugin;
 use Data::Dump::Streamer ();
 
 around 'format_result' => sub {
-  my $orig = shift;
-  my $self = shift;
-  my $to_dump = (@_ > 1) ? [@_] : $_[0];
-  my $out;
-  if (ref $to_dump) {
-    my $dds = Data::Dump::Streamer->new;
-    $dds->Freezer(sub { "$_[0]"; });
-    $dds->Data($to_dump);
-    $out = $dds->Out;
-  } else {
-    $out = $to_dump;
-  }
-  $self->$orig($out);
+   my $orig = shift;
+   my $self = shift;
+   my @to_dump = @_;
+   my $out;
+   if (@to_dump > 1 || ref $to_dump[0]) {
+      if (@to_dump == 1 && overload::Method($to_dump[0], '""')) {
+         $out = "@to_dump";
+      } else {
+         my $dds = Data::Dump::Streamer->new;
+         $dds->Freezer(sub { "$_[0]"; });
+         $dds->Data(@to_dump);
+         $out = $dds->Out;
+      }
+   } else {
+      $out = $to_dump[0];
+   }
+   $self->$orig($out);
 };
 
 1;
+
+__END__
+
+=head1 NAME
+
+Devel::REPL::Plugin::DDS - Format results with Data::Dump::Streamer
+
+=head1 SYNOPSIS
+
+ # in your re.pl file:
+ use Devel::REPL;
+ my $repl = Devel::REPL->new;
+ $repl->load_plugin('DDS');
+ $repl->run;
+
+ # after you run re.pl:
+ $ map $_*2, ( 1,2,3 )
+ $ARRAY1 = [
+             2,
+             4,
+             6
+           ];
+
+ $
+
+=cut
+