react-ui-playground
Version:
A pruned live jsx editor from React.
150 lines (131 loc) • 3.07 kB
JavaScript
'use strict';
const clc = require('cli-color');
/**
* @class Logger
*/
class Logger {
/**
* @constructor
* @param {string} taskName
* @param {string} fileName
*/
constructor(taskName, fileName) {
this.taskName = taskName;
this.fileName = fileName;
}
/**
* Get current time string.
* @param {Date} current Current Date object.
* @return {string}
*/
static getTimeString(current) {
return ['hour', 'minute', 'second'].map((name) => {
const capitalFirstLetter = name.replace(/\b(\w)(\w*)/g, function ($0, $1, $2) {
return $1.toUpperCase() + $2;
});
return +current['get' + capitalFirstLetter + 's']();
}).map((value) => (value < 10 ? '0' : '') + value).join(':');
}
/**
*
* @return {string}
*/
get taskName() {
return this._taskName;
}
/**
*
* @param {string} taskName
*/
set taskName(taskName) {
this._taskName = taskName;
}
/**
*
* @return {string}
*/
get fileName() {
return this._fileName;
}
/**
*
* @param {string} fileName
*/
set fileName(fileName) {
this._fileName = fileName;
}
/**
*
* @param {Date} finishTime
*/
set finishTime(finishTime) {
this._finishTime = finishTime;
}
/**
*
* @return {Date}
*/
get finishTime() {
return this._finishTime;
}
/**
*
* @param {Date} startTime
*/
set startTime(startTime) {
this._startTime = startTime;
}
/**
*
* @return {Date}
*/
get startTime() {
return this._startTime;
}
/**
*
* @return {Logger}
*/
start() {
this.startTime = new Date();
console.log(
'[' + clc.blackBright(Logger.getTimeString(this.startTime)) + '] ' +
'Starting \'' + clc.cyan(this.taskName) + '\'...'
);
return this;
}
/**
*
* @return {Logger}
*/
finish() {
this.finishTime = new Date();
console.log(
'[' + clc.blackBright(Logger.getTimeString(this.finishTime)) + '] ' +
clc.green('Finished') + ' \'' +
clc.cyan(this.taskName) +
'\' after ' +
clc.magenta('' + this.finishTime.getTime() - this.startTime.getTime() + ' ms ') +
clc.blue(this.fileName)
);
return this;
}
/**
*
* @param {*} args
* @return {Logger}
*/
error(args) {
this.finishTime = new Date();
console.error(
'[' + clc.blackBright(Logger.getTimeString(this.finishTime)) + '] ' +
clc.red('Error') +
'\' after ' +
clc.magenta('' + this.finishTime.getTime() - this.startTime.getTime() + ' ms ') +
clc.blue(this.fileName) +
clc.red(' ' + args.toString())
);
return this;
}
}
module.exports = Logger;