react-native-markdown-renderer
Version:
Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer).
23 lines (19 loc) • 772 B
text/typescript
import type { ReactElement } from 'react';
import type MarkdownIt from 'markdown-it';
import tokensToAST from './util/tokensToAST';
import { stringToTokens } from './util/stringToTokens';
import { cleanupTokens } from './util/cleanupTokens';
import groupTextTokens from './util/groupTextTokens';
import type { ASTNode } from '../types';
export default function parser(
source: string,
renderer: (nodes: ASTNode[]) => ReactElement,
markdownIt: MarkdownIt
): ReactElement {
const tokens = stringToTokens(source, markdownIt);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const cleaned = cleanupTokens(tokens as any[]);
const grouped = groupTextTokens(cleaned);
const astTree = tokensToAST(grouped as any[]);
return renderer(astTree);
}