NAME¶
Path::Dispatcher::Rule::Under - rules under a predicate
SYNOPSIS¶
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");
DESCRIPTION¶
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.
ATTRIBUTES¶
predicate¶
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.
rules¶
A list of rules that will be try to be matched only if the predicate is
matched.