From 72ea018ebf9e31f8249a43f2b0aeb57b6facb6e3 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 30 Oct 2009 00:41:28 -0500 Subject: refactor the exporters a bit --- lib/IM/Engine/Plugin/Commands/OO.pm | 33 +++++++++++++------------------- lib/IM/Engine/Plugin/Commands/OO/Role.pm | 26 +++++++------------------ 2 files changed, 20 insertions(+), 39 deletions(-) (limited to 'lib') 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; -- cgit v1.2.3-54-g00ecf