File: src/Print/Print.js
/*eslint no-console: 0*/
(function(glesea) {
window.printLevel = 0;
/**
Represents the minimum level which messages which will be printed
0: RAW
1: DEBUG
2: INFO
3: WARN
4: ERROR
@property printLevel
@for window
@type Number
@default 0
**/
var lvlString = [
'RAW ',
'DEBUG',
'INFO ',
'WARN ',
'ERROR'
];
console.log = function() {};
/**
Calls the regular print window function
@method printPage
@for window
@return nothing
**/
window.printPage = window.print;
/**
Prints messages and associated levels
[Level info]
0: RAW
1: DEBUG(default)
2: INFO
3: WARNING
4: ERROR
print(0, 'Raw message');
// ==> Raw message
print(1, 'Debug message');
// ==> DEBUG/2015-05-07T13:55:35.612Z)
// Debug message
print(2, 'Info message');
// ==> INFO /2015-05-07T13:55:35.612Z)
// Info message
print(3, 'Warning message');
// ==> WARN /2015-05-07T13:55:35.612Z)
// Warning message
print(4, 'Error message');
// ==> ERROR/2015-05-07T13:55:35.612Z)
// Error message
// Setting the printLevel sets a minimum requirement for the levels
printLevel = 3;
print(0, 'Raw message'); // Would not print
print(1, 'Debug message'); // Would not print
print(2, 'Info message'); // Would not print
print(3, 'Warning message'); // Would print
print(4, 'Error message'); // Would print
@method print
@for window
@param {Number} level The level of this message.
@param {String} msg The message to be printed.
@return nothing
**/
window.print = glesea.print = function() {
var str,
level;
if (!(typeof arguments[0] === 'number') || (arguments[0] % 1 !== 0) || (arguments[0] < 0) || (arguments[0] > 4) || arguments.length === 1) {
str = Array.prototype.slice.call(arguments, 0);
level = 1;
} else {
str = Array.prototype.slice.call(arguments, 1);
level = arguments[0];
}
if (level < 0) level = 0;
if (level > 4) level = 4;
if (!(level >= window.printLevel)) return;
var key = (['info', 'info', 'info', 'warn', 'error'])[level],
title = window.sprintf(
'%s/%s)\n',
lvlString[level],
(new Date()).toISOString()
),
args = (level === 0) ? str : [title].concat(str);
console[key].apply(console, args);
};
})(glesea);