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 & LICENSE¶
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.