ubdate
This commit is contained in:
147
node_modules/squeak/index.js
generated
vendored
Normal file
147
node_modules/squeak/index.js
generated
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
'use strict';
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var fmt = require('util').format;
|
||||
var inherits = require('util').inherits;
|
||||
var chalk = require('chalk');
|
||||
var consoleStream = require('console-stream');
|
||||
var lpadAlign = require('lpad-align');
|
||||
|
||||
/**
|
||||
* Initialize a new `Squeak`
|
||||
*
|
||||
* @param {Object} opts
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function Squeak(opts) {
|
||||
if (!(this instanceof Squeak)) {
|
||||
return new Squeak(opts);
|
||||
}
|
||||
|
||||
EventEmitter.call(this);
|
||||
|
||||
this.opts = opts || {};
|
||||
this.align = this.opts.align !== false;
|
||||
this.indent = this.opts.indent || 2;
|
||||
this.separator = this.opts.separator || ' : ';
|
||||
this.stream = this.opts.stream || process.stderr || consoleStream();
|
||||
this.types = [];
|
||||
}
|
||||
|
||||
inherits(Squeak, EventEmitter);
|
||||
module.exports = Squeak;
|
||||
|
||||
/**
|
||||
* Write args to stream
|
||||
*
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Squeak.prototype.write = function () {
|
||||
this.log([].slice.call(arguments));
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Write args and new line to stream
|
||||
*
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Squeak.prototype.writeln = function () {
|
||||
this.log([].slice.call(arguments));
|
||||
this.stream.write('\n');
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Pad and write args to stream
|
||||
*
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Squeak.prototype.writelpad = function () {
|
||||
var args = [].slice.call(arguments);
|
||||
var pad = new Array(this.indent + 1).join(' ');
|
||||
|
||||
if (args.length) {
|
||||
args[0] = pad + args[0];
|
||||
}
|
||||
|
||||
this.log(args);
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Add type
|
||||
*
|
||||
* @param {String} type
|
||||
* @param {Object} opts
|
||||
* @param {Function} cb
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Squeak.prototype.type = function (type, opts, cb) {
|
||||
if (!cb && typeof opts === 'function') {
|
||||
cb = opts;
|
||||
opts = {};
|
||||
}
|
||||
|
||||
opts = opts || {};
|
||||
opts.color = opts.color || 'reset';
|
||||
opts.prefix = opts.prefix || type;
|
||||
|
||||
this.types.push(opts.prefix);
|
||||
this[type] = function () {
|
||||
this.log([].slice.call(arguments), opts);
|
||||
|
||||
if (cb) {
|
||||
cb();
|
||||
}
|
||||
};
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* End
|
||||
*
|
||||
* @param {Function} cb
|
||||
* @api public
|
||||
*/
|
||||
|
||||
Squeak.prototype.end = function (cb) {
|
||||
this.stream.write('\n');
|
||||
|
||||
if (cb) {
|
||||
cb();
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Log
|
||||
*
|
||||
* @param {Array} args
|
||||
* @param {Object} opts
|
||||
* @api private
|
||||
*/
|
||||
|
||||
Squeak.prototype.log = function (args, opts) {
|
||||
opts = opts || {};
|
||||
|
||||
var msg = [fmt.apply(null, args)];
|
||||
var color = opts.color;
|
||||
var prefix = opts.prefix;
|
||||
|
||||
if (prefix) {
|
||||
var arr = this.align ? this.types : [prefix];
|
||||
msg.unshift(chalk[color](lpadAlign(prefix, arr, this.indent)));
|
||||
}
|
||||
|
||||
this.stream.write(msg.join(this.separator));
|
||||
this.stream.write('\n');
|
||||
|
||||
return this;
|
||||
};
|
||||
Reference in New Issue
Block a user