NAME

Catmandu::Pluggable - 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.

SEE ALSO

Catmandu::Bag, Catmandu::Plugin::Datestamps, Catmandu::Plugin::Versioning