plugin to persist package changes
[p5sagit/Eval-WithLexicals.git] / lib / Eval / WithLexicals / WithPackagePersistence.pm
1 package Eval::WithLexicals::WithPackagePersistence;
2 use Moo::Role;
3 use Sub::Quote;
4
5 our $VERSION = '1.002000'; # 1.2.0
6 $VERSION = eval $VERSION;
7
8 around eval => sub {
9   my $orig = shift;
10   my($self) = @_;
11
12   local *Eval::WithLexicals::Cage::package;
13   my @ret = $orig->(@_);
14   $self->in_package(Eval::WithLexicals::Cage::package());
15   @ret;
16 };
17
18 around capture_code => sub {
19   my $orig = shift;
20   my($self) = @_;
21
22   return (
23     q{
24       sub Eval::WithLexicals::Cage::package {
25         __PACKAGE__;
26       }
27     },
28     $orig->(@_),
29   )
30 };
31
32 1;