Catmandu::Pluggable(3) A role for classes that need plugin capabilities

SYNOPSIS


package My::Foo::Bar;
use Role::Tiny;
before foo => sub {
print "Before foo!\n";
};
after foo => sub {
print "After foo!\n";
};
sub extra {
print "I can do extra too\n";
}
package My::Foo;
use Moo;
with 'Catmandu::Pluggable';
sub plugin_namespace {
'My::Foo';
}
sub foo {
print "Foo!\n";
}
package main;
my $x = My::Foo->with_plugins('Bar')->new;
# prints:
# Before foo!
# Foo!
# After foo!
$x->foo;
# prints:
# I can do extra too
$x->extra;

METHODS

plugin_namespace

Returns the namespace where all plugins for your class can be found.

with_plugins(NAME)

with_plugins(NAME,NAME,...)

This class method returns a subclass of your class with all provided plugins NAME-s implemented.