use Mojolicious::Controller; use Mojolicious::Routes; use Mojolicious::Routes::Match; # Routes my $r = Mojolicious::Routes->new; $r->get('/:controller/:action'); $r->put('/:controller/:action'); # Match my $c = Mojolicious::Controller->new; my $match = Mojolicious::Routes::Match->new(root => $r); $match->find($c => {method => 'PUT', path => '/foo/bar'}); say $match->stack->[0]{controller}; say $match->stack->[0]{action}; # Render say $match->path_for->{path}; say $match->path_for(action => 'baz')->{path};
my $route = $match->endpoint; $match = $match->endpoint(Mojolicious::Routes::Route->new);
The route endpoint that matched, usually a Mojolicious::Routes::Route object.
my $position = $match->position; $match = $match->position(2);
Current position on the ``stack'', defaults to 0.
my $root = $match->root; $match = $match->root(Mojolicious::Routes->new);
The root of the route structure, usually a Mojolicious::Routes object.
my $stack = $match->stack; $match = $match->stack([{action => 'foo'}, {action => 'bar'}]);
Captured parameters with nesting history.
$match->find(Mojolicious::Controller->new, {method => 'GET', path => '/'});
Match controller and options against ``root'' to find an appropriate ``endpoint''.
my $info = $match->path_for; my $info = $match->path_for(foo => 'bar'); my $info = $match->path_for({foo => 'bar'}); my $info = $match->path_for('named'); my $info = $match->path_for('named', foo => 'bar'); my $info = $match->path_for('named', {foo => 'bar'});
Render matching route with parameters into path.