refactor translator to driver based system
[catagits/catbook-code.git] / lib / LolCatalyst / Lite / Translator.pm
CommitLineData
bc61dfc2 1package LolCatalyst::Lite::Translator;
2
3use Moose;
80304984 4use namespace::clean -except => 'meta';
5
6has 'default_target' => (
7 is => 'ro', isa => 'Str', required => 1, default => 'LOLCAT'
8);
9
10has 'translators' => (
11 is => 'ro', isa => 'HashRef', lazy_build => 1
12);
13
14sub _build_translators {
15 my ($self) = @_;
16 return { LOLCAT => LolCatalyst::Lite::Translator::LOLCAT->new };
17}
18
19sub translate {
20 my ($self, $text) = @_;
21 $self->translate_to($self->default_target, $text);
22}
23
24sub translate_to {
25 my ($self, $target, $text) = @_;
26 $self->translators->{$target}->translate($text);
27}
28
29__PACKAGE__->meta->make_immutable;
30
31package LolCatalyst::Lite::Translator::LOLCAT;
32
33use Moose;
bc61dfc2 34use Acme::LOLCAT ();
35use namespace::clean -except => 'meta';
36
37sub translate {
38 my ($self, $text) = @_;
39 return Acme::LOLCAT::translate($text);
40}
41
42__PACKAGE__->meta->make_immutable;
43
441;