// all npm authors sorted by number of repos | |
var fs = require('fs') | |
, clarinet = require('../clarinet') | |
, parse_stream = clarinet.createStream() | |
, author = false | |
, authors = {} | |
; | |
parse_stream.on('openobject', function(name) { | |
if(name==='author') author=true; | |
}); | |
parse_stream.on('key', function(name) { | |
if(name==='author') author=true; | |
}); | |
parse_stream.on('end', function () { | |
var sorted = [] | |
, i | |
; | |
for (var a in authors) | |
sorted.push([a, authors[a]]); | |
sorted.sort(function(a, b) { return a[1] - b[1]; }); | |
i = sorted.length-1; | |
while(i!==-1) { | |
console.log(sorted.length-i, sorted[i]); | |
i--; | |
} | |
}); | |
parse_stream.on('value', function(value) { | |
if(author) { | |
var current_count = authors[value]; | |
if (current_count) authors[value] +=1; | |
else authors[value] = 1; | |
author=false; | |
} | |
}); | |
fs.createReadStream(__dirname + '/npm.json').pipe(parse_stream); |