File Coverage

blib/lib/CatalystX/ASP/Role.pm
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1             package CatalystX::ASP::Role;
2              
3 1     1   1304117 use Moose::Role;
  1         1  
  1         8  
4              
5             =head1 NAME
6              
7             CatalystX::ASP::Role - Catalyst Role to plug-in the ASP View
8              
9             =head1 SYNOPSIS
10              
11             package MyApp;
12              
13             use Moose;
14             use Catalyst;
15             extends 'Catalyst';
16              
17             with 'CatalystX::ASP::Role';
18              
19             =head1 DESCRIPTION
20              
21             Compose this role in your main application class. This will inject the ASP View
22             as View component in your app called 'ASP', accessible via
23             C<< $c->view('ASP') >>. It will also add a C<DispatchType> which will direct all
24             requests with C<.asp> extension to the View.
25              
26             =head1 METHODS
27              
28             =over
29              
30             =item before 'setup_components'
31              
32             Inject C<CatalystX::ASP::View> component as a View for your app
33              
34             =cut
35              
36             # Inject our View
37             before 'setup_components' => sub {
38             my $class = shift;
39              
40             $class->inject_components(
41             'View::ASP' => {
42             from_component => 'CatalystX::ASP::View',
43             }
44             );
45              
46             };
47              
48             # Load ASP object and Global objects during setup
49             after 'setup_components' => sub {
50             my $class = shift;
51              
52             my $asp = CatalystX::ASP->new(
53             %{ $class->config->{'CatalystX::ASP'} },
54             c => $class,
55             _setup_finished => 0,
56             );
57             $class->view( 'ASP' )->asp( $asp );
58             };
59              
60             # Keep own copy of setup_finished
61             before 'setup_finalize' => sub {
62             my ( $class ) = @_;
63              
64             my $asp = $class->view( 'ASP' )->asp;
65             $asp->cleanup;
66             $asp->_setup_finished( 1 );
67             };
68              
69             =item after 'setup_dispatcher'
70              
71             Load C<CatalystX::ASP::Dispatcher> as a C<DispatchType> for your app
72              
73             =cut
74              
75             # Register our DispatchType
76             after 'setup_dispatcher' => sub {
77             my $c = shift;
78              
79             # Add our dispatcher
80             push @{ $c->dispatcher->preload_dispatch_types }, '+CatalystX::ASP::Dispatcher';
81             };
82              
83 1     1   3749 no Moose::Role;
  1         2  
  1         4  
84              
85             1;
86              
87             =back
88              
89             =head1 SEE ALSO
90              
91             =over
92              
93             =item * L<CatalystX::ASP::View>
94              
95             =item * L<CatalystX::ASP::Dispatcher>
96              
97             =back