console-shim.js
function(args)
    {
        var i, max, match, log;
        
        // Convert argument list to real array
        args = Array.prototype.slice.call(arguments, 0);
        
        // First argument is the log method to call
        log = args.shift();
        
        max = args.length;
        if (max > 1 && window["__consoleShimTest__"] !== false)
        {
            // When first parameter is not a string then add a format string to
            // the argument list so we are able to modify it in the next stop
            if (typeof(args[0]) != "string")
            {
                args.unshift("%o");
                max += 1;
            }
            
            // For each additional parameter which has no placeholder in the
            // format string we add another placeholder separated with a
            // space character.
            match = args[0].match(/%[a-z]/g);
            for (i = match ? match.length + 1 : 1; i < max; i += 1)
            {
                args[0] += " %o";
            }
        }
        Function.apply.call(log, console, args);
    }
function(args)
    {
        var i, max, match, log;
        
        // Convert argument list to real array
        args = Array.prototype.slice.call(arguments, 0);
        
        // First argument is the log method to call
        log = args.shift();
        
        max = args.length;
        if (max > 1 && window["__consoleShimTest__"] !== false)
        {
            // When first parameter is not a string then add a format string to
            // the argument list so we are able to modify it in the next stop
            if (typeof(args[0]) != "string")
            {
                args.unshift("%o");
                max += 1;
            }
            
            // For each additional parameter which has no placeholder in the
            // format string we add another placeholder separated with a
            // space character.
            match = args[0].match(/%[a-z]/g);
            for (i = match ? match.length + 1 : 1; i < max; i += 1)
            {
                args[0] += " %o";
            }
        }
        Function.apply.call(log, console, args);
    }
function ( args ) { var i , max , match , log ; // Convert argument list to real array args = Array . prototype . slice . call ( arguments , 0 ) ; // First argument is the log method to call log = args . shift ( ) ; max = args . length ; if ( max > 1 && window [ "__consoleShimTest__" ] !== false ) { // When first parameter is not a string then add a format string to // the argument list so we are able to modify it in the next stop if ( typeof ( args [ 0 ] ) != "string" ) { args . unshift ( "%o" ) ; max += 1 ; } // For each additional parameter which has no placeholder in the // format string we add another placeholder separated with a // space character. match = args [ 0 ] . match ( / %[a-z] / g ) ; for ( i = match ? match . length + 1 : 1 ; i < max ; i += 1 ) { args [ 0 ] += " %o" ; } } Function . apply . call ( log , console , args ) ; }
Wraps the call to a real IE logging method. Modifies the arguments so
parameters which are not represented by a placeholder are properly
printed with a space character as separator.

@param {...*} args
The function arguments. First argument is the log function
to call, the other arguments are the log arguments.
Wraps the call to a real IE logging method . Modifies the arguments so parameters which are not represented by a placeholder are properly printed with a space character as separator .