From 3ea9215fff432fe798553b8b04352147aa68930c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 27 May 2009 21:34:34 -0500 Subject: initial implementation --- lib/MooseX/Mangle.pm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/MooseX/Mangle.pm diff --git a/lib/MooseX/Mangle.pm b/lib/MooseX/Mangle.pm new file mode 100644 index 0000000..c555a6a --- /dev/null +++ b/lib/MooseX/Mangle.pm @@ -0,0 +1,39 @@ +package MooseX::Mangle; +use Moose (); +use Moose::Exporter; + +sub mangle_args { + my $caller = shift; + my ($method_name, $code) = @_; + my $meta = Class::MOP::class_of($caller); + $meta->add_around_method_modifier($method_name => sub { + my $orig = shift; + my $self = shift; + my @args = $self->$code(@_); + return $self->$orig(@args); + }); +} + +sub mangle_return { + my $caller = shift; + my ($method_name, $code) = @_; + my $meta = Class::MOP::class_of($caller); + $meta->add_around_method_modifier($method_name => sub { + my $orig = shift; + my $self = shift; + if (wantarray) { + my @ret = $self->$orig(@_); + return $self->$code(@ret); + } + else { + my $ret = $self->$orig(@_); + return $self->$code($ret); + } + }); +} + +Moose::Exporter->setup_import_methods( + with_caller => [qw(mangle_args mangle_return)], +); + +1; -- cgit v1.2.3