NAME
Syntax::Feature::Sugar::Callbacks - Add sugar for declarative method callbacks
VERSION
version 0.001
SYNOPSIS
use AnythingExportingMethodModifiers;
use syntax 'sugar/callbacks' => {
-callbacks => {
after => {},
before => {},
around => { -before => ['$orig'] },
},
};
after foo ($n) { $self->something($n) }
before bar ($n) { $self->something($n) }
around baz ($n) { $self->something($self->$orig($n)) }
DESCRIPTION
You probably won't use this extension directly. That's why it doesn't even have an import
method. Its main reasoning is the ability to provide on-the-fly sugar for method declarators, most commonly before
, after
and around
. This extension will directly dispatch to the original subroutine, and requires these to be setup before-hand. Currently, all callbacks will first receive the name of the declared method, followed by the code reference.
Note that no cleanup of the original handlers will be performed. This is up to the exporting library or the user.
METHODS
install
$class->install( %arguments )
Called by syntax (or others) to install this extension into a namespace.
SYNTAX
All declarations must currently be in one of the forms
<keyword> <name> (<signature>) { <body> }
<keyword> <name> { <body> }
The keyword
is the name of the declared callback. The name
can either be an identifier like you'd give to sub
, or a double-quoted string if you want the name to be dynamic:
after "$name" ($arg) { ... }
The signature, if specified, should be in one of the following forms:
($foo)
($foo, $bar)
($class:)
($class: $foo, $bar)
Variables before :
will be used as replacement for the invocant. Parameters specified via -before
and -middle
will always be included.
The statement will automatically terminate after the block. The return value will be whatever the original callback returns.
You can supply subroutine attributes right before the block.
OPTIONS
-invocant
Defaults to $self
, but you might want to change this for very specialized classes.
-callbacks
This is the set of callbacks that should be setup. It should be a hash reference using callback names as keys and hash references of options as values. Possible per-callback options are -before
and -middle
. The -before
option is an array reference of parameters that come before the invocant. -middle
declares parameters going after the invocants, but before the parameters specified in the signature.
SEE ALSO
BUGS
Please report any bugs or feature requests to bug-syntax-feature-sugar-callbacks@rt.cpan.org or through the web interface at: http://rt.cpan.org/Public/Dist/Display.html?Name=Syntax-Feature-Sugar-Callbacks
AUTHOR
Robert 'phaylon' Sedlacek <rs@474.at>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Robert 'phaylon' Sedlacek.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.