endive-util
Version:
utils for endive
124 lines (112 loc) • 3.38 kB
JavaScript
var os = require( 'os' );
var util = require( 'util' );
module.exports.getLocalIPs = function ( family ) {
if ( arguments.length == 0 ) {
family = 'IPv4';
}
var addresses = [];
var interfaces = os.networkInterfaces();
for ( var i in interfaces )
{
interfaces[i].forEach( function ( contents )
{
if ( contents.family == family ) {
addresses.push( contents.address );
}
});
}
return addresses;
};
module.exports.filterObjectsFromArray = function ( array , objects , key ) {
var results = [];
var length = array.length;
var objLength = objects.length;
for ( var i = 0 ; i < length ; i++ )
{
var value = array[i];
for ( var j = 0 ; j < objLength ; j++ )
{
var object = objects[j];
// console.log ( object[key] + ' == ' + value );
if ( object[key] == value )
{
results.push( object );
console.log( 'register : ' + object.host + ':' + object.port + '\n' );
}
}
}
return results;
};
function extractArguments( func ) {
var funcstring = null;
if ( typeof func === 'function' )
{
funcstring = func.toString();
}
else
{
funcstring = func;
}
var begin = funcstring.indexOf( '(' ) + 1;
var end = funcstring.indexOf( ')' , begin ) - 1;
if ( begin < end )
{
var argstring = funcstring.substring( begin , end ).replace( / /g , '' );
var args = argstring.split( ',' );
var length = args.length;
if ( length > 0 )
{
return args;
}
}
return null;
};
module.exports.extractArguments = extractArguments;
module.exports.dynamicCall = function( func , sortedArgs , specificArgs , funcOwner ) {
var funcstring = null;
var defaultCall = true;
var specificArgKeys = Object.keys( specificArgs );
if ( specificArgKeys != null && specificArgKeys.length > 0 )
{
var inputArgs = null;
var args = extractArguments( func );
if ( args != null )
{
inputArgs = [];
defaultCall = false;
var index = 0;
var length = args.length;
for( var i = 0 ; i < length ; i++ )
{
var sIndex = specificArgKeys.indexOf( args[i] );
if( sIndex >= 0 )
{
inputArgs.push( specificArgs[specificArgKeys[sIndex]] );
}
else
{
inputArgs.push( sortedArgs[index] );
index++;
}
}
}
}
if ( defaultCall )
{
inputArgs = sortedArgs;
}
funcOwner = funcOwner || null;
func.apply( funcOwner , inputArgs );
};
module.exports.format = function() {
return util.format.apply( util , arguments );
};
module.exports.log = function() {
util.log( util.format.apply ( util , arguments ) );
};
module.exports.debug = function() {
util.debug( util.format.apply ( util , arguments ) );
};
module.exports.error = function() {
util.error( util.format.apply ( util , arguments ) );
};