From ee0258b8dd7f70267b52c3275fa52d596621171a Mon Sep 17 00:00:00 2001 From: doy Date: Mon, 26 Jan 2009 00:12:36 -0500 Subject: allow abbreviations and aliases for game names --- lib/Bot/Games.pm | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'lib/Bot/Games.pm') diff --git a/lib/Bot/Games.pm b/lib/Bot/Games.pm index 52be3a9..36544fc 100644 --- a/lib/Bot/Games.pm +++ b/lib/Bot/Games.pm @@ -34,6 +34,15 @@ has done_init => ( default => sub { {} }, ); +has alias => ( + is => 'ro', + isa => 'HashRef[Str]', + default => sub { { + sg => 'superghost', + xg => 'xghost', + } }, +); + my $say; my $say_args; @@ -67,7 +76,8 @@ sub said { $game_name =~ s/^-//; $action = '-help'; } - return unless $self->valid_game($game_name); + $game_name = $self->find_game($game_name); + return unless $game_name; my $output; my $game = $self->active_games->{$game_name}; @@ -137,6 +147,18 @@ sub game_list { $self->games; } +sub find_game { + my $self = shift; + my ($abbrev) = @_; + return $abbrev if $self->valid_game($abbrev); + return $self->alias->{$abbrev} + if exists $self->alias->{$abbrev} + && $self->valid_game($self->alias->{$abbrev}); + my @possibilities = grep { /^$abbrev/ } $self->game_list; + return $possibilities[0] if @possibilities == 1; + return; +} + sub _format { my $self = shift; my ($to_print) = @_; -- cgit v1.2.3-54-g00ecf