mirror of
https://github.com/nuintun/command-manager.git
synced 2025-06-07 11:34:05 +08:00
113 lines
2.3 KiB
JavaScript
113 lines
2.3 KiB
JavaScript
/**
|
|
* Created by nuintun on 2015/11/24.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
var states = require('./lib/states');
|
|
|
|
module.exports = Terminal;
|
|
|
|
function Terminal(opts){
|
|
opts = opts || {};
|
|
|
|
if (!(this instanceof Terminal)) return new Terminal(opts);
|
|
|
|
this.cols = opts.cols || 500;
|
|
this.rows = opts.rows || 100;
|
|
|
|
this.ybase = 0;
|
|
this.ydisp = 0;
|
|
this.x = 0;
|
|
this.y = 0;
|
|
this.cursorState = 0;
|
|
this.cursorHidden = false;
|
|
this.convertEol = false;
|
|
this.state = states.normal;
|
|
this.queue = '';
|
|
this.scrollTop = 0;
|
|
this.scrollBottom = this.rows - 1;
|
|
|
|
// modes
|
|
this.applicationKeypad = false;
|
|
this.originMode = false;
|
|
this.insertMode = false;
|
|
this.wraparoundMode = false;
|
|
this.normal = null;
|
|
|
|
// charset
|
|
this.charset = null;
|
|
this.gcharset = null;
|
|
this.glevel = 0;
|
|
this.charsets = [null];
|
|
|
|
// misc
|
|
this.element = null;
|
|
this.children = null;
|
|
this.refreshStart = null;
|
|
this.refreshEnd = null;
|
|
this.savedX = null;
|
|
this.savedY = null;
|
|
this.savedCols = null;
|
|
|
|
// stream
|
|
this.readable = true;
|
|
this.writable = true;
|
|
|
|
this.defAttr = (257 << 9) | 256;
|
|
this.curAttr = this.defAttr;
|
|
|
|
this.params = [];
|
|
this.currentParam = 0;
|
|
this.prefix = '';
|
|
this.postfix = '';
|
|
|
|
this.lines = [];
|
|
|
|
var i = this.rows;
|
|
|
|
while (i--) {
|
|
this.lines.push(this.blankLine());
|
|
}
|
|
|
|
this.tabs = null;
|
|
|
|
this.setupStops();
|
|
}
|
|
|
|
require('./lib/colors')(Terminal);
|
|
require('./lib/options')(Terminal);
|
|
|
|
require('./lib/open')(Terminal);
|
|
require('./lib/destroy')(Terminal);
|
|
require('./lib/refresh')(Terminal);
|
|
require('./lib/scrollDisp')(Terminal);
|
|
|
|
require('./lib/write')(Terminal);
|
|
|
|
require('./lib/setgLevel');
|
|
require('./lib/setgCharset');
|
|
|
|
require('./lib/debug')(Terminal);
|
|
|
|
require('./lib/stops')(Terminal);
|
|
|
|
require('./lib/erase')(Terminal);
|
|
require('./lib/blankLine')(Terminal);
|
|
require('./lib/range')(Terminal);
|
|
require('./lib/util')(Terminal);
|
|
|
|
require('./lib/esc/index.js')(Terminal);
|
|
require('./lib/esc/reset.js')(Terminal);
|
|
require('./lib/esc/tabSet.js')(Terminal);
|
|
|
|
require('./lib/csi/charAttributes')(Terminal);
|
|
require('./lib/csi/insert-delete')(Terminal);
|
|
require('./lib/csi/position')(Terminal);
|
|
require('./lib/csi/cursor')(Terminal);
|
|
require('./lib/csi/repeatPrecedingCharacter')(Terminal);
|
|
require('./lib/csi/tabClear')(Terminal);
|
|
require('./lib/csi/softReset')(Terminal);
|
|
|
|
require('./lib/charsets.js')(Terminal);
|