/** * 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);