Path::Dispatcher::Rule::Under - rules under a predicate
my $ticket = Path::Dispatcher::Rule::Tokens->new(
tokens => [ 'ticket' ],
prefix => 1,
);
my $create = Path::Dispatcher::Rule::Tokens->new(
tokens => [ 'create' ],
block => sub { create_ticket() },
);
my $delete = Path::Dispatcher::Rule::Tokens->new(
tokens => [ 'delete', qr/^\d+$/ ],
block => sub { delete_ticket(shift->pos(2)) },
);
my $rule = Path::Dispatcher::Rule::Under->new(
predicate => $ticket,
rules => [ $create, $delete ],
);
$rule->match("ticket create");
$rule->match("ticket delete 3");
Rules of this class have two-phase matching: if the predicate is matched, then
the contained rules are matched. The benefit of this is less repetition of the
predicate, both in terms of code and in matching it.
A rule (which must match prefixes) whose match determines whether the
contained rules are considered. The leftover path of the predicate is used as
the path for the contained rules.
A list of rules that will be try to be matched only if the predicate is matched.
Bugs may be submitted through the RT bug tracker
<https://rt.cpan.org/Public/Dist/Display.html?Name=Path-Dispatcher> (or
bug-Path-Dispatcher@rt.cpan.org
<mailto:bug-Path-Dispatcher@rt.cpan.org>).
Shawn M Moore, "<sartak at
bestpractical.com>"
This software is copyright (c) 2020 by Shawn M Moore.
This is free software; you can redistribute it and/or modify it
under the same terms as the Perl 5 programming language system itself.