From bb04e8cfffa8342804af050813256d48cd8cb62b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 27 May 2009 23:09:54 -0500 Subject: implement guard --- lib/MooseX/Mangle.pm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3