parent
cc74e26b09
commit
0b8e52e265
273
lib/debug.js
273
lib/debug.js
|
@ -1,273 +0,0 @@
|
|||
/*!
|
||||
* JavaScript Debug - v0.4 - 6/22/2010
|
||||
* http://benalman.com/projects/javascript-debug-console-log/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*
|
||||
* With lots of help from Paul Irish!
|
||||
* http://paulirish.com/
|
||||
*/
|
||||
|
||||
// Script: JavaScript Debug: A simple wrapper for console.log
|
||||
//
|
||||
// *Version: 0.4, Last Updated: 6/22/2010*
|
||||
//
|
||||
// Tested with Internet Explorer 6-8, Firefox 3-3.6, Safari 3-4, Chrome 3-5, Opera 9.6-10.5
|
||||
//
|
||||
// Home - http://benalman.com/projects/javascript-debug-console-log/
|
||||
// GitHub - http://github.com/cowboy/javascript-debug/
|
||||
// Source - http://github.com/cowboy/javascript-debug/raw/master/ba-debug.js
|
||||
// (Minified) - http://github.com/cowboy/javascript-debug/raw/master/ba-debug.min.js (1.1kb)
|
||||
//
|
||||
// About: License
|
||||
//
|
||||
// Copyright (c) 2010 "Cowboy" Ben Alman,
|
||||
// Dual licensed under the MIT and GPL licenses.
|
||||
// http://benalman.com/about/license/
|
||||
//
|
||||
// About: Support and Testing
|
||||
//
|
||||
// Information about what browsers this code has been tested in.
|
||||
//
|
||||
// Browsers Tested - Internet Explorer 6-8, Firefox 3-3.6, Safari 3-4, Chrome
|
||||
// 3-5, Opera 9.6-10.5
|
||||
//
|
||||
// About: Examples
|
||||
//
|
||||
// These working examples, complete with fully commented code, illustrate a few
|
||||
// ways in which this plugin can be used.
|
||||
//
|
||||
// Examples - http://benalman.com/code/projects/javascript-debug/examples/debug/
|
||||
//
|
||||
// About: Revision History
|
||||
//
|
||||
// 0.4 - (6/22/2010) Added missing passthrough methods: exception,
|
||||
// groupCollapsed, table
|
||||
// 0.3 - (6/8/2009) Initial release
|
||||
//
|
||||
// Topic: Pass-through console methods
|
||||
//
|
||||
// assert, clear, count, dir, dirxml, exception, group, groupCollapsed,
|
||||
// groupEnd, profile, profileEnd, table, time, timeEnd, trace
|
||||
//
|
||||
// These console methods are passed through (but only if both the console and
|
||||
// the method exists), so use them without fear of reprisal. Note that these
|
||||
// methods will not be passed through if the logging level is set to 0 via
|
||||
// <debug.setLevel>.
|
||||
(function(define, console) {
|
||||
define(function() { "use strict";
|
||||
// Some convenient shortcuts.
|
||||
var aps = Array.prototype.slice,
|
||||
con = console,
|
||||
|
||||
// Public object to be returned.
|
||||
that = {},
|
||||
|
||||
callback_func,
|
||||
callback_force,
|
||||
|
||||
// Default logging level, show everything.
|
||||
log_level = 9,
|
||||
|
||||
// Logging methods, in "priority order". Not all console implementations
|
||||
// will utilize these, but they will be used in the callback passed to
|
||||
// setCallback.
|
||||
log_methods = [ 'error', 'warn', 'info', 'debug', 'log' ],
|
||||
|
||||
// Pass these methods through to the console if they exist, otherwise just
|
||||
// fail gracefully. These methods are provided for convenience.
|
||||
pass_methods = 'assert clear count dir dirxml exception group groupCollapsed groupEnd profile profileEnd table time timeEnd trace'.split(' '),
|
||||
idx = pass_methods.length,
|
||||
|
||||
// Logs are stored here so that they can be recalled as necessary.
|
||||
logs = [];
|
||||
|
||||
while ( --idx >= 0 ) {
|
||||
(function( method ){
|
||||
|
||||
// Generate pass-through methods. These methods will be called, if they
|
||||
// exist, as long as the logging level is non-zero.
|
||||
that[ method ] = function() {
|
||||
log_level !== 0 && con && con[ method ]
|
||||
&& con[ method ].apply( con, arguments );
|
||||
}
|
||||
|
||||
})( pass_methods[idx] );
|
||||
}
|
||||
|
||||
idx = log_methods.length;
|
||||
while ( --idx >= 0 ) {
|
||||
(function( idx, level ){
|
||||
|
||||
// Method: debug.log
|
||||
//
|
||||
// Call the console.log method if available. Adds an entry into the logs
|
||||
// array for a callback specified via <debug.setCallback>.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// debug.log( object [, object, ...] ); - -
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// object - (Object) Any valid JavaScript object.
|
||||
|
||||
// Method: debug.debug
|
||||
//
|
||||
// Call the console.debug method if available, otherwise call console.log.
|
||||
// Adds an entry into the logs array for a callback specified via
|
||||
// <debug.setCallback>.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// debug.debug( object [, object, ...] ); - -
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// object - (Object) Any valid JavaScript object.
|
||||
|
||||
// Method: debug.info
|
||||
//
|
||||
// Call the console.info method if available, otherwise call console.log.
|
||||
// Adds an entry into the logs array for a callback specified via
|
||||
// <debug.setCallback>.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// debug.info( object [, object, ...] ); - -
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// object - (Object) Any valid JavaScript object.
|
||||
|
||||
// Method: debug.warn
|
||||
//
|
||||
// Call the console.warn method if available, otherwise call console.log.
|
||||
// Adds an entry into the logs array for a callback specified via
|
||||
// <debug.setCallback>.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// debug.warn( object [, object, ...] ); - -
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// object - (Object) Any valid JavaScript object.
|
||||
|
||||
// Method: debug.error
|
||||
//
|
||||
// Call the console.error method if available, otherwise call console.log.
|
||||
// Adds an entry into the logs array for a callback specified via
|
||||
// <debug.setCallback>.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// debug.error( object [, object, ...] ); - -
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// object - (Object) Any valid JavaScript object.
|
||||
|
||||
that[ level ] = function() {
|
||||
var args = aps.call( arguments ),
|
||||
log_arr = [ level ].concat( args );
|
||||
|
||||
logs.push( log_arr );
|
||||
exec_callback( log_arr );
|
||||
|
||||
if ( !con || !is_level( idx ) ) { return; }
|
||||
|
||||
con.firebug ? con[ level ].apply( window, args )
|
||||
: con[ level ] ? con[ level ].apply( window, args )
|
||||
: con.log.apply( window, args );
|
||||
};
|
||||
|
||||
})( idx, log_methods[idx] );
|
||||
}
|
||||
|
||||
// Execute the callback function if set.
|
||||
function exec_callback( args ) {
|
||||
if ( callback_func && (callback_force || !con || !con.log) ) {
|
||||
callback_func.apply( window, args );
|
||||
}
|
||||
};
|
||||
|
||||
// Method: debug.setLevel
|
||||
//
|
||||
// Set a minimum or maximum logging level for the console. Doesn't affect
|
||||
// the <debug.setCallback> callback function, but if set to 0 to disable
|
||||
// logging, <Pass-through console methods> will be disabled as well.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// debug.setLevel( [ level ] ) - -
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// level - (Number) If 0, disables logging. If negative, shows N lowest
|
||||
// priority levels of log messages. If positive, shows N highest priority
|
||||
// levels of log messages.
|
||||
//
|
||||
// Priority levels:
|
||||
//
|
||||
// log (1) < debug (2) < info (3) < warn (4) < error (5)
|
||||
|
||||
that.setLevel = function( level ) {
|
||||
log_level = typeof level === 'number' ? level : 9;
|
||||
};
|
||||
|
||||
// Determine if the level is visible given the current log_level.
|
||||
function is_level( level ) {
|
||||
return log_level > 0
|
||||
? log_level > level
|
||||
: log_methods.length + log_level <= level;
|
||||
};
|
||||
|
||||
// Method: debug.setCallback
|
||||
//
|
||||
// Set a callback to be used if logging isn't possible due to console.log
|
||||
// not existing. If unlogged logs exist when callback is set, they will all
|
||||
// be logged immediately unless a limit is specified.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// debug.setCallback( callback [, force ] [, limit ] )
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// callback - (Function) The aforementioned callback function. The first
|
||||
// argument is the logging level, and all subsequent arguments are those
|
||||
// passed to the initial debug logging method.
|
||||
// force - (Boolean) If false, log to console.log if available, otherwise
|
||||
// callback. If true, log to both console.log and callback.
|
||||
// limit - (Number) If specified, number of lines to limit initial scrollback
|
||||
// to.
|
||||
|
||||
that.setCallback = function() {
|
||||
var args = aps.call( arguments ),
|
||||
max = logs.length,
|
||||
i = max;
|
||||
|
||||
callback_func = args.shift() || null;
|
||||
callback_force = typeof args[0] === 'boolean' ? args.shift() : false;
|
||||
|
||||
i -= typeof args[0] === 'number' ? args.shift() : max;
|
||||
|
||||
while ( i < max ) {
|
||||
exec_callback( logs[i++] );
|
||||
}
|
||||
};
|
||||
|
||||
return that;
|
||||
});
|
||||
})(typeof define == 'function'
|
||||
? define
|
||||
: function (factory) { typeof exports != 'undefined'
|
||||
? (module.exports = factory())
|
||||
: (this.when = factory());
|
||||
},
|
||||
window.console
|
||||
// Boilerplate for AMD, Node, and browser global
|
||||
);
|
Loading…
Reference in New Issue