From 7df1338f58d10c01cf8f742832b57b2736dbf301 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 7 Aug 2013 20:26:51 -0400 Subject: convert the plugin base class --- lib/Reply/Plugin.pm | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/lib/Reply/Plugin.pm b/lib/Reply/Plugin.pm index 2c06e8e..d9d7cb3 100644 --- a/lib/Reply/Plugin.pm +++ b/lib/Reply/Plugin.pm @@ -1,8 +1,10 @@ -package Reply::Plugin; +package main; use strict; use warnings; # ABSTRACT: base class for Reply plugins +use mop; + use Reply::Util 'methods'; =head1 SYNOPSIS @@ -168,16 +170,8 @@ messages you want to communicate. =cut -sub new { - my $class = shift; - my (%opts) = @_; - - die "publisher is required" unless $opts{publisher}; - - return bless { - publisher => $opts{publisher}, - }, $class; -} +class Reply::Plugin is sealed, instance('HASH') { + has $publisher = die "publisher is required"; =method publish ($name, @args) @@ -187,11 +181,9 @@ the parameters. Returns a list of everything that each plugin responded with. =cut -sub publish { - my $self = shift; - - $self->{publisher}->(@_); -} + method publish ($method, @args) { + $publisher->($method, @args); + } =method commands @@ -202,10 +194,9 @@ session. =cut -sub commands { - my $self = shift; - - return map { s/^command_//; $_ } grep { /^command_/ } methods($self); + method commands { + map { s/^command_//; $_ } grep { /^command_/ } methods($self); + } } =for Pod::Coverage -- cgit v1.2.3