myst-parser
Version:
Markdown parser for MyST markdown in JavaScript
61 lines • 2.31 kB
TypeScript
import type MarkdownIt from 'markdown-it';
import type Token from 'markdown-it/lib/token.js';
import type { DirectiveSpec, GenericNode, RoleSpec } from 'myst-common';
import type { Text } from 'myst-spec';
import type { VFile } from 'vfile';
import type { MathExtensionOptions } from './math.js';
export type MdastOptions = {
handlers?: Record<string, TokenHandlerSpec>;
hoistSingleImagesOutofParagraphs?: boolean;
nestBlocks?: boolean;
};
export type TokenHandlerSpec = {
type: string;
getAttrs?: (token: Token, tokens: Token[], index: number, state: MarkdownParseState) => Record<string, any>;
attrs?: Record<string, any>;
noCloseToken?: boolean;
isText?: boolean;
isLeaf?: boolean;
};
export type AllOptions = {
vfile: VFile;
markdownit: MarkdownIt.Options;
extensions: {
smartquotes?: boolean;
colonFences?: boolean;
frontmatter?: boolean;
math?: boolean | MathExtensionOptions;
footnotes?: boolean;
citations?: boolean;
deflist?: boolean;
tasklist?: boolean;
tables?: boolean;
blocks?: boolean;
strikethrough?: boolean;
};
mdast: MdastOptions;
directives: DirectiveSpec[];
roles: RoleSpec[];
};
export declare function withoutTrailingNewline(str: string): string;
/** MarkdownParseState tracks the context of a running token stream.
*
* Loosely based on prosemirror-markdown
*/
export declare class MarkdownParseState {
src: string;
stack: GenericNode[];
handlers: Record<string, TokenHandler>;
constructor(src: string, handlers: Record<string, TokenHandlerSpec>);
top(): GenericNode;
addNode(node?: GenericNode): GenericNode | undefined;
addText(text: string, token: Token, type?: string, attrs?: Record<string, any>): GenericNode<Record<string, any>> | Text | undefined;
openNode(type: string, token: Token, attrs: Record<string, any>, isLeaf?: boolean): void;
closeNode(): GenericNode | undefined;
parseTokens(tokens?: Token[] | null): void;
_lastPosition: GenericNode['position'];
addPositionsToNode(node: GenericNode, token: Token): void;
}
type TokenHandler = (state: MarkdownParseState, token: Token, tokens: Token[], index: number) => void;
export {};
//# sourceMappingURL=fromMarkdown.d.ts.map