summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2009-10-30 00:41:28 -0500
committerJesse Luehrs <doy@tozt.net>2009-10-30 00:41:28 -0500
commit72ea018ebf9e31f8249a43f2b0aeb57b6facb6e3 (patch)
tree2a4dccdc5c854ea6cb599194ebb661e87ab0b6ed /lib
parent510d4b7e8680eac30f55c154624e0899d91c72cb (diff)
downloadim-engine-plugin-commands-72ea018ebf9e31f8249a43f2b0aeb57b6facb6e3.tar.gz
im-engine-plugin-commands-72ea018ebf9e31f8249a43f2b0aeb57b6facb6e3.zip
refactor the exporters a bit
Diffstat (limited to 'lib')
-rw-r--r--lib/IM/Engine/Plugin/Commands/OO.pm33
-rw-r--r--lib/IM/Engine/Plugin/Commands/OO/Role.pm26
2 files changed, 20 insertions, 39 deletions
diff --git a/lib/IM/Engine/Plugin/Commands/OO.pm b/lib/IM/Engine/Plugin/Commands/OO.pm
index 581582c..0d7753a 100644
--- a/lib/IM/Engine/Plugin/Commands/OO.pm
+++ b/lib/IM/Engine/Plugin/Commands/OO.pm
@@ -1,7 +1,6 @@
package IM::Engine::Plugin::Commands::OO;
use Moose ();
use Moose::Exporter;
-use Moose::Util::MetaRole;
use Scalar::Util qw(blessed reftype);
sub command {
@@ -44,31 +43,25 @@ sub command {
}
}
-Moose::Exporter->setup_import_methods(
+my ($import, $unimport, $init_meta) = Moose::Exporter->setup_import_methods(
with_caller => ['command'],
also => ['Moose'],
+ install => [qw(import unimport)],
+ attribute_metaclass_roles =>
+ ['IM::Engine::Plugin::Commands::Trait::Attribute::Command',
+ 'IM::Engine::Plugin::Commands::Trait::Attribute::Formatted'],
+ metaclass_roles =>
+ ['IM::Engine::Plugin::Commands::Trait::Class::Command',
+ 'IM::Engine::Plugin::Commands::Trait::Class::Formatted'],
);
sub init_meta {
- shift;
- my %options = @_;
+ my ($package, %options) = @_;
Moose->init_meta(%options);
- Moose::Util::MetaRole::apply_metaclass_roles(
- for_class =>
- $options{for_class},
- attribute_metaclass_roles =>
- ['IM::Engine::Plugin::Commands::Trait::Attribute::Command',
- 'IM::Engine::Plugin::Commands::Trait::Attribute::Formatted'],
- metaclass_roles =>
- ['IM::Engine::Plugin::Commands::Trait::Class::Command',
- 'IM::Engine::Plugin::Commands::Trait::Class::Formatted'],
- );
- my $meta = Class::MOP::class_of($options{for_class});
- my @supers = $meta->superclasses;
- $meta->superclasses('IM::Engine::Plugin::Commands::Command')
- if @supers == 1 && $supers[0] eq 'Moose::Object'
- && $options{for_class} ne 'IM::Engine::Plugin::Commands::Command';
- return $meta;
+ Class::MOP::class_of($options{for_class})->superclasses(
+ 'IM::Engine::Plugin::Commands::Command'
+ ) if $options{for_class} ne 'IM::Engine::Plugin::Commands::Command';
+ goto $init_meta;
}
1;
diff --git a/lib/IM/Engine/Plugin/Commands/OO/Role.pm b/lib/IM/Engine/Plugin/Commands/OO/Role.pm
index 674392a..a1586c0 100644
--- a/lib/IM/Engine/Plugin/Commands/OO/Role.pm
+++ b/lib/IM/Engine/Plugin/Commands/OO/Role.pm
@@ -1,31 +1,19 @@
package IM::Engine::Plugin::Commands::OO::Role;
use Moose::Role ();
use Moose::Exporter;
-use Moose::Util::MetaRole;
# XXX: ick
*command = \&IM::Engine::Plugin::Commands::OO::command;
Moose::Exporter->setup_import_methods(
with_caller => ['command'],
also => ['Moose::Role'],
+ # XXX: roles in moose don't have an attribute metaclass yet
+ #attribute_metaclass_roles =>
+ # ['IM::Engine::Plugin::Commands::Trait::Attribute::Command',
+ # 'IM::Engine::Plugin::Commands::Trait::Attribute::Formatted'],
+ metaclass_roles =>
+ ['IM::Engine::Plugin::Commands::Trait::Class::Command',
+ 'IM::Engine::Plugin::Commands::Trait::Class::Formatted'],
);
-sub init_meta {
- shift;
- my %options = @_;
- Moose::Role->init_meta(%options);
- Moose::Util::MetaRole::apply_metaclass_roles(
- for_class =>
- $options{for_class},
- # XXX: roles in moose don't have an attribute metaclass yet
- #attribute_metaclass_roles =>
- #['IM::Engine::Plugin::Commands::Trait::Attribute::Command',
- #'IM::Engine::Plugin::Commands::Trait::Attribute::Formatted'],
- metaclass_roles =>
- ['IM::Engine::Plugin::Commands::Trait::Class::Command',
- 'IM::Engine::Plugin::Commands::Trait::Class::Formatted'],
- );
- return Class::MOP::class_of($options{for_class});
-}
-
1;