Hey, I've got another branch ready for review. This one makes
Moose::Exporter optionally generate an init_meta method for you, along
with import and unimport. This should make extension writing much
cleaner - what used to look like this:

  package My::Exporter;
  use Moose::Exporter;
  use Moose::Util::MetaRole;

  Moose::Exporter->setup_import_methods;

  sub init_meta {
      shift;
      my %options = @_;

      Moose::Util::MetaRole::apply_metaclass_roles(
          for_class       => $options{for_class},
          metaclass_roles => ['My::Meta::Trait::Class'],
      );
      Moose::Util::MetaRole::apply_base_class_roles(
          for_class => $options{for_class},
          roles     => ['My::Role::Object'],
      );

      return Class::MOP::class_of($options{for_class});
  }

now looks like this:

  package My::Exporter;
  use Moose::Exporter;

  Moose::Exporter->setup_import_methods(
      metaclass_roles  => ['My::Meta::Trait::Class'],
      base_class_roles => ['My::Role::Object'],
  );

There was also another change to Moose::Exporter to make this easier to
deal with - build_import_methods takes an optional parameter of
'install', which is an arrayref of which of 'import', 'unimport', and
'init_meta' to install (so setup_import_methods is just a wrapper around
build_import_methods(install => [qw(import unimport init_meta)])).

Thanks,
-doy

Reply via email to