UNPKG

linespin

Version:
133 lines (103 loc) 3.12 kB
/* Linespin - Simple Progress Output */ 'use strict'; var Linespin, c; c = require('./color'); Linespin = (function() { var _continue, _errorMessage, _i, _lastMessage, _message, _pendingMessage, _prettify, _reset, _speed, _spin, _spinner, _spinnerMessage, _stdout, _successMessage, _warningMessage; _speed = void 0; _stdout = process.stdout; _spin = ['-', '\\', '|', '/']; _i = 0; function Linespin(message, doneMessage, speed) { this.message = message; this.doneMessage = doneMessage; this.speed = speed; this.state = 'stopped'; if (this.message == null) { this.message = 'Please wait...'; } if (this.doneMessage == null) { this.doneMessage = 'Finished'; } if (this.speed == null) { this.speed = 200; } } Linespin.prototype.start = function() { if (this.state === 'stopped') { this.state = 'running'; _stdout.write("\n"); } _spinnerMessage(this.message); return _continue(this); }; Linespin.prototype.stop = function(message) { this.state = 'stopped'; _reset(); return _lastMessage(message || this.doneMessage); }; Linespin.prototype.pending = function(message) { return _pendingMessage(message); }; Linespin.prototype.success = function(message) { return _successMessage(message); }; Linespin.prototype.error = function(message) { return _errorMessage(message); }; Linespin.prototype.warn = function(message) { return _warningMessage(message); }; Linespin.prototype.msg = function(message) { return _message(message); }; _reset = function() { return _i = 0; }; _continue = function(_this) { var that; that = _this; return setTimeout(function() { if (that.state === 'running') { return that.start(); } }, that.speed); }; _spinner = function() { return "" + _spin[_i = (_i + 1) % 4]; }; _prettify = function(message, symbol, newline, replace, color1, color2) { var bump, override; if (color2 == null) { color2 = color1; } bump = newline ? "\n\n" : "\n"; override = replace ? "" + c.rewrite + c.rewrite : c.rewrite; return _stdout.write("" + override + c[color1] + "[" + symbol + "] " + c[color2] + message + c.reset + bump); }; _spinnerMessage = function(message) { return _prettify(message, _spinner(), false, false, 'yellow', 'blue'); }; _lastMessage = function(message) { return _prettify(message, '✓', false, false, 'green', 'blue'); }; _successMessage = function(message) { return _prettify(message, '✓', true, true, 'green', 'grey'); }; _pendingMessage = function(message) { return _prettify(message, '?', true, false, 'blue', 'white'); }; _message = function(message) { return _prettify(message, '•', true, false, 'white'); }; _errorMessage = function(message) { return _prettify(message, '!', true, false, 'red'); }; _warningMessage = function(message) { return _prettify(message, '!', true, false, 'yellow'); }; return Linespin; })(); module.exports = Linespin;