diff --git a/core/ansi_escape_parser.js b/core/ansi_escape_parser.js index c8101267..5417cef5 100644 --- a/core/ansi_escape_parser.js +++ b/core/ansi_escape_parser.js @@ -21,16 +21,8 @@ function ANSIEscapeParser(options) { events.EventEmitter.call(this); this.column = 1; - this.scrollBack = 0; this.graphicRendition = {}; - if(!_.isNil(options?.startRow)) { - this.row = options.startRow; - } - else { - this.row = 1; - } - this.parseState = { re : /(?:\x1b\x5b)([?=;0-9]*?)([ABCDHJKfhlmnpsu])/g, // eslint-disable-line no-control-regex }; @@ -42,11 +34,15 @@ function ANSIEscapeParser(options) { trailingLF : 'default', // default|omit|no|yes, ... }); + this.mciReplaceChar = miscUtil.valueWithDefault(options.mciReplaceChar, ''); this.termHeight = miscUtil.valueWithDefault(options.termHeight, 25); this.termWidth = miscUtil.valueWithDefault(options.termWidth, 80); this.trailingLF = miscUtil.valueWithDefault(options.trailingLF, 'default'); + + this.row = Math.min(options?.startRow ?? 1, this.termHeight); + self.moveCursor = function(cols, rows) { self.column += cols; self.row += rows; @@ -75,14 +71,11 @@ function ANSIEscapeParser(options) { }; self.clearScreen = function() { - // :TODO: should be doing something with row/column? + self.column = 1; + self.row = 1; self.emit('clear screen'); }; - /* - self.rowUpdated = function() { - self.emit('row update', self.row + self.scrollBack); - };*/ self.positionUpdated = function() { self.emit('position update', self.row, self.column); diff --git a/package.json b/package.json index b577acce..2e45f18e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "enigma-bbs", - "version": "0.0.14-beta", + "version": "0.0.13-beta", "description": "ENiGMA½ Bulletin Board System", "author": "Bryan Ashby ", "license": "BSD-2-Clause",