Provided by: libsub-exporter-formethods-perl_0.100052-1_all bug

NAME

       Sub::Exporter::ForMethods - helper routines for using Sub::Exporter to build methods

VERSION

       version 0.100052

SYNOPSIS

       In an exporting library:

         package Method::Builder;

         use Sub::Exporter::ForMethods qw(method_installer);

         use Sub::Exporter -setup => {
           exports   => [ method => \'_method_generator' ],
           installer => method_installer,
         };

         sub _method_generator {
           my ($self, $name, $arg, $col) = @_;
           return sub { ... };
         };

       In an importing library:

         package Vehicle::Autobot;
         use Method::Builder method => { -as => 'transform' };

DESCRIPTION

       The synopsis section, above, looks almost indistinguishable from any other use of Sub::Exporter, apart
       from the use of "method_installer".  It is nearly indistinguishable in behavior, too.  The only change is
       that subroutines exported from Method::Builder into named slots in Vehicle::Autobot will be wrapped in a
       subroutine called "Vehicle::Autobot::transform".  This will insert a named frame into stack traces to aid
       in debugging.

       More importantly (for the author, anyway), they will not be removed by namespace::autoclean.  This makes
       the following code work:

         package MyLibrary;

         use Math::Trig qw(tan);         # uses Exporter.pm
         use String::Truncate qw(trunc); # uses Sub::Exporter's defaults

         use Sub::Exporter::ForMethods qw(method_installer);
         use Mixin::Linewise { installer => method_installer }, qw(read_file);

         use namespace::autoclean;

         ...

         1;

       After MyLibrary is compiled, "namespace::autoclean" will remove "tan" and "trunc" as foreign
       contaminants, but will leave "read_file" in place.  It will also remove "method_installer", an added win.

EXPORTS

       Sub::Exporter::ForMethods offers only one routine for export, and it may also be called by its full
       package name:

   method_installer
         my $installer = method_installer(\%arg);

       This routine returns an installer suitable for use as the "installer" argument to Sub::Exporter.  It
       updates the "\@to_export" argument to wrap all code that will be installed by name in a named subroutine,
       then passes control to the default Sub::Exporter installer.

       The only argument to "method_installer" is an optional hashref which may contain a single entry for
       "rebless".  If the value for "rebless" is true, when a blessed subroutine is wrapped, the wrapper will be
       blessed into the same package.

AUTHOR

       Ricardo Signes <rjbs@cpan.org>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2015 by Ricardo Signes.

       This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5
       programming language system itself.