charset: omit unassigned half of ascii table
[sheet.git] / common.inc.plp
index 0a010d24170790cb592b18782c4787144129313f..31c2c2270b71e209a20cf885fe0363ad623066e6 100644 (file)
@@ -8,10 +8,21 @@ use open ':std' => ':utf8';
 
 use File::stat 'stat';
 use HTTP::Date;
+use Encode qw( decode_utf8 );
+
+sub Alert {
+       my ($html, $debug) = @_;
+       ref $html eq 'ARRAY' or $html = [$html];
+       my ($title, @lines) = @{$html};
+       $body = "<h2>$title</h2>";
+       $body .= "\n<p>$_</p>" for @lines;
+       $body .= "\n<pre>$debug</pre>" if $Dev and $debug;
+       say "<div class=error>$body</div>\n";
+}
 
 $PLP::ERROR = sub {
        my ($text, $html) = @_;
-       print '<p class="error"><strong>Fatal error</strong>: '.$html."</p>\n\n";
+       Alert("<strong>Fatal error</strong>: $html.");
        warn $text;
 };
 
@@ -23,7 +34,7 @@ BEGIN {
 # user request
 our $Dev = $ENV{HTTP_HOST} =~ /\bdev\./;
 our ($file) = $ENV{SCRIPT_FILENAME} =~ m{ ([^/]+) \.plp$ }x;
-our $Request = $ENV{PATH_INFO} =~ s{^/}{}r;
+our $Request = decode_utf8($ENV{PATH_INFO} =~ s{^/}{}r);
 
 our $style;
 our $showkeys = !exists $get{keys} ? undef :
@@ -148,7 +159,7 @@ sub Html {
        <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html" rel="license copyright"
         title="Licensed under the GNU Affero General Public License, version 3">AGPLv3</a>
 EOT
-               say sprintf '• %.3fs', Time::HiRes::tv_interval($Time) if $Dev;
+               say sprintf '• %.3fs', Time::HiRes::tv_interval($Time) if $Dev and $Time;
                say '</p>';
                say '';
                say '</html>';