quick test, update deps, add DDS plugin
[p5sagit/Devel-REPL.git] / lib / Devel / REPL.pm
index ff461f5..3752fd4 100644 (file)
@@ -2,7 +2,10 @@ package Devel::REPL;
 
 use Term::ReadLine;
 use Moose;
-use namespace::clean;
+use namespace::clean -except => [ 'meta' ];
+use 5.8.1; # might work with earlier perls but probably not
+
+our $VERSION = '1.001000'; # 1.1.0
 
 with 'MooseX::Object::Pluggable';
 
@@ -51,9 +54,9 @@ sub eval {
 }
 
 sub compile {
-  my ($self, $line) = @_;
-  my $compiled = eval $self->wrap_as_sub($line);
-  return (undef, $self->error_return("Compile error", $@)) if $@;
+  my $_REPL = shift;
+  my $compiled = eval $_REPL->wrap_as_sub($_[0]);
+  return (undef, $_REPL->error_return("Compile error", $@)) if $@;
   return $compiled;
 }
 
@@ -68,9 +71,9 @@ sub mangle_line {
 }
 
 sub execute {
-  my $REPL = shift;
-  my @ret = eval { shift->(@_) };
-  return $REPL->error_return("Runtime error", $@) if $@;
+  my ($self, $to_exec, @args) = @_;
+  my @ret = eval { $to_exec->(@args) };
+  return $self->error_return("Runtime error", $@) if $@;
   return @ret;
 }
 
@@ -82,7 +85,32 @@ sub error_return {
 sub print {
   my ($self, @ret) = @_;
   my $fh = $self->out_fh;
+  no warnings 'uninitialized';
   print $fh "@ret";
 }
 
+=head1 NAME
+
+Devel::REPL - a modern perl interactive shell
+
+=head1 SYNOPSIS
+
+  my $repl = Devel::REPL->new;
+  $repl->load_plugin($_) for qw(History LexEnv);
+  $repl->run
+
+Alternatively, use the 're.pl' script installed with the distribution
+
+  system$ re.pl
+
+=head1 AUTHOR
+
+Matt S Trout - mst (at) shadowcatsystems.co.uk (L<http://www.shadowcatsystems.co.uk/>)
+
+=head1 LICENSE
+
+This library is free software under the same terms as perl itself
+
+=cut
+
 1;