NAME
CatalystX::Syntax::Action - Semantically meaningful Catalyst Actions with signatures
SYNOPSIS
package
MyApp::Web::Controller::Foo;
use
Moose;
use
namespace::autoclean;
action my_action(
$arg
) : Path(
'my_special_action'
) Args(1)
{
$ctx
->response->body('Look ma,
no
"my ($self, $ctx, $arg) = @_;"
}
__PACKAGE__->meta->make_immutable;
DESCRIPTION
This module uses a bit of lightweight Devel::Declare magic to add a new keyword into your Catalyst::Controller called action
. It works just like Method::Signatures::Simple, except it also shift
s off the context
argument, saving you a bit of boilerplate. Additionally you might find that calling an action 'action' more meaningfully separates it visually from methods in your Catalyst::Controller that are normal methods.
On the other hand, it might break some IDE highlighting and so forth. Buyer beware.
The test suite has a working example of this for your review.
CAVEATS
When using Moose style method modifiers you'll need to drop back to using 'classic' Perl subroutine syntax, or something like Function::Parameters since method modifiers change the incoming arguments. So for example:
action myaction :path(
'foo'
) Args(1) { ... }
Would need to be modified (as say in a ControllerRole) using:
This is because we can't detect the fact that $orig
as the first argument is a coderef to the modified method rather than a blessed reference to an instance of Catalyst::Controller. If you are attached to the method signatures in your code you could use Function::Parameters:
use syntax
You can use the alternative syntax module to activate this extention. This would allow you to easily and cleanly enable multiple extenstions. For example:
package
MyApp::Web::Controller::Root;
use
Moose;
action myaction { ... }
method mymethod { ...}
__PACKAGE__->meta->make_immutable;
THANKS
I basically just copied the known working code in Method::Signatures::Simple to make this. I also pretty much copied Syntax::Feature::Method. My thanks to the authors and maintainers of those modules. I wouldn't have such a decent low version offering without that stuff to guide me.
AUTHOR
John Napiorkowski email:jjnapiork@cpan.org
SEE ALSO
Catalyst, Method::Signatures::Simple, syntax, Devel::Declare, Syntax::Feature::Method.
COPYRIGHT & LICENSE
Copyright 2011, John Napiorkowski email:jjnapiork@cpan.org
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.