diff options
author | franck cuny <franck@lumberjaph.net> | 2010-06-08 15:22:36 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-06-08 15:22:36 +0200 |
commit | 78fcbf54a4305e1ee6c3a105f91af40c7ea0a62a (patch) | |
tree | c4eb6cec29a92076c2f6fc47ca318cbe59f5e0ba /lib/Net/HTTP/Console/Role/Plugins.pm | |
parent | update regex; modify http methods; .. (diff) | |
download | net-http-console-78fcbf54a4305e1ee6c3a105f91af40c7ea0a62a.tar.gz |
switch to MX::Declare; rename some roles and dispatcher
Diffstat (limited to 'lib/Net/HTTP/Console/Role/Plugins.pm')
-rw-r--r-- | lib/Net/HTTP/Console/Role/Plugins.pm | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/Net/HTTP/Console/Role/Plugins.pm b/lib/Net/HTTP/Console/Role/Plugins.pm new file mode 100644 index 0000000..a3136f2 --- /dev/null +++ b/lib/Net/HTTP/Console/Role/Plugins.pm @@ -0,0 +1,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; |