X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-REPL.git;a=blobdiff_plain;f=lib%2FDevel%2FREPL.pm;h=3c986cb0d4839985933e2e2a43a27dc881e1d445;hp=406cb42db4f52a40cf1c033bc636396fcd2a3531;hb=c3bbf326d9e6a1ae2c1d5fd05ff973f5f9d26106;hpb=e22aa835df762f888ec7ff9efb2a599ebe17538e diff --git a/lib/Devel/REPL.pm b/lib/Devel/REPL.pm index 406cb42..3c986cb 100644 --- a/lib/Devel/REPL.pm +++ b/lib/Devel/REPL.pm @@ -71,7 +71,7 @@ sub formatted_eval { sub format { my ( $self, @stuff ) = @_; - if ( blessed($stuff[0]) and $stuff[0]->isa("Devel::REPL::Error") ) { + if ( $self->is_error($stuff[0]) ) { return $self->format_error(@stuff); } else { return $self->format_result(@stuff); @@ -89,6 +89,11 @@ sub format_error { return $error->stringify; } +sub is_error { + my ( $self, $thingy ) = @_; + blessed($thingy) and $thingy->isa("Devel::REPL::Error"); +} + sub read { my ($self) = @_; return $self->term->readline($self->prompt); @@ -96,16 +101,15 @@ sub read { sub eval { my ($self, $line) = @_; - my ($to_exec, @rest) = $self->compile($line); - return @rest unless defined($to_exec); - my @ret = $self->execute($to_exec); - return @ret; + my $compiled = $self->compile($line); + return $compiled unless defined($compiled) and not $self->is_error($compiled); + return $self->execute($compiled); } sub compile { my ( $_REPL, @args ) = @_; my $compiled = eval $_REPL->wrap_as_sub(@args); - return (undef, $_REPL->error_return("Compile error", $@)) if $@; + return $_REPL->error_return("Compile error", $@) if $@; return $compiled; }