| Sleep documentation | Contained in the Sleep distribution. |
Sleep::Routes - From URI to classname.
my $routes = Sleep::Routes->new([
{
route => qr{/question(?:/(\d+))?$},
class => 'QA::Question'
},
{
route => qr{/question/(\d+)/comments$},
class => 'QA::Comment'
},
]);
A route should contain at least two entries: route and class. The route is a regular expression
which will be matched to an URL. The class should the name of a subclass of Sleep::Resource which will
work with the arguments.
Returns the first route that matched and the variables from the URL that were parsed from it.
Does the actual check of URL described in resource
If you find a bug, please let the author know.
Copyright (c) 2008 Peter Stuifzand. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Peter Stuifzand <peter@stuifzand.eu>
| Sleep documentation | Contained in the Sleep distribution. |
package Sleep::Routes; use strict; use warnings; sub new { my $klass = shift; my $routes = shift; die "Not an ARRAY" unless ref($routes) eq 'ARRAY'; my $self = bless { routes => $routes, }, $klass; return $self; } sub parse_url { my $self = shift; my $url = shift; for (@{$self->{routes}}) { if (my (@vars) = $url =~ m/$_->{route}/) { return ($_, @vars); } } return; } sub resource { my $self = shift; my $url = shift; my ($route, @vars) = $self->parse_url($url); return ($route, @vars); } 1; __END__