Skip to content

Latest commit

 

History

History
84 lines (52 loc) · 2.14 KB

Plugin.md

File metadata and controls

84 lines (52 loc) · 2.14 KB

NAME

OO::Plugin – framework for working with OO plugins.

SYNOPSIS

use OO::Plugin;
use OO::Plugin::Manager;

class Foo is pluggable {
    has $.attr;
    method bar is pluggable {
        return 42;
    }
}

plugin Fubar {
    method a-bar ( $msg ) is plug-around( Foo => 'bar' ) {
        $msg.set-rc( pi ); # Will override &Foo::bar return value and prevent its execution.
    }
}

my $manager = OO::Plugin::Manager.new.initialize;
my $instance = $manager.create( Foo, attr => 'some value' );
say $instance.bar;  # 3.141592653589793

DESCRIPTION

With this framework any application can have highly flexible and extensible plugin subsystem with which plugins would be capable of:

  • method overriding

  • class overriding (inheriting)

  • callbacks

  • asynchronous event handling

The framework also supports:

  • automatic loading of plugins with a predefined namespace

  • managing plugin ordering and dependencies

Not yet supported but planned for the future is plugin compatibility management.

Read more in OO::Plugin::Manual.

EXPORTS

Routines

  • plugin-meta [key = value, ...]>

    Registers plugin meta. Can only be used within plugin body block.

  • plug-last [return-value]

    Cancels current execution chain and optionally sets return value.

  • plug-redo

    Restarts current execution chain.

Classes

PluginMessage and are re-exported from OO::Plugin::Class.

SEE ALSO

OO::Plugin::Manual, OO::Plugin::Manager, OO::Plugin::Class OO::Plugin::Registry

AUTHOR

Vadim Belman vrurg@cpan.org