npm.io
0.0.1 • Published 2d ago

@amateras/markdown

Licence
Version
0.0.1
Deps
0
Size
30 kB
Vulns
0
Weekly
0

amateras/markdown

Usage

import { Markdown } from 'amateras/markdown';

const markdown = new Markdown();

markdown.parseHTML('# Title'); // => <h1>Title</h1>

Add Custom Markdown Rules

markdown.lexer.blockTokenizers.set('CUSTOM_TYPE', {
	regex: /#! (.+)/,
	handle: matches => {
		content: lexer.inlineTokenize(matches[1]!)
	}
})

markdown.parser.processors.set('CUSTOM_TYPE', token => {
	return `<custom>${markdown.parser.parse(token.content!)}</custom>`
})

Import Syntax

import { MarkdownParser, MarkdownLexer } from 'amateras/markdown';
import { blockquoteProcessor, blockquoteTokenizer } from 'amateras/markdown/syntax/blockquote';
import { headingProcessor, headingTokenizer } from 'amateras/markdown/syntax/heading';

const lexer = new MarkdownLexer();
const parser = new MarkdownParser();

lexer.use(
    blockquoteTokenizer,
    headingTokenizer
)

parser.use(
    blockquoteProcessor,
    headingProcessor
)

function parseHTML(str: string) {
    const tokens = lexer.blockTokenize(str);
    return parser.parse(tokens);
}

parseHTML('# Title') // => <h1>Title</h1>
parseHTML('> This is Blockquote') // => <blockquote>This is Blockquote</blockquote>
parseHTML('- List') // => - List