diff options
author | Jesse Luehrs <doy@tozt.net> | 2009-05-27 23:09:54 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2009-05-27 23:09:54 -0500 |
commit | bb04e8cfffa8342804af050813256d48cd8cb62b (patch) | |
tree | 52641941e9f83c1417f76b67840dc0fffa0e4f51 | |
parent | a8f3de3d9e8c11aa5f21a5f0c4c7f5dc748109e2 (diff) | |
download | moosex-mangle-bb04e8cfffa8342804af050813256d48cd8cb62b.tar.gz moosex-mangle-bb04e8cfffa8342804af050813256d48cd8cb62b.zip |
implement guard
-rw-r--r-- | lib/MooseX/Mangle.pm | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/MooseX/Mangle.pm b/lib/MooseX/Mangle.pm index b7c155c..9e1087f 100644 --- a/lib/MooseX/Mangle.pm +++ b/lib/MooseX/Mangle.pm @@ -95,8 +95,22 @@ sub mangle_return { }); } +sub guard { + 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 ($self->$code(@_)) { + return $self->$orig(@_); + } + return; + }); +} + Moose::Exporter->setup_import_methods( - with_caller => [qw(mangle_args mangle_return)], + with_caller => [qw(mangle_args mangle_return guard)], ); =head1 BUGS |