Provided by: libcatmandu-perl_1.0700-1_all bug

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