Rosetta Code/Rank languages by number of users: Difference between revisions
Content added Content deleted
m (→{{header|zkl}}: removed dead code) |
Thundergnat (talk | contribs) m (→{{header|Perl 6}}: Style tweaks, minor enhancements, update list) |
||
Line 33: | Line 33: | ||
<lang perl6>use HTTP::UserAgent; |
<lang perl6>use HTTP::UserAgent; |
||
use URI::Escape; |
|||
use JSON::Fast; |
use JSON::Fast; |
||
⚫ | |||
⚫ | |||
my $url = 'http://rosettacode.org/mw'; |
|||
my $start-time = now; |
my $start-time = now; |
||
⚫ | |||
my $lang = 1; |
my $lang = 1; |
||
my $rank = 0; |
my $rank = 0; |
||
Line 44: | Line 51: | ||
.say for |
.say for |
||
mediawiki-query( |
mediawiki-query( |
||
$url, 'pages', |
|||
:generator<categorymembers>, |
|||
:gcmtitle<Category:Language users>, |
|||
prop => 'categoryinfo')\ |
|||
:gcmlimit<350>, |
|||
:rawcontinue(), |
|||
:prop<categoryinfo> |
|||
)\ |
|||
.map({ %( count => .<categoryinfo><pages> || 0, |
.map({ %( count => .<categoryinfo><pages> || 0, |
||
Line 65: | Line 76: | ||
sub mediawiki-query ($site, $type, *%query) { |
sub mediawiki-query ($site, $type, *%query) { |
||
my $url = "$site/api.php?" ~ uri-query-string( |
my $url = "$site/api.php?" ~ uri-query-string( |
||
:action<query>, :format<json>, : |
:action<query>, :format<json>, :formatversion<2>, |%query); |
||
my $continue = ''; |
my $continue = ''; |
||
⚫ | |||
gather loop { |
gather loop { |
||
my $response = $client.get("$url&$continue"); |
my $response = $client.get("$url&$continue"); |
||
my $data = from-json($response.content); |
my $data = from-json($response.content); |
||
take $_ for $data.<query>.{$type}.values; |
take $_ for $data.<query>.{$type}.values; |
||
$continue = uri-query-string |($data.<query-continue>{*}».hash.hash or last); |
$continue = uri-query-string |($data.<query-continue>{*}».hash.hash or last); |
||
} |
} |
||
} |
} |
||
sub uri-query-string (*%fields) { |
sub uri-query-string (*%fields) { %fields.map({ "{.key}={uri-escape .value}" }).join("&") }</lang> |
||
%fields.map({ "{.key}={uri-encode .value}" }).join("&") |
|||
} |
|||
sub uri-encode ($str) { |
|||
$str.subst(/<[\x00..\xff]-[a..zA..Z0..9_.~-]>/, *.ord.fmt('%%%02X'), :g) |
|||
}</lang> |
|||
{{out}} |
{{out}} |
||
<pre>========= Generated: 2017-12- |
<pre>========= Generated: 2017-12-23T14:07:11Z ========= |
||
# 1 Rank: 1 with 373 users: C |
# 1 Rank: 1 with 373 users: C |
||
# 2 Rank: 2 with |
# 2 Rank: 2 with 262 users: C++ |
||
# 3 Rank: 3 with |
# 3 Rank: 3 with 258 users: Java |
||
# 4 Rank: 4 with |
# 4 Rank: 4 with 244 users: Python |
||
# 5 Rank: 5 with 228 users: JavaScript |
# 5 Rank: 5 with 228 users: JavaScript |
||
# 6 Rank: 6 with 163 users: PHP |
# 6 Rank: 6 with 163 users: PHP |
||
# 7 Rank: 7 with 162 users: Perl |
# 7 Rank: 7 with 162 users: Perl |
||
# 8 Rank: 8 with 131 users: SQL |
# 8 Rank: 8 with 131 users: SQL |
||
# 9 Rank: 9 with |
# 9 Rank: 9 with 121 users: UNIX Shell |
||
# 10 Rank: 10 with 118 users: BASIC |
# 10 Rank: 10 with 118 users: BASIC |
||
# 11 Rank: 11 with 113 users: C sharp |
# 11 Rank: 11 with 113 users: C sharp |
||
Line 134: | Line 136: | ||
# 44 Rank: 43 T with 27 users: Mathematica |
# 44 Rank: 43 T with 27 users: Mathematica |
||
# 45 Rank: 45 with 25 users: AutoHotkey |
# 45 Rank: 45 with 25 users: AutoHotkey |
||
========= elapsed: 1. |
========= elapsed: 1.89 seconds =========</pre> |
||
=={{header|Stata}}== |
=={{header|Stata}}== |