On 2015-04-19 07:59 AM, Sawyer X wrote:
> Yanick Champoux and Russell Jenkins have both produces two different
> implementations that resolve our current problems in different ways.
> They are available online.

Mine is at
https://github.com/PerlDancer/Dancer2/compare/master...yanick:plugins-yanick

And Russell's is at
https://github.com/PerlDancer/Dancer2/compare/master...veryrusty:playground/plugins


For additional giggles, here's the commentaries what went with the
disclosure of that branch:

Look first at poc/lib/Dancer2/Plugin/Foo.pm
That's a plugin that use an inner plugin, and export one
keyword (truncate_txt). The API is subject to change, but keywords are
defined via

        sub keywords { @list_of_keywords }

and the list of keywords are expected to be method for that plugin. Note
that the plugin inherit the attributes 'app()' and 'config()'.  Whatever
thing this plugin wants to do to the app, it does in its
`BUILD`.

After, look at poc/lib/poc.pm  That's the main app file.
A plugin can be added via

        use Dancer2::Plugin::Foo ':app';

The ':app' there will cause the plugin to be auto-added to the app (via
$app->with_plugins(...)) and have the keywords exported. If that's not
desired (for example, in testing files), then just doing

        use Dancer2::Plugin::Foo;

will do a regular, boring, non-exporting 'use' of the module.


After that, you can look at lib/Dancer2/Plugin2, which does
the export dance, and lib/Dancer2/Core/App, which has been
augmented by the 'with_plugins' method.


Joy,
`/anick
_______________________________________________
dancer-users mailing list
[email protected]
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users

Reply via email to