[Bast-commits] r3209 - in trunk/Devel-REPL/lib/Devel: . REPL/Plugin

matthewt at dev.catalyst.perl.org matthewt at dev.catalyst.perl.org
Wed Apr 25 02:29:09 GMT 2007


Author: matthewt
Date: 2007-04-25 02:29:07 +0100 (Wed, 25 Apr 2007)
New Revision: 3209

Added:
   trunk/Devel-REPL/lib/Devel/REPL/Plugin/LexEnv.pm
Modified:
   trunk/Devel-REPL/lib/Devel/REPL.pm
   trunk/Devel-REPL/lib/Devel/REPL/Plugin/Turtles.pm
Log:
add LexEnv plugin, rename $REPL to $_REPL to avoid clash with Lexical::Persistence

Added: trunk/Devel-REPL/lib/Devel/REPL/Plugin/LexEnv.pm
===================================================================
--- trunk/Devel-REPL/lib/Devel/REPL/Plugin/LexEnv.pm	                        (rev 0)
+++ trunk/Devel-REPL/lib/Devel/REPL/Plugin/LexEnv.pm	2007-04-25 01:29:07 UTC (rev 3209)
@@ -0,0 +1,30 @@
+package Devel::REPL::Plugin::LexEnv;
+
+use Moose::Role;
+use namespace::clean -except => [ 'meta' ];
+use Lexical::Persistence;
+
+has 'lexical_environment' => (
+  isa => 'Lexical::Persistence',
+  is => 'rw',
+  required => 1,
+  lazy => 1,
+  default => sub { Lexical::Persistence->new }
+);
+
+around 'mangle_line' => sub {
+  my $orig = shift;
+  my ($self, @rest) = @_;
+  my $line = $self->$orig(@rest);
+  my $lp = $self->lexical_environment;
+  return join('', map { "my $_;\n" } keys %{$lp->get_context('_')}).$line;
+};
+
+around 'execute' => sub {
+  my $orig = shift;
+  my ($self, $to_exec, @rest) = @_;
+  my $wrapped = $self->lexical_environment->wrap($to_exec);
+  return $self->$orig($wrapped, @rest);
+};
+
+1;

Modified: trunk/Devel-REPL/lib/Devel/REPL/Plugin/Turtles.pm
===================================================================
--- trunk/Devel-REPL/lib/Devel/REPL/Plugin/Turtles.pm	2007-04-24 22:04:02 UTC (rev 3208)
+++ trunk/Devel-REPL/lib/Devel/REPL/Plugin/Turtles.pm	2007-04-25 01:29:07 UTC (rev 3209)
@@ -6,7 +6,7 @@
     my $next = shift;
     my ($self, $line) = @_;
     if ($line =~ /^#(.*)/) {
-        return $next->($self, ('$REPL->' . $1 . '; return();'));
+        return $next->($self, ('$_REPL->' . $1 . '; return();'));
     }
     else {
         return $next->($self, $line);

Modified: trunk/Devel-REPL/lib/Devel/REPL.pm
===================================================================
--- trunk/Devel-REPL/lib/Devel/REPL.pm	2007-04-24 22:04:02 UTC (rev 3208)
+++ trunk/Devel-REPL/lib/Devel/REPL.pm	2007-04-25 01:29:07 UTC (rev 3209)
@@ -51,9 +51,9 @@
 }
 
 sub compile {
-  my $REPL = shift;
-  my $compiled = eval $REPL->wrap_as_sub($_[0]);
-  return (undef, $REPL->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;
 }
 




More information about the Bast-commits mailing list