common: treat exception references as alert parameters
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 14 May 2022 14:35:50 +0000 (16:35 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Wed, 1 Jun 2022 22:11:26 +0000 (00:11 +0200)
Pass on debug messages from (possibly trapped) perl/plp errors.

common.inc.plp
latin.plp

index 24835047706dcb6dace22f0464f9620f4eca1a69..71c5c1379f29aeb82d6d1211ec53dff69740d2cf 100644 (file)
@@ -196,13 +196,20 @@ EOT
 
 BEGIN {
        $PLP::ERROR = sub {
-               my ($text, $html) = @_;
-               warn $text;
+               my ($message, $html) = @_;
+               if (ref $message) {
+                       warn join ': ', @{$message};
+                       $html = shift @{$message};
+               }
+               else {
+                       warn $message;
+                       $message = [];
+               }
                unless ($PLP::sentheaders) {
                        Html({nocache => 1});
                        say '<h1>Page unavailable</h1>';
                }
-               Alert("<strong>Fatal error</strong>: $html.");
+               Alert("Fatal error: $html.", @{$message});
        };
 }
 
index f9453e6b46e4885886576bb3a7a261c6bbdccabe..a86f2ca52390c000618aec6baa1c67dbe9baeba9 100644 (file)
--- a/latin.plp
+++ b/latin.plp
@@ -47,16 +47,15 @@ or <span title="fuck yeah!">'mercan</span>) letters A–Z.
 Also see <a href="/writing">related alphabets</a>
 and <a href="/chars/abc">font comparison</a>.</p>
 
-<div>
-
 <:
 use List::Util qw( pairs );
 
 my @table = do 'writing-latn.inc.pl';
-if ($! or $@) {
-       Alert("Table data not found", $@ || $!);
+if ($! or $@ or !@table) {
+       die ["Table data not found", $@ || $!];
 }
 else {
+       say '<div>';
        say '<style>';
        for my $row (pairs @table) {
                my ($id, $info) = @{$row};
@@ -109,11 +108,10 @@ else {
                        say;
                }
        }
-       say "</table>\n";
+       say "</table></div>";
 }
 
-:></div>
-
+:>
 <script type="text/javascript" src="/latinsample.js"></script>
 <script type="text/javascript"><!--
        prependinput(document.getElementById('intro'));