react-native-markdown-renderer
Version:
Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer).
31 lines (26 loc) • 753 B
JavaScript
import React from 'react';
import { View } from 'react-native';
import tokensToAST from './util/tokensToAST';
import removeInlineTokens from './util/removeInlineTokens';
import groupTextTokens from './util/groupTextTokens';
export function stringToTokens(source, markdownIt) {
let result = [];
try {
result = markdownIt.parse(source, {});
} catch (err) {
console.warn(err);
}
return result;
}
/**
*
* @param {string} source
* @param {function} [renderer]
* @param {AstRenderer} [markdownIt]
* @return {View}
*/
export function parser(source, renderer, markdownIt) {
const tokens = groupTextTokens(removeInlineTokens(stringToTokens(source, markdownIt)));
const asttree = tokensToAST(tokens);
return renderer(asttree);
}