Path::Dispatcher::Declarative.3pm

Langue: en

Version: 2010-03-16 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Path::Dispatcher::Declarative - sugary dispatcher

SYNOPSIS

     package MyApp::Dispatcher;
     use Path::Dispatcher::Declarative -base;
 
     on score => sub { show_score() };
 
     on ['wield', qr/^\w+$/] => sub { wield_weapon($2) };
 
     rewrite qr/^inv/ => "display inventory";
 
     under display => sub {
         on inventory => sub { show_inventory() };
         on score     => sub { show_score() };
     };
 
     package Interpreter;
     MyApp::Dispatcher->run($input);
 
 

DESCRIPTION

Jifty::Dispatcher rocks!

KEYWORDS

dispatcher -> Dispatcher

Returns the Path::Dispatcher object for this class; the object that the sugar is modifying. This is useful for adding custom rules through the regular API, and inspection.

dispatch path -> Dispatch

Invokes the dispatcher on the given path and returns a Path::Dispatcher::Dispatch object. Acts as a keyword within the same package; otherwise as a method (since these declarative dispatchers are supposed to be used by other packages).

run path, args

Performs a dispatch then invokes the ``run'' in Path::Dispatcher::Dispatch method on it.

on path => sub {}

Adds a rule to the dispatcher for the given path. The path may be:
a string
This is taken to mean a single token; creates an Path::Dispatcher::Rule::Tokens rule.
an array reference
This is creates a Path::Dispatcher::Rule::Tokens rule.
a regular expression
This is creates a Path::Dispatcher::Rule::Regex rule.
a code reference
This is creates a Path::Dispatcher::Rule::CodeRef rule.

under path => sub {}

Creates a Path::Dispatcher::Rule::Under rule. The contents of the coderef should be nothing other ``on'' and "under" calls.

then sub { }

Creates a Path::Dispatcher::Rule::Always rule that will continue on to the next rule via "next_rule"

The only argument is a coderef that processes normally (like on).

NOTE: You *can* avoid running a following rule by using "last_rule".

An example:

     under show => sub {
         then {
             print "Displaying ";
         };
         on inventory => sub {
             print "inventory:\n";
             ...
         };
         on score => sub {
             print "score:\n";
             ...
         };
 
 

AUTHOR

Shawn M Moore, "<sartak at bestpractical.com>"

BUGS

Please report any bugs or feature requests to "bug-path-dispatcher-declarative at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Path-Dispatcher-Declarative>. Copyright 2008-2010 Best Practical Solutions.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.