perl: grid columns only on sectioned dls
[sheet.git] / perl.plp
index 99863ff4ed625fed79754b1f543c885174ad92aa..02d034869ae7f7ee89c0c9aa8cc3ae30f014df75 100644 (file)
--- a/perl.plp
+++ b/perl.plp
@@ -32,9 +32,13 @@ eval {
        use Time::Piece;
        use Time::Seconds;
 
-       my @versions = sort keys %{$info};
        my $now = Time::Piece->new;
-       $now = $now->strptime($_, '%Y-%m-%d') for $get{at} // ();
+       if (my $ts = $get{at}) {
+               $now = $now->strptime($ts, '%Y-%m-%d');
+               say "Compatibility details emulated for <em>$ts</em>.";
+       }
+       my $ts = $now->strftime('%F');
+       my @versions = sort grep { $info->{$_}{release} le $ts } keys %{$info};
 
        # perlpolicy: «We "officially" support the two most recent stable release
        # series. [...] we will attempt to fix critical issues»
@@ -96,15 +100,18 @@ for my $vernum (reverse sort keys %{$info}) {
                        if ($attr->{experimental}) {
                                $title = sprintf '<span title="experimental::%s">%s</span>',
                                        $attr->{experimental}, $title;
+                               $attr->{name} //= $attr->{experimental};
                        }
                        if ($attr->{feature}) {
                                my $prefix = sprintf '<span title="%s">feature</span>',
                                        $attr->{feature};
                                $title = join ', ', $prefix, $title // ();
+                               $attr->{name} //= $attr->{feature};
                        }
-                       $desc .= sprintf ' <em class="ex">(%s)</em>', $title;
+                       $desc .= sprintf ' <em class="ex">(%s)</em>', $title if $title;
                }
-               say sprintf '<dt>%s<dd>%s', $topic, $desc || '<br/>';
+               my $ref = defined $attr->{name} && sprintf ' id="%s"', $attr->{name};
+               say sprintf '<dt%s>%s<dd>%s', $ref, $topic, $desc || '<br/>';
        }
        say sprintf '<dt>Unicode</dt><dd>v%s', $_ for $verrow->{unicode} || ();
        say '</dl>';