Update Sizzle
[jquery.git] / build / freq.js
blob0549f6af47a3332c38a32f223f6d48d0ed09e46d
1 #! /usr/bin/env node
3 var fs = require( "fs" );
5 function isEmptyObject( obj ) {
6         for ( var name in obj ) {
7                 return false;
8         }
9         return true;
11 function extend( obj ) {
12         var dest = obj,
13         src = [].slice.call( arguments, 1 );
15         Object.keys( src ).forEach(function( key ) {
16                 var copy = src[ key ];
18                 for ( var prop in copy ) {
19                         dest[ prop ] = copy[ prop ];
20                 }
21         });
23         return dest;
26 function charSort( obj, callback ) {
28         var ordered = [],
29                 table = {},
30                 copied;
32         copied = extend({}, obj );
34         (function order() {
36                 var largest = 0,
37                                 c;
39                 for ( var i in obj ) {
40                         if ( obj[ i ] >= largest ) {
41                                 largest = obj[ i ];
42                                 c = i;
43                         }
44                 }
46                 ordered.push( c );
47                 delete obj[ c ];
49                 if ( !isEmptyObject( obj ) ) {
50                         order();
51                 } else {
52                         ordered.forEach(function( val ) {
53                                 table[ val ] = copied[ val ];
54                         });
56                         callback( table );
57                 }
59         })();
61 function charFrequency( src, callback ) {
62         var obj = {};
64         src.replace(/[^\w]|\d/gi, "").split("").forEach(function( c ) {
65                 obj[ c ] ? ++obj[ c ] : ( obj[ c ] = 1 );
66         });
68         return charSort( obj, callback );
72 charFrequency( fs.readFileSync( "dist/jquery.min.js", "utf8" ), function( obj ) {
73         var chr;
75         for ( chr in obj ) {
76                 console.log( "  " + chr + "   " + obj[ chr ] );
77         }
78 });