108 lines
3 KiB
JavaScript
108 lines
3 KiB
JavaScript
|
var chalk = require('chalk');
|
||
|
var util = require('util');
|
||
|
var logTable = require('./log_table');
|
||
|
var countBuffer = {};
|
||
|
|
||
|
function logWithColor(color, args, isError){
|
||
|
var log = util.format.apply(this, args);
|
||
|
if(isError)
|
||
|
console.error(chalk[color](log));
|
||
|
else
|
||
|
console.log(chalk[color](log));
|
||
|
}
|
||
|
|
||
|
|
||
|
module.exports = {
|
||
|
|
||
|
// Writes a message to the console. You may pass as many arguments as
|
||
|
// you'd like, and they will be joined together in a space-delimited line.
|
||
|
// The first argument to log may be a string containing
|
||
|
// printf-like string substitution patterns.
|
||
|
log: function(){
|
||
|
console.log.apply(this, arguments);
|
||
|
},
|
||
|
|
||
|
// Writes a message to the console with blue color
|
||
|
info: function(){
|
||
|
logWithColor('blue', arguments);
|
||
|
},
|
||
|
|
||
|
// Writes a message to the console with yellow color
|
||
|
warn: function(){
|
||
|
logWithColor('yellow', arguments, true);
|
||
|
},
|
||
|
|
||
|
// Writes a message to the console with red color
|
||
|
error: function(){
|
||
|
logWithColor('red', arguments, true);
|
||
|
},
|
||
|
|
||
|
// Writes a message to the console with regular color
|
||
|
debug: function(){
|
||
|
console.log.apply(this, arguments);
|
||
|
},
|
||
|
|
||
|
// Prints an interactive listing of all properties of the object.
|
||
|
dir: function(){
|
||
|
console.dir.apply(this, arguments);
|
||
|
},
|
||
|
|
||
|
// Clears the terminal buffer
|
||
|
clear: function(){
|
||
|
process.stdout.write('\u001B[2J\u001B[0;0f');
|
||
|
},
|
||
|
|
||
|
// Prints a stack trace of JavaScript execution at the point
|
||
|
// where it is called. The stack trace details the functions on the stack,
|
||
|
// as well as the values that were passed as arguments to each function.
|
||
|
trace: function(){
|
||
|
console.trace.apply(this, arguments);
|
||
|
},
|
||
|
|
||
|
// Does nothing if first argument is truly. If first argument is falsy
|
||
|
// it Writes red warning and throws assertion error
|
||
|
assert: function(assertion){
|
||
|
// todo: for now we are cheating, it's just console.erroring and then
|
||
|
// leave console.asset to do it's job. actual todo: print what
|
||
|
// console.assert prints just make first line red
|
||
|
if (!assertion){
|
||
|
logWithColor('red', ['AssertionError: false == true']);
|
||
|
console.assert(assertion);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// Writes number of times each argument is called with blue color
|
||
|
count: function(toCount){
|
||
|
var toCountString = toCount.toString && toCount.toString(),
|
||
|
log;
|
||
|
|
||
|
if (countBuffer[toCountString] == null){
|
||
|
countBuffer[toCountString] = 0;
|
||
|
}else{
|
||
|
countBuffer[toCountString] += 1;
|
||
|
}
|
||
|
|
||
|
log = toCountString + ': ' + countBuffer[toCountString];
|
||
|
logWithColor('blue', [log]);
|
||
|
},
|
||
|
|
||
|
// Creates a new timer under the given name. Call console.timeEnd(name)
|
||
|
// with the same name to stop the timer and print the time elapsed..
|
||
|
time: function(){
|
||
|
console.time.apply(this, arguments);
|
||
|
},
|
||
|
|
||
|
// Stops a timer created by a call to console.time(name) and writes the time
|
||
|
// elapsed.
|
||
|
timeEnd: function(){
|
||
|
console.timeEnd.apply(this, arguments);
|
||
|
},
|
||
|
|
||
|
// draws a table of elements inside of a 2d array or object
|
||
|
table: function(){
|
||
|
logTable.apply(this, arguments);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|