| File: | lib/Railsish/Router.pm |
| Coverage: | 81.6% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | package Railsish::Router; | ||||||
| 2 | 1 1 1 | 75 5 11 | use Moose; | ||||
| 3 | |||||||
| 4 | 1 1 1 | 103 5 15 | use Path::Router; | ||||
| 5 | |||||||
| 6 | has "router" => ( | ||||||
| 7 | is => "rw", | ||||||
| 8 | isa => "Path::Router", | ||||||
| 9 | lazy_build => 1, | ||||||
| 10 | ); | ||||||
| 11 | |||||||
| 12 | sub _build_router { | ||||||
| 13 | 1 | 87 | my ($self) = @_; | ||||
| 14 | 1 | 10 | return Path::Router->new; | ||||
| 15 | } | ||||||
| 16 | |||||||
| 17 | my $APP_ROUTER; | ||||||
| 18 | |||||||
| 19 | sub connect { | ||||||
| 20 | 2 | 0 | 19 | my ($self, $urlish, @vars) = @_; | |||
| 21 | 2 | 16 | $self = $APP_ROUTER unless ref($self); | ||||
| 22 | |||||||
| 23 | 2 | 14 | $self->router->add_route( | ||||
| 24 | $urlish => ( | ||||||
| 25 | defaults => { @vars } | ||||||
| 26 | ) | ||||||
| 27 | ); | ||||||
| 28 | } | ||||||
| 29 | |||||||
| 30 | sub match { | ||||||
| 31 | 2 | 0 | 16 | my ($self, $uri) = @_; | |||
| 32 | 2 | 15 | $self = $APP_ROUTER unless ref($self); | ||||
| 33 | |||||||
| 34 | 2 | 14 | $self->router->match($uri) | ||||
| 35 | } | ||||||
| 36 | |||||||
| 37 | sub uri_for { | ||||||
| 38 | 1 | 0 | 6 | my $self = shift; | |||
| 39 | 1 | 8 | $self = $APP_ROUTER unless ref($self); | ||||
| 40 | |||||||
| 41 | 1 | 7 | $self->router->uri_for(@_); | ||||
| 42 | } | ||||||
| 43 | |||||||
| 44 | # this one should be invoked like: Railsish::Router->draw; | ||||||
| 45 | sub draw { | ||||||
| 46 | 1 | 0 | 7 | my ($class, $cb) = @_; | |||
| 47 | 1 | 11 | $APP_ROUTER = $class->new; | ||||
| 48 | 1 | 75 | $cb->($APP_ROUTER); | ||||
| 49 | |||||||
| 50 | 1 | 93 | return $APP_ROUTER; | ||||
| 51 | } | ||||||
| 52 | |||||||
| 53 | __PACKAGE__->meta->make_immutable; | ||||||
| 54 | |||||||
| 55 | 1; | ||||||