From 362d7698f7da62d444ca353242899235d4eceb23 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Sat, 5 May 2018 08:12:52 -0700 Subject: [PATCH] Some polish --- src/EscapeSequenceParser.test.ts | 4 ++-- src/EscapeSequenceParser.ts | 21 +++++++++------------ src/InputHandler.ts | 4 ++-- src/Types.ts | 8 ++++++++ tslint.json | 1 + 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/EscapeSequenceParser.test.ts b/src/EscapeSequenceParser.test.ts index d4f3d2f0..4ef543a5 100644 --- a/src/EscapeSequenceParser.test.ts +++ b/src/EscapeSequenceParser.test.ts @@ -119,13 +119,13 @@ parser.setOscHandlerFallback((...params: any[]) => { if (params[0] === -1) testTerminal.actionOSC(params[1]); // handle error condition silently else testTerminal.actionOSC(params[0] + ';' + params[1]); }); -parser.setDcsHandlerFallback(new DcsTest); +parser.setDcsHandlerFallback(new DcsTest()); describe('EscapeSequenceParser', function (): void { describe('Parser init and methods', function (): void { it('constructor', function(): void { - let p: EscapeSequenceParser = new EscapeSequenceParser; + let p: EscapeSequenceParser = new EscapeSequenceParser(); chai.expect(p.transitions).equal(VT500_TRANSITION_TABLE); p = new EscapeSequenceParser(VT500_TRANSITION_TABLE); chai.expect(p.transitions).equal(VT500_TRANSITION_TABLE); diff --git a/src/EscapeSequenceParser.ts b/src/EscapeSequenceParser.ts index c99d5c6f..ba59b3d5 100644 --- a/src/EscapeSequenceParser.ts +++ b/src/EscapeSequenceParser.ts @@ -5,12 +5,16 @@ import { ParserState, ParserAction, IParsingState, IDcsHandler, IEscapeSequenceParser } from './Types'; -// number range macro -function r(a: number, b: number): number[] { - let c = b - a; +/** + * Returns an array fulled with numbers between the low and high parameters (inclusive). + * @param low The low number. + * @param high The high number. + */ +function r(low: number, high: number): number[] { + let c = high - low; let arr = new Array(c); while (c--) { - arr[c] = --b; + arr[c] = --high; } return arr; } @@ -243,7 +247,7 @@ export class EscapeSequenceParser implements IEscapeSequenceParser { this._csiHandlerFb = (...params: any[]): void => { }; this._escHandlerFb = (...params: any[]): void => { }; this._oscHandlerFb = (...params: any[]): void => { }; - this._dcsHandlerFb = new DcsDummy; + this._dcsHandlerFb = new DcsDummy(); this._errorHandlerFb = (state: IParsingState): IParsingState => state; this._printHandler = this._printHandlerFb; this._executeHandlers = Object.create(null); @@ -319,9 +323,6 @@ export class EscapeSequenceParser implements IEscapeSequenceParser { this._errorHandler = this._errorHandlerFb; } - /** - * Reset the parser. - */ reset(): void { this.currentState = this.initialState; this._osc = ''; @@ -330,10 +331,6 @@ export class EscapeSequenceParser implements IEscapeSequenceParser { this._activeDcsHandler = null; } - /** - * Parse string `data`. - * @param data - */ parse(data: string): void { let code = 0; let transition = 0; diff --git a/src/InputHandler.ts b/src/InputHandler.ts index 6e8fea56..b8f68fc1 100644 --- a/src/InputHandler.ts +++ b/src/InputHandler.ts @@ -4,7 +4,7 @@ * @license MIT */ -import { CharData, IInputHandler, IDcsHandler } from './Types'; +import { CharData, IInputHandler, IDcsHandler, IEscapeSequenceParser } from './Types'; import { C0, C1 } from './EscapeSequences'; import { CHARSETS, DEFAULT_CHARSET } from './Charsets'; import { CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX } from './Buffer'; @@ -112,7 +112,7 @@ export class InputHandler implements IInputHandler { constructor( private _terminal: any, - private _parser: EscapeSequenceParser = new EscapeSequenceParser) + private _parser: IEscapeSequenceParser = new EscapeSequenceParser()) { this._surrogateHigh = ''; diff --git a/src/Types.ts b/src/Types.ts index 5a46cbca..60f923d7 100644 --- a/src/Types.ts +++ b/src/Types.ts @@ -467,7 +467,15 @@ export interface IDcsHandler { * EscapeSequenceParser interface. */ export interface IEscapeSequenceParser { + /** + * Reset the parser to its initial state (handlers are kept). + */ reset(): void; + + /** + * Parse string `data`. + * @param data The data to parse. + */ parse(data: string): void; setPrintHandler(callback: (data: string, start: number, end: number) => void): void; diff --git a/tslint.json b/tslint.json index ac1b9c95..67dc7955 100644 --- a/tslint.json +++ b/tslint.json @@ -31,6 +31,7 @@ "parameter" ], "eofline": true, + "new-parens": true, "no-duplicate-imports": true, "no-eval": true, "no-internal-module": true,