Aspect
view release on metacpan or search on metacpan
# Run Advice after several methods and hijack their return values
after {
print "Called getter/setter " . $_->sub_name . "\n";
$_->return_value(undef);
} call qr/^Person::[gs]et_/;
# Run Advice conditionally based on multiple factors
before {
print "Calling a get method in void context within Tester::run_tests";
} wantvoid
& ( call qr/^Person::get_/ & ! call 'Person::get_not_trapped' )
& cflow 'Tester::run_tests';
# Context-aware runtime hijacking of a method if certain condition is true
around {
if ( $_->self->customer_name eq 'Adam Kennedy' ) {
# Ensure I always have cash
$_->return_value('One meeeelion dollars');
} else {
# Take a dollar off everyone else
$_->proceed;
lib/Aspect.pm view on Meta::CPAN
# Run Advice after several methods and hijack their return values
after {
print "Called getter/setter " . $_->sub_name . "\n";
$_->return_value(undef);
} call qr/^Person::[gs]et_/;
# Run Advice conditionally based on multiple factors
before {
print "Calling a get method in void context within Tester::run_tests";
} wantvoid
& ( call qr/^Person::get_/ & ! call 'Person::get_not_trapped' )
& cflow 'Tester::run_tests';
# Context-aware runtime hijacking of a method if certain condition is true
around {
if ( $_->self->customer_name eq 'Adam Kennedy' ) {
# Ensure I always have cash
$_->return_value('One meeeelion dollars');
} else {
# Take a dollar off everyone else
$_->proceed;
t/11_pointcut_call.t view on Meta::CPAN
# not match one. And this rule should apply BOTH to the match_all
# define-time rule AND for the runtime rule.
SCOPE: {
package One;
sub one { }
sub two { }
}
my $not_call_and_call = ! call('One::one') & call(qr/^One::/);
isa_ok( $not_call_and_call, 'Aspect::Pointcut::And' );
# Does match_all find only the second method?
is_deeply(
[ $not_call_and_call->match_all ],
[ 'One::two' ],
'->match_all works as expected',
);
# Create the runtime-curried pointcut
my $curried = $not_call_and_call->curry_runtime;
is( $curried, undef, 'A call-only pointcut curries away to nothing' );
######################################################################
# Regression: Nested logic and nested call and run-time
# Combining nested logic with a mix of call and non-call pointcuts
( run in 0.838 second using v1.01-cache-2.11-cpan-0a987023a57 )