Parcourir la source

allow routing modules to have templated generic pages

George Baugh il y a 5 mois
Parent
commit
599ba77db5
1 fichiers modifiés avec 14 ajouts et 1 suppressions
  1. 14 1
      lib/TPSGI.pm

+ 14 - 1
lib/TPSGI.pm

@@ -89,6 +89,8 @@ my $ct = 'Content-type';
 #memoize
 my $rq;
 
+my $generic_handler;
+
 sub request_id {
     my ( $self, $regenerate ) = @_;
     return $self->{uuid} if $self->{uuid} && !$regenerate;
@@ -252,6 +254,9 @@ sub new {
                 $self->DEBUG("aliased route $al to $pkg_aliases->{$al}");
             }
             @aliases{ keys(%$pkg_aliases) } = values(%$pkg_aliases);
+
+			# First-come first-served error template overrides
+			$generic_handler = "$package\:\:generic_route";
         }
         else {
             die "Could not load $route!\n$@\n";
@@ -426,7 +431,15 @@ sub _range {
 }
 
 sub _generic {
-    my ( $type, $code ) = @_;
+    my ( $type, $code, $query ) = @_;
+
+	if ($generic_handler) {
+		my $rname = "/$code";
+		my $title = $type;
+		no strict 'refs';
+		return $generic_handler->( $rname, $code, $title, $query);
+	}
+
     $type .= Carp::longmess() if $debug;
     return [ $code, [ $ct => $content_types{html} ], ["$type"] ];
 }