JavaScript: debugManager( )
/*
BASIC USAGE:
example 1: if(debug()) doSomething();
example 2: debug()? doThis(): doThat();
example 3: var = debug()? debugValue: runtimeValue;
FILTER USAGE:
example 1: if(debug( 'filterName' )) doSomething();
INIT:
example 1: var filters = { filterA:false, filterB:true };
var debug = debugManager( true, false, filters );
USAGE:
var debug = debugManager( true, { error:true, info:false, load:true } );
if ( debug( 'info' ) ) console.log('information message');
*/
var debugManager = (function(){"use strict";
// Properties
var _triggers = {};
// Getters
var _true = function(){ return true; };
var _false = function(){ return false; };
var _lookup = function(trig){"use strict";
if( trig === void(0) ) return false;
if( _triggers[trig] === void(0))
_triggers[trig] = false;
return _triggers[trig];
};
// Constructor
return function(enable){ // enable, enableAll, triggersObj
if( enable !== true )
return _false;
var arg = Array.prototype.slice.call(arguments, 1, 3),
len = ( arg.length <= 2 )? arg.length : 2;
if( len===1 && arg[0] === false )
return _false;
if( !len || arg[0] === true )
return _true;
if( typeof arg[0] !== 'object' )
arg[0] = false;
_triggers = (typeof arg[len-1] === 'object')? arg[len-1] : {};
return _lookup;
};
})();