fix up code to 404
Matt S Trout [Sat, 7 Mar 2009 21:12:42 +0000 (16:12 -0500)]
lib/LolCatalyst/Lite/Controller/Translate.pm
lib/LolCatalyst/Lite/Snippet.pm
lib/LolCatalyst/Lite/Translator.pm

index 749b3ac..b9f7eb1 100644 (file)
@@ -37,6 +37,9 @@ sub view :Chained('object') :PathPart('') :Args(0) {
 sub translate_to :Chained('object') :PathPart('to') :Args(1) {
   my ($self, $c, $to) = @_;
   my $object = $c->stash->{object};
+  unless ($object->can_translate_to($to)) {
+    $c->detach('/error_404');
+  }
   $c->stash(
     result => $object->translated_to($to)
   );
index abccf30..5beefcd 100644 (file)
@@ -5,7 +5,10 @@ use namespace::clean -except => 'meta';
 
 has 'id' => (is => 'ro', required => 1);
 has 'text' => (is => 'ro', required => 1);
-has '_translator' => (is => 'ro', required => 1, init_arg => 'translator');
+has '_translator' => (
+  is => 'ro', required => 1, init_arg => 'translator',
+  handles => [ 'can_translate_to' ],
+);
 
 sub translated {
   my ($self) = @_;
index 05122a1..8832943 100644 (file)
@@ -38,6 +38,11 @@ sub translate {
   $self->translate_to($self->default_target, $text);
 }
 
+sub can_translate_to {
+  my ($self, $target) = @_;
+  return exists $self->_translators->{$target};
+}
+
 sub translate_to {
   my ($self, $target, $text) = @_;
   $self->_translators->{$target}->translate($text);