summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordoy <doy@tozt.net>2009-04-26 19:15:18 -0500
committerdoy <doy@tozt.net>2009-04-26 19:15:18 -0500
commit39d4781a8db91a1892ffb170117a7e623348ebc3 (patch)
tree3e3c9bdbf47eb43c62e1b3658c7e2ddbc1c5cee7
parentb6b768619fd072d0d92760ba820ba02a8924e5f9 (diff)
downloadbot-games-39d4781a8db91a1892ffb170117a7e623348ebc3.tar.gz
bot-games-39d4781a8db91a1892ffb170117a7e623348ebc3.zip
use a separate exporter package for games
-rw-r--r--lib/Bot/Games/Game.pm2
-rw-r--r--lib/Bot/Games/Game/24.pm2
-rw-r--r--lib/Bot/Games/Game/Ghost.pm2
-rw-r--r--lib/Bot/Games/Game/Spook.pm2
-rw-r--r--lib/Bot/Games/Game/Superghost.pm2
-rw-r--r--lib/Bot/Games/Game/Xghost.pm2
-rw-r--r--lib/Bot/Games/OO.pm35
-rw-r--r--lib/Bot/Games/OO/Game.pm47
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;