[cgiapp] RFC: declarative run modes (inspired by
Method::Signatures)
Jason A. Crome
cromedome at gmail.com
Tue Sep 23 20:56:29 EDT 2008
I was thinking that it would be cool just to use Method::Signatures
with CGI::App, and I was also considering giving CAP::AutoRunmode a
whirl, but this..... this is cool enough to wait for ;)
Does this play nicely with CAP::Authen and CAP::Authz? (ie, will
anything requiring sub attributes still work?)
Don't forget to make an errormode declaration either.
Great idea!!!!
Jason
On Sep 23, 2008, at 6:21 PM, Rhesa Rozendaal wrote:
> Hi all,
>
> Thanks to Schwern's recent work on Method::Signatures, something
> clicked with me. It looks like Devel::Declare (dangerous as it is)
> allows for very pretty syntactic sugar, without relying on source
> filters.
>
>
> Inspired by Method::Signatures, I've been hacking on something
> specifically for use with cgiapp.
>
> package My::App;
>
> use base 'CGI::Application';
> use Runmode::Declare; # proof-of-concept name
>
> startmode hello { "Hello" }
> runmode world { $self->hello . ", World!" }
>
> Most of the time, you won't need to call setup() anymore, because
> this takes care of setting the start/run modes for you.
> Obviously, it checks that you only have one startmode. And it all
> works fine with inheritance too.
>
>
> Using signatures:
>
> # script?rm=invite;party_id=42;names=larry;names=guido;names=matz
>
> runmode invite($party_id, @names) {
> my $party = party_from_id($party_id);
> $party->add_invitees(@names);
> }
>
> # somewhere else:
> $self->invite( 36, qw(me myself I) );
>
> This pulls the named parameters from @_, or $self->query->param, or
> $self->param.
>
>
> Rename the methods (probably silly, but it was easy and fun to try):
>
> use Runmode::Declare runmode => 'screen', startmode => 'splash';
>
> splash hello { "Hello" }
> screen world { "World!" }
>
>
> Is anyone interested in seeing this on CPAN? Or should I just keep
> this to myself, and report back to the asylum? :-)
>
>
> rhesa
>
> ##### CGI::Application community mailing list ################
> ## ##
> ## To unsubscribe, or change your message delivery options, ##
> ## visit: http://lists.openlib.org/mailman/listinfo/cgiapp ##
> ## ##
> ## Web archive: http://lists.openlib.org/pipermail/cgiapp/ ##
> ## Wiki: http://cgiapp.erlbaum.net/ ##
> ## ##
> ################################################################
>
More information about the cgiapp
mailing list