common: postpone html head until output using PLP_START
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 21 Apr 2018 15:33:09 +0000 (17:33 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Sat, 21 Apr 2018 16:29:28 +0000 (18:29 +0200)
Depend on upcoming PLP v3.25 feature to send headers after Html().

common.inc.plp

index e3316fc439a00246e5454d0f64194b3a1fb460a6..9b61d52b4416a9c75d1fa74157e758b43c35b4f1 100644 (file)
@@ -132,36 +132,38 @@ sub Html {
                '<script type="text/javascript" src="/keys.js?1.6" async></script>',
        ) if $meta->{keys};
 
-       # leading output
-       say '<!DOCTYPE html>';
-       say '<html lang="en">';
-       say '';
-       say '<head>';
-       say sprintf '<meta http-equiv="content-type" content="%s">', $_
-               for $header{content_type};
-       say sprintf '<title>%s</title>', $meta->{title};
-       say sprintf '<meta name="description" content="%s">', EscapeHTML($_)
-               for join(' ', @{ $meta->{description} }) || ();
-       say sprintf '<meta name="keywords" content="%s">', EscapeHTML($_)
-               for join(', ', @{ $meta->{keywords} }) || ();
-       say '<meta name="viewport" content="width=device-width, initial-scale=1">';
-       say '<link rel="icon" type="image/png" href="/clip.png">';
-       say for map { @{$_} } $meta->{raw} || ();
-       say '<meta name="robots" content="noindex">' if $Dev;
-       say '</head>';
-       say '';
-       say sprintf '<body id="%s">', $file;
-
-       # development version indicator
-       printf '<p style="%s">beta</p>', join('; ',
-               'position: fixed',
-               'right: 1em',
-               'opacity: .5',
-               'border: 1ex solid red',
-               'border-width: 1ex 0',
-               'z-index: 1',
-               'background: inherit',
-       ) if $Dev;
+       PLP_START {
+               # leading output
+               say '<!DOCTYPE html>';
+               say '<html lang="en">';
+               say '';
+               say '<head>';
+               say sprintf '<meta http-equiv="content-type" content="%s">', $_
+                       for $header{content_type};
+               say sprintf '<title>%s</title>', $meta->{title};
+               say sprintf '<meta name="description" content="%s">', EscapeHTML($_)
+                       for join(' ', @{ $meta->{description} }) || ();
+               say sprintf '<meta name="keywords" content="%s">', EscapeHTML($_)
+                       for join(', ', @{ $meta->{keywords} }) || ();
+               say '<meta name="viewport" content="width=device-width, initial-scale=1">';
+               say '<link rel="icon" type="image/png" href="/clip.png">';
+               say for map { @{$_} } $meta->{raw} || ();
+               say '<meta name="robots" content="noindex">' if $Dev;
+               say '</head>';
+               say '';
+               say sprintf '<body id="%s">', $file;
+
+               # development version indicator
+               printf '<p style="%s">beta</p>', join('; ',
+                       'position: fixed',
+                       'right: 1em',
+                       'opacity: .5',
+                       'border: 1ex solid red',
+                       'border-width: 1ex 0',
+                       'z-index: 1',
+                       'background: inherit',
+               ) if $Dev;
+       };
 
        # prepare trailing output
        PLP_END {