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; |