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 { ParseSourceSpan } from '../parse_util';
|
---|
9 | /**
|
---|
10 | * Describes the text contents of a placeholder as it appears in an ICU expression, including its
|
---|
11 | * source span information.
|
---|
12 | */
|
---|
13 | export interface MessagePlaceholder {
|
---|
14 | /** The text contents of the placeholder */
|
---|
15 | text: string;
|
---|
16 | /** The source span of the placeholder */
|
---|
17 | sourceSpan: ParseSourceSpan;
|
---|
18 | }
|
---|
19 | export declare class Message {
|
---|
20 | nodes: Node[];
|
---|
21 | placeholders: {
|
---|
22 | [phName: string]: MessagePlaceholder;
|
---|
23 | };
|
---|
24 | placeholderToMessage: {
|
---|
25 | [phName: string]: Message;
|
---|
26 | };
|
---|
27 | meaning: string;
|
---|
28 | description: string;
|
---|
29 | customId: string;
|
---|
30 | sources: MessageSpan[];
|
---|
31 | id: string;
|
---|
32 | /** The ids to use if there are no custom id and if `i18nLegacyMessageIdFormat` is not empty */
|
---|
33 | legacyIds: string[];
|
---|
34 | /**
|
---|
35 | * @param nodes message AST
|
---|
36 | * @param placeholders maps placeholder names to static content and their source spans
|
---|
37 | * @param placeholderToMessage maps placeholder names to messages (used for nested ICU messages)
|
---|
38 | * @param meaning
|
---|
39 | * @param description
|
---|
40 | * @param customId
|
---|
41 | */
|
---|
42 | constructor(nodes: Node[], placeholders: {
|
---|
43 | [phName: string]: MessagePlaceholder;
|
---|
44 | }, placeholderToMessage: {
|
---|
45 | [phName: string]: Message;
|
---|
46 | }, meaning: string, description: string, customId: string);
|
---|
47 | }
|
---|
48 | export interface MessageSpan {
|
---|
49 | filePath: string;
|
---|
50 | startLine: number;
|
---|
51 | startCol: number;
|
---|
52 | endLine: number;
|
---|
53 | endCol: number;
|
---|
54 | }
|
---|
55 | export interface Node {
|
---|
56 | sourceSpan: ParseSourceSpan;
|
---|
57 | visit(visitor: Visitor, context?: any): any;
|
---|
58 | }
|
---|
59 | export declare class Text implements Node {
|
---|
60 | value: string;
|
---|
61 | sourceSpan: ParseSourceSpan;
|
---|
62 | constructor(value: string, sourceSpan: ParseSourceSpan);
|
---|
63 | visit(visitor: Visitor, context?: any): any;
|
---|
64 | }
|
---|
65 | export declare class Container implements Node {
|
---|
66 | children: Node[];
|
---|
67 | sourceSpan: ParseSourceSpan;
|
---|
68 | constructor(children: Node[], sourceSpan: ParseSourceSpan);
|
---|
69 | visit(visitor: Visitor, context?: any): any;
|
---|
70 | }
|
---|
71 | export declare class Icu implements Node {
|
---|
72 | expression: string;
|
---|
73 | type: string;
|
---|
74 | cases: {
|
---|
75 | [k: string]: Node;
|
---|
76 | };
|
---|
77 | sourceSpan: ParseSourceSpan;
|
---|
78 | expressionPlaceholder: string;
|
---|
79 | constructor(expression: string, type: string, cases: {
|
---|
80 | [k: string]: Node;
|
---|
81 | }, sourceSpan: ParseSourceSpan);
|
---|
82 | visit(visitor: Visitor, context?: any): any;
|
---|
83 | }
|
---|
84 | export declare class TagPlaceholder implements Node {
|
---|
85 | tag: string;
|
---|
86 | attrs: {
|
---|
87 | [k: string]: string;
|
---|
88 | };
|
---|
89 | startName: string;
|
---|
90 | closeName: string;
|
---|
91 | children: Node[];
|
---|
92 | isVoid: boolean;
|
---|
93 | sourceSpan: ParseSourceSpan;
|
---|
94 | startSourceSpan: ParseSourceSpan | null;
|
---|
95 | endSourceSpan: ParseSourceSpan | null;
|
---|
96 | constructor(tag: string, attrs: {
|
---|
97 | [k: string]: string;
|
---|
98 | }, startName: string, closeName: string, children: Node[], isVoid: boolean, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan | null, endSourceSpan: ParseSourceSpan | null);
|
---|
99 | visit(visitor: Visitor, context?: any): any;
|
---|
100 | }
|
---|
101 | export declare class Placeholder implements Node {
|
---|
102 | value: string;
|
---|
103 | name: string;
|
---|
104 | sourceSpan: ParseSourceSpan;
|
---|
105 | constructor(value: string, name: string, sourceSpan: ParseSourceSpan);
|
---|
106 | visit(visitor: Visitor, context?: any): any;
|
---|
107 | }
|
---|
108 | export declare class IcuPlaceholder implements Node {
|
---|
109 | value: Icu;
|
---|
110 | name: string;
|
---|
111 | sourceSpan: ParseSourceSpan;
|
---|
112 | /** Used to capture a message computed from a previous processing pass (see `setI18nRefs()`). */
|
---|
113 | previousMessage?: Message;
|
---|
114 | constructor(value: Icu, name: string, sourceSpan: ParseSourceSpan);
|
---|
115 | visit(visitor: Visitor, context?: any): any;
|
---|
116 | }
|
---|
117 | /**
|
---|
118 | * Each HTML node that is affect by an i18n tag will also have an `i18n` property that is of type
|
---|
119 | * `I18nMeta`.
|
---|
120 | * This information is either a `Message`, which indicates it is the root of an i18n message, or a
|
---|
121 | * `Node`, which indicates is it part of a containing `Message`.
|
---|
122 | */
|
---|
123 | export declare type I18nMeta = Message | Node;
|
---|
124 | export interface Visitor {
|
---|
125 | visitText(text: Text, context?: any): any;
|
---|
126 | visitContainer(container: Container, context?: any): any;
|
---|
127 | visitIcu(icu: Icu, context?: any): any;
|
---|
128 | visitTagPlaceholder(ph: TagPlaceholder, context?: any): any;
|
---|
129 | visitPlaceholder(ph: Placeholder, context?: any): any;
|
---|
130 | visitIcuPlaceholder(ph: IcuPlaceholder, context?: any): any;
|
---|
131 | }
|
---|
132 | export declare class CloneVisitor implements Visitor {
|
---|
133 | visitText(text: Text, context?: any): Text;
|
---|
134 | visitContainer(container: Container, context?: any): Container;
|
---|
135 | visitIcu(icu: Icu, context?: any): Icu;
|
---|
136 | visitTagPlaceholder(ph: TagPlaceholder, context?: any): TagPlaceholder;
|
---|
137 | visitPlaceholder(ph: Placeholder, context?: any): Placeholder;
|
---|
138 | visitIcuPlaceholder(ph: IcuPlaceholder, context?: any): IcuPlaceholder;
|
---|
139 | }
|
---|
140 | export declare class RecurseVisitor implements Visitor {
|
---|
141 | visitText(text: Text, context?: any): any;
|
---|
142 | visitContainer(container: Container, context?: any): any;
|
---|
143 | visitIcu(icu: Icu, context?: any): any;
|
---|
144 | visitTagPlaceholder(ph: TagPlaceholder, context?: any): any;
|
---|
145 | visitPlaceholder(ph: Placeholder, context?: any): any;
|
---|
146 | visitIcuPlaceholder(ph: IcuPlaceholder, context?: any): any;
|
---|
147 | }
|
---|