36 lines
1.0 KiB
JavaScript
36 lines
1.0 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var enabled = require('enabled');
|
||
|
|
||
|
/**
|
||
|
* Bare minimum browser version of diagnostics. It doesn't need fancy pancy
|
||
|
* detection algorithms. The code is only enabled when *you* enable it for
|
||
|
* debugging purposes.
|
||
|
*
|
||
|
* @param {String} name Namespace of the diagnostics instance.
|
||
|
* @returns {Function} The logger.
|
||
|
* @api public
|
||
|
*/
|
||
|
module.exports = function factory(name) {
|
||
|
if (!enabled(name)) return function diagnopes() {};
|
||
|
|
||
|
return function diagnostics() {
|
||
|
var args = Array.prototype.slice.call(arguments, 0);
|
||
|
|
||
|
//
|
||
|
// We cannot push a value as first argument of the argument array as
|
||
|
// console's formatting %s, %d only works on the first argument it receives.
|
||
|
// So in order to prepend our namespace we need to override and prefix the
|
||
|
// first argument.
|
||
|
//
|
||
|
args[0] = name +': '+ args[0];
|
||
|
|
||
|
//
|
||
|
// So yea. IE8 doesn't have an apply so we need a work around to puke the
|
||
|
// arguments in place.
|
||
|
//
|
||
|
try { Function.prototype.apply.call(console.log, console, args); }
|
||
|
catch (e) {}
|
||
|
};
|
||
|
};
|