Generate an Abstract Syntax Tree from a Markdown file, providing a structured representation that you can manipulate or render in various formats such as HTML, plain text, or any custom output.
npm install @edllx/md-parser
Name | |||
---|---|---|---|
Heading | ✅ | Tables | ❌ |
Unordered list | ✅ | Ordered list | ✅ |
Bold | ✅ | Quotes | ❌ |
Italic | ✅ | Unicode | ❌ |
Links | ✅ | ||
Inline code | ✅ | ||
Code block | ✅ |
import { Factory, tokenize, Token } from '@edllx/md-parser';
const tokens: Token[] = tokenize(`## Header2`);
const root: Token = Factory.ROOT(tokens);
Here is an example
import {
Token,
TokenCompiler,
Word,
NewLine,
Paragraph,
LinkToken,
Heading,
ListToken,
Decoration,
InlineCode,
CodeToken,
CheckBoxToken,
} from '@edllx/md-parser';
import { JSXElement } from 'solid-js';
/**
interface TokenCompiler<T> {
compile: (token: Token) => T;
}
**/
export class TokenToTsxAdapter implements TokenCompiler<JSXElement> {
compile(token: Token) {
return this.#recursiveCompile(token);
}
#recursiveCompile(token: Token): JSXElement {
switch (true) {
case token instanceof Word:
return <span>TODO</span>;
case token instanceof NewLine:
return <span>TODO</span>;
case token instanceof Paragraph:
return <span>TODO</span>;
case token instanceof LinkToken:
return <span>TODO</span>;
case token instanceof ListToken:
return <span>TODO</span>;
case token instanceof Heading:
return <span>TODO</span>;
case token instanceof Decoration:
return <span>TODO</span>;
case token instanceof InlineCode:
return <span>TODO</span>;
case token instanceof CodeToken:
return <span>TODO</span>;
default:
return <span>TODO</span>;
}
}
}
import { Factory, tokenize, Token } from '@edllx/md-parser';
import { JSXElement } from 'solid-js';
import { TokenToTsxAdapter } from 'path-to-adapter';
const compiler = new TokenToTsxAdapter();
const tokens: Token[] = tokenize(`## Header2`);
const root: Token = Factory.ROOT(tokens);
const component: JSXElement = compiler.compile(root);