---
name: "Path::Dispatcher::Declarative"
section: "3pm"
platform: "linux"
package: "libpath-dispatcher-declarative-perl"
version: "0.03-2"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/Path::Dispatcher::Declarative"
---

# Path::Dispatcher::Declarative(3pm)

sugary dispatcher

## 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.
