UNPKG

@readme/markdown

Version:

ReadMe's React-based Markdown parser

48 lines (40 loc) 987 B
const rgx = /^\[([\w ]*)\]\((\S*) ["'](@\w*)"\)/; function tokenizer(eat, value) { if (!rgx.test(value)) return true; // eslint-disable-next-line prefer-const let [match, title, url, provider] = rgx.exec(value); return eat(match)({ type: 'embed', title, url, provider, data: { title, url, provider, hProperties: { title, url, provider }, hName: 'rdme-embed', }, children: [ { type: 'link', url, title: provider, children: [{ type: 'text', value: title }], }, ], }); } function parser() { const { Parser } = this; const tokenizers = Parser.prototype.blockTokenizers; const methods = Parser.prototype.blockMethods; tokenizers.embed = tokenizer; methods.splice(methods.indexOf('newline'), 0, 'embed'); } module.exports = parser; module.exports.sanitize = sanitizeSchema => { const tags = sanitizeSchema.tagNames; tags.push('embed'); return parser; };