UNPKG

3.41 kBTypeScriptView Raw
1import { Option } from '@glimmer/interfaces';
2import print from '../generation/print';
3import { Tag } from '../parser';
4import { Source } from '../source/source';
5import { SourceSpan } from '../source/span';
6import traverse from '../traversal/traverse';
7import { NodeVisitor } from '../traversal/visitor';
8import Walker from '../traversal/walker';
9import * as ASTv1 from '../v1/api';
10import * as HBS from '../v1/handlebars-ast';
11import publicBuilder from '../v1/public-builders';
12import { HandlebarsNodeVisitors } from './handlebars-node-visitors';
13export declare class TokenizerEventHandlers extends HandlebarsNodeVisitors {
14 private tagOpenLine;
15 private tagOpenColumn;
16 reset(): void;
17 beginComment(): void;
18 appendToCommentData(char: string): void;
19 finishComment(): void;
20 beginData(): void;
21 appendToData(char: string): void;
22 finishData(): void;
23 tagOpen(): void;
24 beginStartTag(): void;
25 beginEndTag(): void;
26 finishTag(): void;
27 finishStartTag(): void;
28 finishEndTag(isVoid: boolean): void;
29 markTagAsSelfClosing(): void;
30 appendToTagName(char: string): void;
31 beginAttribute(): void;
32 appendToAttributeName(char: string): void;
33 beginAttributeValue(isQuoted: boolean): void;
34 appendToAttributeValue(char: string): void;
35 finishAttributeValue(): void;
36 reportSyntaxError(message: string): void;
37 assembleConcatenatedValue(parts: (ASTv1.MustacheStatement | ASTv1.TextNode)[]): ASTv1.ConcatStatement;
38 validateEndTag(tag: Tag<'StartTag' | 'EndTag'>, element: ASTv1.ElementNode, selfClosing: boolean): void;
39 assembleAttributeValue(parts: (ASTv1.MustacheStatement | ASTv1.TextNode)[], isQuoted: boolean, isDynamic: boolean, span: SourceSpan): ASTv1.ConcatStatement | ASTv1.MustacheStatement | ASTv1.TextNode;
40}
41/**
42 ASTPlugins can make changes to the Glimmer template AST before
43 compilation begins.
44*/
45export interface ASTPluginBuilder<TEnv extends ASTPluginEnvironment = ASTPluginEnvironment> {
46 (env: TEnv): ASTPlugin;
47}
48export interface ASTPlugin {
49 name: string;
50 visitor: NodeVisitor;
51}
52export interface ASTPluginEnvironment {
53 meta?: object;
54 syntax: Syntax;
55}
56interface HandlebarsParseOptions {
57 srcName?: string;
58 ignoreStandalone?: boolean;
59}
60export interface TemplateIdFn {
61 (src: string): Option<string>;
62}
63export interface PrecompileOptions extends PreprocessOptions {
64 id?: TemplateIdFn;
65 customizeComponentName?(input: string): string;
66}
67export interface PreprocessOptions {
68 strictMode?: boolean;
69 locals?: string[];
70 meta?: {
71 moduleName?: string;
72 };
73 plugins?: {
74 ast?: ASTPluginBuilder[];
75 };
76 parseOptions?: HandlebarsParseOptions;
77 customizeComponentName?(input: string): string;
78 /**
79 Useful for specifying a group of options together.
80
81 When `'codemod'` we disable all whitespace control in handlebars
82 (to preserve as much as possible) and we also avoid any
83 escaping/unescaping of HTML entity codes.
84 */
85 mode?: 'codemod' | 'precompile';
86}
87export interface Syntax {
88 parse: typeof preprocess;
89 builders: typeof publicBuilder;
90 print: typeof print;
91 traverse: typeof traverse;
92 Walker: typeof Walker;
93}
94export declare function preprocess(input: string | Source | HBS.Program, options?: PreprocessOptions): ASTv1.Template;
95export {};
96//# sourceMappingURL=tokenizer-event-handlers.d.ts.map
\No newline at end of file