rtf-stream-parser
Version:
Stream Transform class to tokenize RTF, and another to de-encapsulate text or HTML
54 lines (53 loc) • 1.51 kB
TypeScript
/// <reference types="node" />
import { Transform } from 'stream';
export declare const enum Mode {
NORMAL = 0,
CONTROL_START = 1,
CONTROL_WORD = 2,
CONTROL_PARAM = 3,
BINARY = 4,
HEX = 5
}
export declare const enum TokenType {
GROUP_START = 0,
GROUP_END = 1,
CONTROL = 2,
TEXT = 3
}
export interface BaseToken {
type: TokenType;
word?: string;
data?: Buffer;
length?: number;
param?: number;
}
export interface GroupStartToken extends BaseToken {
type: TokenType.GROUP_START;
}
export interface GroupEndToken extends BaseToken {
type: TokenType.GROUP_END;
}
export interface TextToken extends BaseToken {
type: TokenType.TEXT;
data: Buffer;
length: number;
}
export interface ControlToken extends BaseToken {
type: TokenType.CONTROL;
word: string;
}
export declare type Token = GroupStartToken | GroupEndToken | TextToken | ControlToken;
export declare class Tokenize extends Transform {
protected _mode: Mode | undefined;
protected _token: Token | null | undefined;
protected _expectedBinaryBytes: number;
protected _readHexDigitsCount: number;
protected _paramStr: string;
constructor();
_flushToken(): void;
_handleSpecialOrPush(): void;
_handleByte(c: number): void;
_transform(chunk: Buffer | string, encoding: string | undefined, cb: (err?: any) => void): void;
_flush(cb: () => void): void;
}
export default Tokenize;