1 | /**
|
---|
2 | * @license
|
---|
3 | * Copyright Google LLC All Rights Reserved.
|
---|
4 | *
|
---|
5 | * Use of this source code is governed by an MIT-style license that can be
|
---|
6 | * found in the LICENSE file at https://angular.io/license
|
---|
7 | */
|
---|
8 | import { ParseError, ParseSourceSpan } from '../parse_util';
|
---|
9 | import { InterpolationConfig } from './interpolation_config';
|
---|
10 | import { TagDefinition } from './tags';
|
---|
11 | import { Token, TokenType } from './tokens';
|
---|
12 | export declare class TokenError extends ParseError {
|
---|
13 | tokenType: TokenType | null;
|
---|
14 | constructor(errorMsg: string, tokenType: TokenType | null, span: ParseSourceSpan);
|
---|
15 | }
|
---|
16 | export declare class TokenizeResult {
|
---|
17 | tokens: Token[];
|
---|
18 | errors: TokenError[];
|
---|
19 | nonNormalizedIcuExpressions: Token[];
|
---|
20 | constructor(tokens: Token[], errors: TokenError[], nonNormalizedIcuExpressions: Token[]);
|
---|
21 | }
|
---|
22 | export interface LexerRange {
|
---|
23 | startPos: number;
|
---|
24 | startLine: number;
|
---|
25 | startCol: number;
|
---|
26 | endPos: number;
|
---|
27 | }
|
---|
28 | /**
|
---|
29 | * Options that modify how the text is tokenized.
|
---|
30 | */
|
---|
31 | export interface TokenizeOptions {
|
---|
32 | /** Whether to tokenize ICU messages (considered as text nodes when false). */
|
---|
33 | tokenizeExpansionForms?: boolean;
|
---|
34 | /** How to tokenize interpolation markers. */
|
---|
35 | interpolationConfig?: InterpolationConfig;
|
---|
36 | /**
|
---|
37 | * The start and end point of the text to parse within the `source` string.
|
---|
38 | * The entire `source` string is parsed if this is not provided.
|
---|
39 | * */
|
---|
40 | range?: LexerRange;
|
---|
41 | /**
|
---|
42 | * If this text is stored in a JavaScript string, then we have to deal with escape sequences.
|
---|
43 | *
|
---|
44 | * **Example 1:**
|
---|
45 | *
|
---|
46 | * ```
|
---|
47 | * "abc\"def\nghi"
|
---|
48 | * ```
|
---|
49 | *
|
---|
50 | * - The `\"` must be converted to `"`.
|
---|
51 | * - The `\n` must be converted to a new line character in a token,
|
---|
52 | * but it should not increment the current line for source mapping.
|
---|
53 | *
|
---|
54 | * **Example 2:**
|
---|
55 | *
|
---|
56 | * ```
|
---|
57 | * "abc\
|
---|
58 | * def"
|
---|
59 | * ```
|
---|
60 | *
|
---|
61 | * The line continuation (`\` followed by a newline) should be removed from a token
|
---|
62 | * but the new line should increment the current line for source mapping.
|
---|
63 | */
|
---|
64 | escapedString?: boolean;
|
---|
65 | /**
|
---|
66 | * If this text is stored in an external template (e.g. via `templateUrl`) then we need to decide
|
---|
67 | * whether or not to normalize the line-endings (from `\r\n` to `\n`) when processing ICU
|
---|
68 | * expressions.
|
---|
69 | *
|
---|
70 | * If `true` then we will normalize ICU expression line endings.
|
---|
71 | * The default is `false`, but this will be switched in a future major release.
|
---|
72 | */
|
---|
73 | i18nNormalizeLineEndingsInICUs?: boolean;
|
---|
74 | /**
|
---|
75 | * An array of characters that should be considered as leading trivia.
|
---|
76 | * Leading trivia are characters that are not important to the developer, and so should not be
|
---|
77 | * included in source-map segments. A common example is whitespace.
|
---|
78 | */
|
---|
79 | leadingTriviaChars?: string[];
|
---|
80 | /**
|
---|
81 | * If true, do not convert CRLF to LF.
|
---|
82 | */
|
---|
83 | preserveLineEndings?: boolean;
|
---|
84 | }
|
---|
85 | export declare function tokenize(source: string, url: string, getTagDefinition: (tagName: string) => TagDefinition, options?: TokenizeOptions): TokenizeResult;
|
---|
86 | /**
|
---|
87 | * The _Tokenizer uses objects of this type to move through the input text,
|
---|
88 | * extracting "parsed characters". These could be more than one actual character
|
---|
89 | * if the text contains escape sequences.
|
---|
90 | */
|
---|
91 | interface CharacterCursor {
|
---|
92 | /** Initialize the cursor. */
|
---|
93 | init(): void;
|
---|
94 | /** The parsed character at the current cursor position. */
|
---|
95 | peek(): number;
|
---|
96 | /** Advance the cursor by one parsed character. */
|
---|
97 | advance(): void;
|
---|
98 | /** Get a span from the marked start point to the current point. */
|
---|
99 | getSpan(start?: this, leadingTriviaCodePoints?: number[]): ParseSourceSpan;
|
---|
100 | /** Get the parsed characters from the marked start point to the current point. */
|
---|
101 | getChars(start: this): string;
|
---|
102 | /** The number of characters left before the end of the cursor. */
|
---|
103 | charsLeft(): number;
|
---|
104 | /** The number of characters between `this` cursor and `other` cursor. */
|
---|
105 | diff(other: this): number;
|
---|
106 | /** Make a copy of this cursor */
|
---|
107 | clone(): CharacterCursor;
|
---|
108 | }
|
---|
109 | export declare class CursorError {
|
---|
110 | msg: string;
|
---|
111 | cursor: CharacterCursor;
|
---|
112 | constructor(msg: string, cursor: CharacterCursor);
|
---|
113 | }
|
---|
114 | export {};
|
---|