summary refs log tree commit diff
path: root/lib/Net/HTTP/Console/Role/Plugins.pm
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2010-06-08 15:22:36 +0200
committerfranck cuny <franck@lumberjaph.net>2010-06-08 15:22:36 +0200
commit78fcbf54a4305e1ee6c3a105f91af40c7ea0a62a (patch)
treec4eb6cec29a92076c2f6fc47ca318cbe59f5e0ba /lib/Net/HTTP/Console/Role/Plugins.pm
parentupdate regex; modify http methods; .. (diff)
downloadnet-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.pm38
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;