From bd77795ed44d7b642c66b05e0982bff026fdc68f Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sun, 5 Dec 2010 17:33:08 +0100 Subject: [PATCH] browser: support new caniuse data --- browser.plp | 11 ++++++++--- tools/convert-caniuse.pl | 8 ++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/browser.plp b/browser.plp index 75605fd..ea23d0a 100644 --- a/browser.plp +++ b/browser.plp @@ -109,6 +109,7 @@ sub featurescore { if (my $row = shift) { if ($canihas) { while (my ($browser, $versions) = each %$row) { + ref $versions eq 'HASH' or next; while (my ($version, $_) = each %$versions) { $rank += $canihas->{$browser}->{$version} * $statspts->{$_}; } @@ -151,7 +152,7 @@ for my $id (sort { $row->{description}, $row->{notes}; printf 'Resources: %s.', join(', ', map { qq($_->{title}) } @$_ - ) for $row->{links} // (); + ) for grep { @$_ } $row->{links} // (); print ''; for ($row->{status}) { my $cell = $_ // '-'; @@ -163,11 +164,15 @@ for my $id (sort { my ($prev, @span); for my $ver (@{ $versions{$browser} }, undef) { unless (!defined $prev - or $data->{$browser}->{$prev} ~~ $data->{$browser}->{$ver}) { + or ref $data->{$browser} eq 'HASH' + && $data->{$browser}->{$prev} ~~ $data->{$browser}->{$ver}) { my $usage = sum(map { $canihas->{$browser}->{$_} } @span); printf '%s', join(' ', - X => $CSTATS{ $data->{$browser}->{$prev} }, + X => $CSTATS{ + ref $data->{$browser} ne 'HASH' ? 'u' : + $data->{$browser}->{$prev} // 'u' + }, !$usage ? ('p0') : ('p', sprintf('p%01d', $usage / 10), sprintf('p%02d', $usage), diff --git a/tools/convert-caniuse.pl b/tools/convert-caniuse.pl index 7006b18..467b9ba 100755 --- a/tools/convert-caniuse.pl +++ b/tools/convert-caniuse.pl @@ -12,14 +12,14 @@ my $source = readline; for ($source) { # cleanup # convert seperate variables to hash keys - s/\A/{/; - s/^caniuse\.(\w+) = /"$1":/gm; + s/\A/{\n/; + s/^caniuse\.(\w+) *= */"$1":/gm; s/;$/,/gm; s/,\s*\Z/\n}/; # fractions not supported by barekey - s/(?<=[,{]) (\d*\.\d) (?=:')/"$1"/gx; + s/(?<=[,{\n]) (\d*\.\d) (?=:['"])/"$1"/gx; # escapes not supported in singlequote - s{'((?:[^\\']+|\\.)*)'}{ + s{: *\K'((?:[^\\']+|\\.)*)'}{ my $_ = $1; s/"/\\"/g; s/\\'/'/g; -- 2.30.0