Its main responsibilities are to include the role 'Mason::Plugin' and document itself. It may also specify a requires_plugins that returns a list of dependencies with the same syntax as the plugins parameter to Mason-new>.

The real action is in the role classes, which live underneath, and each modify a single Mason class:

When a plugin is applied, each of its roles will be automatically applied to the appropriate Mason class. For example, in the example above Mason::Plugin::MyPlugin::Interp and Mason::Plugin::MyPlugin::Compilation will be applied to Mason::Interp and Mason::Compilation respectively.

Pluggable Mason classes

As of this writing the following Mason classes can be modified with plugins: