package Web::Dispatch::Node;
use Moo;
with 'Web::Dispatch::ToApp';
for (qw(match run)) {
has "_${_}" => (is => 'ro', required => 1, init_arg => $_);
}
sub call {
my ($self, $env) = @_;
if (my ($env_delta, @match) = $self->_match->($env)) {
($env_delta, $self->_curry(@match));
} else {
()
}
}
sub _curry {
my ($self, @args) = @_;
my $run = $self->_run;
sub { $run->(@args, $_[0]) };
}
1;