From: Matt S Trout Date: Fri, 6 Feb 2009 17:33:22 +0000 (+0000) Subject: refactor translator to driver based system X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2Fcatbook-code.git;a=commitdiff_plain;h=8030498424f1d73611c3f9c0d42c373e157b132c refactor translator to driver based system --- diff --git a/lib/LolCatalyst/Lite/Translator.pm b/lib/LolCatalyst/Lite/Translator.pm index 3aeb7de..3088d8d 100644 --- a/lib/LolCatalyst/Lite/Translator.pm +++ b/lib/LolCatalyst/Lite/Translator.pm @@ -1,6 +1,36 @@ package LolCatalyst::Lite::Translator; use Moose; +use namespace::clean -except => 'meta'; + +has 'default_target' => ( + is => 'ro', isa => 'Str', required => 1, default => 'LOLCAT' +); + +has 'translators' => ( + is => 'ro', isa => 'HashRef', lazy_build => 1 +); + +sub _build_translators { + my ($self) = @_; + return { LOLCAT => LolCatalyst::Lite::Translator::LOLCAT->new }; +} + +sub translate { + my ($self, $text) = @_; + $self->translate_to($self->default_target, $text); +} + +sub translate_to { + my ($self, $target, $text) = @_; + $self->translators->{$target}->translate($text); +} + +__PACKAGE__->meta->make_immutable; + +package LolCatalyst::Lite::Translator::LOLCAT; + +use Moose; use Acme::LOLCAT (); use namespace::clean -except => 'meta';