Created
March 4, 2019 15:47
-
-
Save steckel/244d747cb45209ae666b6698479a71dd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
declare enum TokenType { | |
CHARACTER_TOKEN = 'CHARACTER_TOKEN', | |
NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN', | |
WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN', | |
START_TAG_TOKEN = 'START_TAG_TOKEN', | |
END_TAG_TOKEN = 'END_TAG_TOKEN', | |
COMMENT_TOKEN = 'COMMENT_TOKEN', | |
DOCTYPE_TOKEN = 'DOCTYPE_TOKEN', | |
EOF_TOKEN = 'EOF_TOKEN', | |
HIBERNATION_TOKEN = 'HIBERNATION_TOKEN', | |
} | |
interface StartTagToken { | |
type: TokenType.START_TAG_TOKEN, | |
tagName: string, | |
selfClosing: boolean, | |
ackSelfClosing: boolean, | |
attrs: Array<Attribute> | |
} | |
interface EndTagToken { | |
type: TokenType.END_TAG_TOKEN, | |
tagName: string, | |
selfClosing: boolean, | |
attrs: Array<Attribute> | |
} | |
interface CommentToken { | |
type: TokenType.COMMENT_TOKEN, | |
data: string, | |
} | |
interface DoctypeToken { | |
type: TokenType.DOCTYPE_TOKEN, | |
name: string, | |
forceQuirks: boolean, | |
publicId: number, | |
systemId: number, | |
} | |
interface EOFToken { | |
type: TokenType.EOF_TOKEN, | |
} | |
declare type Token = StartTagToken | EndTagToken | CommentToken | DoctypeToken | EOFToken; | |
interface Attribute { | |
name: string, | |
value: string | |
} | |
declare class Tokenizer { | |
preprocessor: any;//Preprocessor; | |
tokenQueue: Array<Token>; | |
allowCDATA: boolean; | |
state: 'DATA_STATE'; | |
returnState: string; | |
charRefCode: number; | |
tempBuff: Array<any>; | |
lastStartTagName: string; | |
consumedAfterSnapshot: number; | |
active: false; | |
currentCharacterToken: Token; | |
currentToken: Token; | |
currentAttr: Attribute; | |
constructor(); | |
getNextToken(): Array<Token>; | |
write(chunk: string, isLastChunk: boolean): void; | |
insertHtmlAtCurrentPos(chunk: string): void; | |
static CHARACTER_TOKEN: TokenType.CHARACTER_TOKEN; | |
static NULL_CHARACTER_TOKEN: TokenType.NULL_CHARACTER_TOKEN; | |
static WHITESPACE_CHARACTER_TOKEN: TokenType.WHITESPACE_CHARACTER_TOKEN; | |
static START_TAG_TOKEN: TokenType.START_TAG_TOKEN; | |
static END_TAG_TOKEN: TokenType.END_TAG_TOKEN; | |
static COMMENT_TOKEN: TokenType.COMMENT_TOKEN; | |
static DOCTYPE_TOKEN: TokenType.DOCTYPE_TOKEN; | |
static EOF_TOKEN: TokenType.EOF_TOKEN; | |
static HIBERNATION_TOKEN: TokenType.HIBERNATION_TOKEN; | |
static getTokenAttr(token: Token, attrName: string): string; | |
} | |
declare module Tokenizer { | |
enum MODE { | |
DATA = 'DATA_STATE', | |
RCDATA = 'RCDATA_STATE', | |
RAWTEXT = 'RAWTEXT_STATE', | |
SCRIPT_DATA = 'SCRIPT_DATA_STATE', | |
PLAINTEXT = 'PLAINTEXT_STATE', | |
} | |
} | |
export = Tokenizer; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment