[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