package Brickyard::Role::Plugin; use 5.010; use warnings; use strict; use Role::Basic 0.12 allow => 'Brickyard::Accessor'; use Brickyard::Accessor new => 1, rw => [qw(brickyard name)]; sub plugins_with { my ($self, $role) = @_; $self->brickyard->plugins_with($role); } sub normalize_param { my ($self, $param) = @_; return [] unless defined $param; if (wantarray) { return ref $param eq 'ARRAY' ? @$param : $param; } else { return ref $param eq 'ARRAY' ? $param : [ $param ]; } } 1; =head1 NAME Brickyard::Role::Plugin - Role to use for plugins =head1 SYNOPSIS package My::App::Plugin::Foo; use Role::Basic 'with'; with qw(Brickyard Role::Plugin); =head1 METHODS =head2 new Constructs a new object. Takes an optional hash of arguments to initialize the object. =head2 brickyard Read-write accessor for the L<Brickyard> object that created this plugin. =head2 name Read-write accessor for the plugin's name. =head2 plugins_with Delegates to the brickyard object's C<plugins_with()> method. =head2 normalize_param Utility method to get a parameter value. It returns the parameter with the given name so it's ready to be used as a list. It's returned as a list in list context and as a reference to a list in scalar context.