summary refs log tree commit diff
path: root/lib/Net/HTTP/Console/Role/Plugins.pm
blob: a3136f22b983905a68a20fa74864201c03b0b0b0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package Net::HTTP::Console::Role::Plugins;

use MooseX::Declare;

role Net::HTTP::Console::Role::Plugins {

    has dispatchers => (
        is         => 'rw',
        isa        => 'ArrayRef[Str]',
        traits     => ['Array'],
        lazy       => 1,
        auto_deref => 1,
        default    => sub {
            [qw/Load HTTP Help Method Set/],
        }
    );

    has plugins => (
        traits  => ['Array'],
        is      => 'rw',
        isa     => 'ArrayRef[Object]',
        lazy    => 1,
        handles => {all_plugins => 'elements', add_plugin => 'push'},
        default => sub {
            my $self = shift;
            my @p;
            for ($self->dispatchers) {
                my $p = "Net::HTTP::Console::Dispatcher::" . $_;
                Class::MOP::load_class($p);
                my $o = $p->new(application => $self);
                push @p, $o;
            }
            \@p;
        },
    );
}

1;