package LolCatalyst::Lite::Translator;
+use Module::Pluggable::Object;
+
use Moose;
use namespace::clean -except => 'meta';
sub _build_translators {
my ($self) = @_;
- return { LOLCAT => LolCatalyst::Lite::Translator::LOLCAT->new };
+ my $base = __PACKAGE__;
+ my $mp = Module::Pluggable::Object->new(
+ search_path => [ $base ]
+ );
+ my @classes = $mp->plugins;
+ my %translators;
+ foreach my $class (@classes) {
+ Class::MOP::load_class($class);
+ (my $name = $class) =~ s/^\Q${base}::\E//;
+ $translators{$name} = $class->new;
+ }
+ return \%translators;
}
sub translate {
__PACKAGE__->meta->make_immutable;
-package LolCatalyst::Lite::Translator::LOLCAT;
-
-use Moose;
-use Acme::LOLCAT ();
-use namespace::clean -except => 'meta';
-
-sub translate {
- my ($self, $text) = @_;
- return Acme::LOLCAT::translate($text);
-}
-
-__PACKAGE__->meta->make_immutable;
-
1;