[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