mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
80 lines
1.2 KiB
JavaScript
80 lines
1.2 KiB
JavaScript
|
#! /usr/bin/env node
|
||
|
|
||
|
var fs = require( "fs" );
|
||
|
|
||
|
function isEmptyObject( obj ) {
|
||
|
for ( var name in obj ) {
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
function extend( obj ) {
|
||
|
var dest = obj,
|
||
|
src = [].slice.call( arguments, 1 );
|
||
|
|
||
|
Object.keys( src ).forEach(function( key ) {
|
||
|
var copy = src[ key ];
|
||
|
|
||
|
for ( var prop in copy ) {
|
||
|
dest[ prop ] = copy[ prop ];
|
||
|
}
|
||
|
});
|
||
|
|
||
|
return dest;
|
||
|
};
|
||
|
|
||
|
function charSort( obj, callback ) {
|
||
|
|
||
|
var ordered = [],
|
||
|
table = {},
|
||
|
copied;
|
||
|
|
||
|
copied = extend({}, obj );
|
||
|
|
||
|
(function order() {
|
||
|
|
||
|
var largest = 0,
|
||
|
c;
|
||
|
|
||
|
for ( var i in obj ) {
|
||
|
if ( obj[ i ] >= largest ) {
|
||
|
largest = obj[ i ];
|
||
|
c = i;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ordered.push( c );
|
||
|
delete obj[ c ];
|
||
|
|
||
|
if ( !isEmptyObject( obj ) ) {
|
||
|
order();
|
||
|
} else {
|
||
|
ordered.forEach(function( val ) {
|
||
|
table[ val ] = copied[ val ];
|
||
|
});
|
||
|
|
||
|
callback( table );
|
||
|
}
|
||
|
|
||
|
})();
|
||
|
}
|
||
|
function charFrequency( src, callback ) {
|
||
|
var obj = {};
|
||
|
|
||
|
src.replace(/[^\w]|\d/gi, "").split("").forEach(function( c ) {
|
||
|
obj[ c ] ? ++obj[ c ] : ( obj[ c ] = 1 );
|
||
|
});
|
||
|
|
||
|
return charSort( obj, callback );
|
||
|
}
|
||
|
|
||
|
|
||
|
charFrequency( fs.readFileSync( "dist/jquery.min.js", "utf8" ), function( obj ) {
|
||
|
var chr;
|
||
|
|
||
|
for ( chr in obj ) {
|
||
|
console.log( " " + chr + " " + obj[ chr ] );
|
||
|
}
|
||
|
});
|
||
|
|