require('MediaWiki::API') var api = %O.new( Hash(api_url => 'http://rosettacode.org/mw/api.php') ) var languages = [] var gcmcontinue loop { var apih = api.api( Hash( action => 'query', generator => 'categorymembers', gcmtitle => 'Category:Programming Languages', gcmlimit => 250, prop => 'categoryinfo', gcmcontinue => gcmcontinue, ) ) languages.append(apih{:query}{:pages}.values...) gcmcontinue = apih{:continue}{:gcmcontinue} gcmcontinue || break } languages.each { |lang| lang{:title} -= /^Category:/ lang{:categoryinfo}{:size} := 0 } var sorted_languages = languages.sort_by { |lang| -lang{:categoryinfo}{:size} } sorted_languages.each_kv { |i, lang| printf("%3d. %20s - %3d\n", i+1, lang{:title}, lang{:categoryinfo}{:size}) }