NAME

Path::Dispatcher::Match - the result of a successful rule match

SYNOPSIS

my $rule = Path::Dispatcher::Rule::Tokens->new(
    tokens => [ 'attack', qr/^\w+$/ ],
    block  => sub {
        my $match = shift;
        attack($match->pos(2))
    },
);

my $match = $rule->match("attack dragon");

# introspection
$match->path                # "attack dragon"
$match->leftover            # empty string (populated with prefix rules)
$match->rule                # $rule
$match->positional_captures # ["attack", "dragon"] (decided by the rule)
$match->pos(1)              # "attack"
$match->pos(2)              # "dragon"

$match->run                 # attack("dragon")

DESCRIPTION

If a Path::Dispatcher::Rule successfully matches a path, it creates one or more Path::Dispatcher::Match objects.

ATTRIBUTES

rule

The Path::Dispatcher::Rule that created this match.

path

The path that the rule matched.

leftover

The rest of the path. This is populated when the rule matches a prefix of the path.

positional_captures

Any positional captures generated by the rule. For example, Path::Dispatcher::Rule::Regex populates this with the capture variables.

named_captures

Any named captures generated by the rule. For example, Path::Dispatcher::Rule::Regex populates this with named captures.

parent

The parent match object, if applicable (which may be set if this match is the child of, for exampl, a Path::Dispatcher::Rule::Under prefix)

METHODS

run

Executes the rule's codeblock with the same arguments.

pos($i)

Returns the $ith positional capture, 1-indexed.