diff options
-rw-r--r-- | lib/Bot/Games/Game.pm | 2 | ||||
-rw-r--r-- | lib/Bot/Games/Game/24.pm | 2 | ||||
-rw-r--r-- | lib/Bot/Games/Game/Ghost.pm | 2 | ||||
-rw-r--r-- | lib/Bot/Games/Game/Spook.pm | 2 | ||||
-rw-r--r-- | lib/Bot/Games/Game/Superghost.pm | 2 | ||||
-rw-r--r-- | lib/Bot/Games/Game/Xghost.pm | 2 | ||||
-rw-r--r-- | lib/Bot/Games/OO.pm | 35 | ||||
-rw-r--r-- | lib/Bot/Games/OO/Game.pm | 47 |
8 files changed, 56 insertions, 38 deletions
diff --git a/lib/Bot/Games/Game.pm b/lib/Bot/Games/Game.pm index 80e5506..7d82ce3 100644 --- a/lib/Bot/Games/Game.pm +++ b/lib/Bot/Games/Game.pm @@ -1,5 +1,5 @@ package Bot::Games::Game; -use Bot::Games::OO; +use Bot::Games::OO::Game; use DateTime; has help => ( diff --git a/lib/Bot/Games/Game/24.pm b/lib/Bot/Games/Game/24.pm index 8dc2b80..e8790f4 100644 --- a/lib/Bot/Games/Game/24.pm +++ b/lib/Bot/Games/Game/24.pm @@ -1,5 +1,5 @@ package Bot::Games::Game::24; -use Bot::Games::OO; +use Bot::Games::OO::Game; extends 'Bot::Games::Game'; use List::Util qw/shuffle/; diff --git a/lib/Bot/Games/Game/Ghost.pm b/lib/Bot/Games/Game/Ghost.pm index 4751506..1c8f9f7 100644 --- a/lib/Bot/Games/Game/Ghost.pm +++ b/lib/Bot/Games/Game/Ghost.pm @@ -1,5 +1,5 @@ package Bot::Games::Game::Ghost; -use Bot::Games::OO; +use Bot::Games::OO::Game; use Games::Word::Wordlist; extends 'Bot::Games::Game'; diff --git a/lib/Bot/Games/Game/Spook.pm b/lib/Bot/Games/Game/Spook.pm index 46fd9e9..58faa56 100644 --- a/lib/Bot/Games/Game/Spook.pm +++ b/lib/Bot/Games/Game/Spook.pm @@ -1,5 +1,5 @@ package Bot::Games::Game::Spook; -use Bot::Games::OO; +use Bot::Games::OO::Game; use Games::Word qw/is_subpermutation/; extends 'Bot::Games::Game::Ghost'; diff --git a/lib/Bot/Games/Game/Superghost.pm b/lib/Bot/Games/Game/Superghost.pm index dc8cc7e..d346571 100644 --- a/lib/Bot/Games/Game/Superghost.pm +++ b/lib/Bot/Games/Game/Superghost.pm @@ -1,5 +1,5 @@ package Bot::Games::Game::Superghost; -use Bot::Games::OO; +use Bot::Games::OO::Game; extends 'Bot::Games::Game::Ghost'; has '+help' => ( diff --git a/lib/Bot/Games/Game/Xghost.pm b/lib/Bot/Games/Game/Xghost.pm index 5777b36..956b048 100644 --- a/lib/Bot/Games/Game/Xghost.pm +++ b/lib/Bot/Games/Game/Xghost.pm @@ -1,5 +1,5 @@ package Bot::Games::Game::Xghost; -use Bot::Games::OO; +use Bot::Games::OO::Game; use Games::Word qw/is_substring/; extends 'Bot::Games::Game::Ghost'; diff --git a/lib/Bot/Games/OO.pm b/lib/Bot/Games/OO.pm index 146a721..177af74 100644 --- a/lib/Bot/Games/OO.pm +++ b/lib/Bot/Games/OO.pm @@ -4,35 +4,8 @@ use MooseX::AttributeHelpers; use Moose::Exporter; use Moose::Util::MetaRole; -sub command { - my $class = shift; - my ($name, $code, %args) = @_; - my $method_meta = $class->meta->get_method($name); - my $superclass = Moose::blessed($method_meta) || 'Moose::Meta::Method'; - my $method_metaclass = Moose::Meta::Class->create_anon_class( - superclasses => [$superclass], - roles => ['Bot::Games::Meta::Role::Command'], - cache => 1, - ); - if ($method_meta) { - $method_metaclass->rebless_instance($method_meta); - } - else { - $method_meta = $method_metaclass->name->wrap( - $code, - package_name => $class, - name => $name, - ); - $class->meta->add_method($name, $method_meta); - } - for my $attr (Bot::Games::Meta::Role::Command->meta->get_attribute_list) { - $method_meta->$attr($args{$attr}) if exists $args{$attr}; - } -} - Moose::Exporter->setup_import_methods( - with_caller => ['command'], - also => ['Moose'], + also => ['Moose'], ); sub init_meta { @@ -40,10 +13,8 @@ sub init_meta { my %options = @_; Moose->init_meta(%options); Moose::Util::MetaRole::apply_metaclass_roles( - for_class => $options{for_class}, - attribute_metaclass_roles => ['Bot::Games::Meta::Role::Attribute'], - metaclass_roles => ['Bot::Games::Meta::Role::Class', - 'MooseX::NonMoose::Meta::Role::Class'], + for_class => $options{for_class}, + metaclass_roles => ['MooseX::NonMoose::Meta::Role::Class'], constructor_metaclass_roles => ['MooseX::NonMoose::Meta::Role::Constructor'], ); diff --git a/lib/Bot/Games/OO/Game.pm b/lib/Bot/Games/OO/Game.pm new file mode 100644 index 0000000..b95b33a --- /dev/null +++ b/lib/Bot/Games/OO/Game.pm @@ -0,0 +1,47 @@ +package Bot::Games::OO::Game; +use Bot::Games::OO (); + +sub command { + my $class = shift; + my ($name, $code, %args) = @_; + my $method_meta = $class->meta->get_method($name); + my $superclass = Moose::blessed($method_meta) || 'Moose::Meta::Method'; + my $method_metaclass = Moose::Meta::Class->create_anon_class( + superclasses => [$superclass], + roles => ['Bot::Games::Meta::Role::Command'], + cache => 1, + ); + if ($method_meta) { + $method_metaclass->rebless_instance($method_meta); + } + else { + $method_meta = $method_metaclass->name->wrap( + $code, + package_name => $class, + name => $name, + ); + $class->meta->add_method($name, $method_meta); + } + for my $attr (Bot::Games::Meta::Role::Command->meta->get_attribute_list) { + $method_meta->$attr($args{$attr}) if exists $args{$attr}; + } +} + +Moose::Exporter->setup_import_methods( + with_caller => ['command'], + also => ['Bot::Games::OO'], +); + +sub init_meta { + shift; + my %options = @_; + Moose->init_meta(%options); + Moose::Util::MetaRole::apply_metaclass_roles( + for_class => $options{for_class}, + attribute_metaclass_roles => ['Bot::Games::Meta::Role::Attribute'], + metaclass_roles => ['Bot::Games::Meta::Role::Class'], + ); + return $options{for_class}->meta; +} + +1; |