X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FMOP%2FMethod%2FGenerated.pm;h=a06f115852511fc9a14716d5c436e7e18e84a7c0;hb=bd2550f8320262fe1ab10f6c0eedc960889d869f;hp=76f1ce6f67ee0f3658fd7d2ba9710d1bc0885f4d;hpb=4b18c1b3cf8de42c2454663de378e9c3f2180352;p=gitmo%2FClass-MOP.git diff --git a/lib/Class/MOP/Method/Generated.pm b/lib/Class/MOP/Method/Generated.pm index 76f1ce6..a06f115 100644 --- a/lib/Class/MOP/Method/Generated.pm +++ b/lib/Class/MOP/Method/Generated.pm @@ -6,7 +6,7 @@ use warnings; use Carp 'confess'; -our $VERSION = '0.91'; +our $VERSION = '1.12'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -27,15 +27,14 @@ sub _initialize_body { } sub _eval_closure { - # my ($self, $captures, $sub_body) = @_; - my $__captures = $_[1]; + my ($self, $__captures, $sub_body) = @_; my $code; my $e = do { local $@; local $SIG{__DIE__}; - $code = eval join + my $source = join "\n", ( map { /^([\@\%\$])/ @@ -47,13 +46,46 @@ sub _eval_closure { . $_ . q['}};]; } keys %$__captures ), - $_[2]; + $sub_body; + + $self->_dump_source($source) if $ENV{MOP_PRINT_SOURCE}; + + $code = eval $source; $@; }; return ( $code, $e ); } +sub _dump_source { + my ( $self, $source ) = @_; + + my $output; + if ( eval { require Perl::Tidy } ) { + require File::Spec; + + my $rc_file = File::Spec->catfile( + $INC{'Class/MOP/Method/Generated.pm'}, + ('..') x 5, + 'perltidyrc' + ); + + my %p = ( + source => \$source, + destination => \$output, + ); + $p{perltidyrc} = $rc_file + if -f $rc_file; + + Perl::Tidy::perltidy(%p); + } + else { + $output = $source; + } + + print STDERR "\n", $self->name, ":\n", $output, "\n"; +} + sub _add_line_directive { my ( $self, %args ) = @_; @@ -111,7 +143,7 @@ Stevan Little Estevan@iinteractive.comE =head1 COPYRIGHT AND LICENSE -Copyright 2006-2009 by Infinity Interactive, Inc. +Copyright 2006-2010 by Infinity Interactive, Inc. L