10 stylesheet => [qw'light circus dark red'],
11 data => [qw'codec.inc.pl'],
14 my $info = do 'codec.inc.pl';
15 $info and %{$info} > 1 or Abort("cannot open operator include", 500, $@ // $!);
17 my %BOOLSCORE = (y => 5, n => 1);
22 <table class="mapped">
23 <col><colgroup span=2><colgroup span=2><colgroup span=3>
24 <thead><tr><th rowspan=2>feature
27 $info->{codec}->{$a}->{available} <=> $info->{codec}->{$b}->{available}
28 } keys $info->{codec}->%*;
30 print '<th>', $_->{name} for @{$info->{codec}}{@codecs};
32 print '<td>', $_->{available} for @{$info->{codec}}{@codecs};
36 for my $feat (sort keys %{$info->{feature}}) {
37 my $featinfo = $info->{feature}->{$feat};
38 printf '<tr><th>%s', $featinfo->{name} // $feat;
39 printf('<td class="l%d">%s',
40 (map { $_ && $BOOLSCORE{$_} || $_ || 0 } $featinfo->{score}->{$_}),
41 $featinfo->{data}->{$_} // (map {
42 $BOOLSCORE{$_} ? ($_ eq 'y' ? '✔' : '✘') : '•' x ($_ - 1)
43 } $featinfo->{score}->{$_}),