$meta->{stylesheet} ||= [qw'light dark circus mono red terse'];
$meta->{charset} ||= 'utf-8';
- ref $_ eq 'ARRAY' or $_ = [$_] for $meta->{raw};
+ # convert options to arrays
+ ref $_ eq 'ARRAY' or $_ = [$_]
+ for grep {$_} $meta->{raw}, $meta->{description}, $meta->{keywords};
# optional amends
push @{ $meta->{raw} }, (
'<script type="text/javascript" src="/keys.js?1.6"></script>',
) if $meta->{keys};
- # flatten arrays
- ref $_ eq 'ARRAY' and $_ = join ' ', @$_ for $meta->{description};
- ref $_ eq 'ARRAY' and $_ = join ', ', @$_ for $meta->{keywords};
- ref $_ eq 'ARRAY' and $_ = join "\n", @$_ for $meta->{raw};
-
# other vars
my $Dev = $ENV{HTTP_HOST} =~ /\bdev\./;
my ($file) = $ENV{SCRIPT_FILENAME} =~ m{ ([^/]+) \.plp$ }x;
<head>
<meta http-equiv="content-type" content="$header{content_type}">
<title>$meta->{title}</title>
-<meta name="description" content="$meta->{description}">
-<meta name="keywords" content="$meta->{keywords}">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="icon" type="image/png" href="/clip.png">
EOT
+ 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 stylesheet($meta->{stylesheet});
- say for $meta->{raw} || ();
+ say for map { @{$_} } $meta->{raw} || ();
say '<meta name="robots" content="noindex">' if $Dev;
say qq{</head>\n\n<body id="$file">};