angular-html-parser
Version:
A HTML parser extracted from Angular with some modifications
186 lines (185 loc) • 6.5 kB
TypeScript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
import { ParseSourceSpan } from "../parse_util.js";
export declare const enum TokenType {
TAG_OPEN_START = 0,
TAG_OPEN_END = 1,
TAG_OPEN_END_VOID = 2,
TAG_CLOSE = 3,
INCOMPLETE_TAG_OPEN = 4,
TEXT = 5,
ESCAPABLE_RAW_TEXT = 6,
RAW_TEXT = 7,
INTERPOLATION = 8,
ENCODED_ENTITY = 9,
COMMENT_START = 10,
COMMENT_END = 11,
CDATA_START = 12,
CDATA_END = 13,
ATTR_NAME = 14,
ATTR_QUOTE = 15,
ATTR_VALUE_TEXT = 16,
ATTR_VALUE_INTERPOLATION = 17,
DOC_TYPE_START = 18,
DOC_TYPE_END = 19,
EXPANSION_FORM_START = 20,
EXPANSION_CASE_VALUE = 21,
EXPANSION_CASE_EXP_START = 22,
EXPANSION_CASE_EXP_END = 23,
EXPANSION_FORM_END = 24,
BLOCK_OPEN_START = 25,
BLOCK_OPEN_END = 26,
BLOCK_CLOSE = 27,
BLOCK_PARAMETER = 28,
INCOMPLETE_BLOCK_OPEN = 29,
LET_START = 30,
LET_VALUE = 31,
LET_END = 32,
INCOMPLETE_LET = 33,
EOF = 34
}
export type Token = TagOpenStartToken | TagOpenEndToken | TagOpenEndVoidToken | TagCloseToken | IncompleteTagOpenToken | TextToken | InterpolationToken | EncodedEntityToken | CommentStartToken | CommentEndToken | CdataStartToken | CdataEndToken | AttributeNameToken | AttributeQuoteToken | AttributeValueTextToken | AttributeValueInterpolationToken | ExpansionFormStartToken | ExpansionCaseValueToken | ExpansionCaseExpressionStartToken | ExpansionCaseExpressionEndToken | ExpansionFormEndToken | EndOfFileToken | BlockParameterToken | BlockOpenStartToken | BlockOpenEndToken | BlockCloseToken | IncompleteBlockOpenToken | LetStartToken | LetValueToken | LetEndToken | IncompleteLetToken | DocTypeStartToken;
export type InterpolatedTextToken = TextToken | InterpolationToken | EncodedEntityToken;
export type InterpolatedAttributeToken = AttributeValueTextToken | AttributeValueInterpolationToken | EncodedEntityToken;
export interface TokenBase {
type: TokenType;
parts: string[];
sourceSpan: ParseSourceSpan;
}
export interface TagOpenStartToken extends TokenBase {
type: TokenType.TAG_OPEN_START;
parts: [prefix: string, name: string];
}
export interface TagOpenEndToken extends TokenBase {
type: TokenType.TAG_OPEN_END;
parts: [];
}
export interface TagOpenEndVoidToken extends TokenBase {
type: TokenType.TAG_OPEN_END_VOID;
parts: [];
}
export interface TagCloseToken extends TokenBase {
type: TokenType.TAG_CLOSE;
parts: [prefix: string, name: string];
}
export interface IncompleteTagOpenToken extends TokenBase {
type: TokenType.INCOMPLETE_TAG_OPEN;
parts: [prefix: string, name: string];
}
export interface TextToken extends TokenBase {
type: TokenType.TEXT | TokenType.ESCAPABLE_RAW_TEXT | TokenType.RAW_TEXT;
parts: [text: string];
}
export interface InterpolationToken extends TokenBase {
type: TokenType.INTERPOLATION;
parts: [startMarker: string, expression: string, endMarker: string] | [startMarker: string, expression: string];
}
export interface EncodedEntityToken extends TokenBase {
type: TokenType.ENCODED_ENTITY;
parts: [decoded: string, encoded: string];
}
export interface CommentStartToken extends TokenBase {
type: TokenType.COMMENT_START;
parts: [];
}
export interface CommentEndToken extends TokenBase {
type: TokenType.COMMENT_END;
parts: [];
}
export interface CdataStartToken extends TokenBase {
type: TokenType.CDATA_START;
parts: [];
}
export interface CdataEndToken extends TokenBase {
type: TokenType.CDATA_END;
parts: [];
}
export interface AttributeNameToken extends TokenBase {
type: TokenType.ATTR_NAME;
parts: [prefix: string, name: string];
}
export interface AttributeQuoteToken extends TokenBase {
type: TokenType.ATTR_QUOTE;
parts: [quote: "'" | '"'];
}
export interface AttributeValueTextToken extends TokenBase {
type: TokenType.ATTR_VALUE_TEXT;
parts: [value: string];
}
export interface AttributeValueInterpolationToken extends TokenBase {
type: TokenType.ATTR_VALUE_INTERPOLATION;
parts: [startMarker: string, expression: string, endMarker: string] | [startMarker: string, expression: string];
}
export interface DocTypeStartToken extends TokenBase {
type: TokenType.DOC_TYPE_START;
parts: [];
}
export interface DocTypeEndToken extends TokenBase {
type: TokenType.DOC_TYPE_END;
parts: [];
}
export interface ExpansionFormStartToken extends TokenBase {
type: TokenType.EXPANSION_FORM_START;
parts: [];
}
export interface ExpansionCaseValueToken extends TokenBase {
type: TokenType.EXPANSION_CASE_VALUE;
parts: [value: string];
}
export interface ExpansionCaseExpressionStartToken extends TokenBase {
type: TokenType.EXPANSION_CASE_EXP_START;
parts: [];
}
export interface ExpansionCaseExpressionEndToken extends TokenBase {
type: TokenType.EXPANSION_CASE_EXP_END;
parts: [];
}
export interface ExpansionFormEndToken extends TokenBase {
type: TokenType.EXPANSION_FORM_END;
parts: [];
}
export interface EndOfFileToken extends TokenBase {
type: TokenType.EOF;
parts: [];
}
export interface BlockParameterToken extends TokenBase {
type: TokenType.BLOCK_PARAMETER;
parts: [expression: string];
}
export interface BlockOpenStartToken extends TokenBase {
type: TokenType.BLOCK_OPEN_START;
parts: [name: string];
}
export interface BlockOpenEndToken extends TokenBase {
type: TokenType.BLOCK_OPEN_END;
parts: [];
}
export interface BlockCloseToken extends TokenBase {
type: TokenType.BLOCK_CLOSE;
parts: [];
}
export interface IncompleteBlockOpenToken extends TokenBase {
type: TokenType.INCOMPLETE_BLOCK_OPEN;
parts: [name: string];
}
export interface LetStartToken extends TokenBase {
type: TokenType.LET_START;
parts: [name: string];
}
export interface LetValueToken extends TokenBase {
type: TokenType.LET_VALUE;
parts: [value: string];
}
export interface LetEndToken extends TokenBase {
type: TokenType.LET_END;
parts: [];
}
export interface IncompleteLetToken extends TokenBase {
type: TokenType.INCOMPLETE_LET;
parts: [name: string];
}