summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2009-05-27 23:09:54 -0500
committerJesse Luehrs <doy@tozt.net>2009-05-27 23:09:54 -0500
commitbb04e8cfffa8342804af050813256d48cd8cb62b (patch)
tree52641941e9f83c1417f76b67840dc0fffa0e4f51
parenta8f3de3d9e8c11aa5f21a5f0c4c7f5dc748109e2 (diff)
downloadmoosex-mangle-bb04e8cfffa8342804af050813256d48cd8cb62b.tar.gz
moosex-mangle-bb04e8cfffa8342804af050813256d48cd8cb62b.zip
implement guard
-rw-r--r--lib/MooseX/Mangle.pm16
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