1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * log.js - log element for blessed
- * Copyright (c) 2013-2015, Christopher Jeffrey and contributors (MIT License).
- * https://github.com/chjj/blessed
- */
- /**
- * Modules
- */
- var util = require('util');
- var nextTick = global.setImmediate || process.nextTick.bind(process);
- var Node = require('./node');
- var ScrollableText = require('./scrollabletext');
- /**
- * Log
- */
- function Log(options) {
- var self = this;
- if (!(this instanceof Node)) {
- return new Log(options);
- }
- options = options || {};
- ScrollableText.call(this, options);
- this.scrollback = options.scrollback != null
- ? options.scrollback
- : Infinity;
- this.scrollOnInput = options.scrollOnInput;
- this.on('set content', function() {
- if (!self._userScrolled || self.scrollOnInput) {
- nextTick(function() {
- self.setScrollPerc(100);
- self._userScrolled = false;
- self.screen.render();
- });
- }
- });
- }
- Log.prototype.__proto__ = ScrollableText.prototype;
- Log.prototype.type = 'log';
- Log.prototype.log =
- Log.prototype.add = function() {
- var args = Array.prototype.slice.call(arguments);
- if (typeof args[0] === 'object') {
- args[0] = util.inspect(args[0], true, 20, true);
- }
- var text = util.format.apply(util, args);
- this.emit('log', text);
- var ret = this.pushLine(text);
- if (this._clines.fake.length > this.scrollback) {
- this.shiftLine(0, (this.scrollback / 3) | 0);
- }
- return ret;
- };
- Log.prototype._scroll = Log.prototype.scroll;
- Log.prototype.scroll = function(offset, always) {
- if (offset === 0) return this._scroll(offset, always);
- this._userScrolled = true;
- var ret = this._scroll(offset, always);
- if (this.getScrollPerc() === 100) {
- this._userScrolled = false;
- }
- return ret;
- };
- /**
- * Expose
- */
- module.exports = Log;
|