@@ -14,37 +14,14 @@ use Slick::Events qw(EVENTS BEFORE_DISPATCH AFTER_DISPATCH);
14
14
use Slick::Database;
15
15
use Slick::Methods qw( METHODS) ;
16
16
use Slick::Route;
17
+ use Slick::Router;
17
18
use Slick::RouteMap;
18
19
use Slick::Util;
19
20
20
- our $VERSION = ' 0.002 ' ;
21
+ our $VERSION = ' 0.003 ' ;
21
22
22
23
with ' Slick::EventHandler' ;
23
-
24
- foreach my $meth ( @{ METHODS() } ) {
25
- Slick::Util::monkey_patch(
26
- __PACKAGE__ ,
27
- $meth => sub {
28
- my ( $self , $route , $callback , $events ) = @_ ;
29
-
30
- my $route_object = Slick::Route-> new(
31
- callback => $callback ,
32
- route => $route
33
- );
34
-
35
- if ($events ) {
36
- foreach my $event ( EVENTS-> @* ) {
37
- $route_object -> on( $event , $_ )
38
- for ( @{ $events -> {$event } } );
39
- }
40
- }
41
-
42
- $self -> handlers-> add( $route_object , $meth );
43
-
44
- return $route_object ;
45
- }
46
- );
47
- }
24
+ with ' Slick::RouteManager' ;
48
25
49
26
has port => (
50
27
is => ' ro' ,
@@ -88,11 +65,6 @@ has dbs => (
88
65
default => sub { return {}; }
89
66
);
90
67
91
- has handlers => (
92
- is => ' rw' ,
93
- default => sub { return Slick::RouteMap-> new; }
94
- );
95
-
96
68
has helpers => (
97
69
is => ' rw' ,
98
70
isa => HashRef,
@@ -126,7 +98,7 @@ sub _dispatch {
126
98
127
99
my $method = lc ( $request -> method );
128
100
129
- for ( @{ $self -> _event_handlers -> { BEFORE_DISPATCH() } } ) {
101
+ for ( @{ $self -> event_handlers -> { BEFORE_DISPATCH() } } ) {
130
102
if ( !$_ -> ( $self , $context ) ) {
131
103
goto DONE;
132
104
}
@@ -144,7 +116,7 @@ sub _dispatch {
144
116
}
145
117
146
118
$_ -> ( $self , $context )
147
- for ( @{ $self -> _event_handlers -> { AFTER_DISPATCH() } } );
119
+ for ( @{ $self -> event_handlers -> { AFTER_DISPATCH() } } );
148
120
149
121
DONE:
150
122
@@ -154,14 +126,6 @@ sub _dispatch {
154
126
return $context -> to_psgi;
155
127
}
156
128
157
- sub BUILD {
158
- my $self = shift ;
159
-
160
- $self -> {_event_handlers } = { map { $_ => [] } EVENTS-> @* };
161
-
162
- return $self ;
163
- }
164
-
165
129
sub helper {
166
130
my ( $self , $name , $helper ) = @_ ;
167
131
@@ -224,6 +188,17 @@ sub run {
224
188
return $self -> server-> run( $self -> app );
225
189
}
226
190
191
+ sub register {
192
+ my $self = shift ;
193
+ my $router = shift ;
194
+
195
+ croak qq{ Router cannot be undef.} unless $router ;
196
+
197
+ $self -> handlers-> merge( $router -> handlers, $router -> event_handlers );
198
+
199
+ return $self ;
200
+ }
201
+
227
202
# This is for users who want to use plackup
228
203
sub app {
229
204
my $self = shift ;
@@ -347,6 +322,14 @@ You can register more Plack middlewares with your application using the L<"middl
347
322
348
323
Converts the L<Slick> application to a PSGI runnable app.
349
324
325
+ =head2 register
326
+
327
+ my $router = Slick::Router->new(base => '/foo');
328
+
329
+ $s->register($router);
330
+
331
+ Registers a L<Slick::Router> to the application. This includes calling C<merge > on the app's L<Slick::RouteMap> .
332
+
350
333
=head2 banner
351
334
352
335
$s->banner;
@@ -473,6 +456,8 @@ Inherited from L<Slick::EventHandler>.
473
456
474
457
=over2
475
458
459
+ =item * L<Slick::Router>
460
+
476
461
=item * L<Slick::Context>
477
462
478
463
=item * L<Slick::Database>
0 commit comments