ts-fusion-parser
Version:
Parser for Neos Fusion Files
40 lines (39 loc) • 2.31 kB
TypeScript
import { AbstractNode } from "../../common/AbstractNode";
import { Comment } from "../../common/Comment";
import { NodePositionInterface } from "../../common/NodePositionInterface";
import { Parser as EelParser, EelParserOptions } from '../eel/parser';
import { ParserHandoverResult, ParserInterface } from "../parserInterface";
import { Lexer } from "./lexer";
import { InlineEelNode } from "./nodes/InlineEelNode";
import { TagAttributeNode } from "./nodes/TagAttributeNode";
import { TagNode } from "./nodes/TagNode";
import { TagSpreadEelAttributeNode } from "./nodes/TagSpreadEelAttributeNode";
import { TextNode } from "./nodes/TextNode";
export interface AfxParserOptions {
allowUnclosedTags: boolean;
eelParserOptions?: EelParserOptions;
}
export declare class Parser implements ParserInterface {
protected lexer: Lexer;
nodesByType: Map<typeof AbstractNode, AbstractNode[]>;
positionOffset: number;
protected options: AfxParserOptions;
constructor(lexer: Lexer, positionOffset?: number, options?: AfxParserOptions);
protected applyOffset(position: NodePositionInterface): NodePositionInterface;
parse(): (Comment | InlineEelNode | TextNode | TagNode)[];
parseText(parent?: AbstractNode | undefined): Generator<InlineEelNode | TextNode, void, unknown>;
parseJavascript(parent?: AbstractNode | undefined): TextNode;
parseTextsOrTags(parent?: AbstractNode | undefined): Generator<Comment | InlineEelNode | TextNode | TagNode, void, unknown>;
parseComment(): Generator<Comment, void, unknown>;
parseTag(parent?: AbstractNode | undefined): TagNode;
parseSpreadEelAttribute(): TagSpreadEelAttributeNode;
parseTagAttribute(): TagAttributeNode;
parseLazyWhitespace(): void;
handover<T extends AbstractNode>(parser: ParserInterface, parent?: AbstractNode | undefined): Array<T>;
protected addNodesFromHandoverResult<T extends AbstractNode>(result: ParserHandoverResult<T>, parent?: AbstractNode | undefined): void;
receiveHandover<T extends AbstractNode>(text: string): ParserHandoverResult<T>;
logRemaining(cap?: number | undefined): void;
protected addNodeToNodesByType(node: AbstractNode): void;
protected flushNodesByType(): Map<typeof AbstractNode, AbstractNode[]>;
protected buildEelParser(): EelParser;
}