marked tagtext

node v18.11.0
version: 2.0.0
endpointsharetweet
const { Marked } = require("marked"); const marked = new Marked(); const source = ` **@bobby** i am testing @john-doe other text. `; const tagtext = { name: 'tagtext', level: 'inline', // Is this a block-level or inline-level tokenizer? // start(src: string) { // //| string[] // console.log('::start tagetext', src, `an @example 123`.match(/([@#][\w_-]+)/g)); // return src.match(/([@#][\w_-]+)/g); // // return src.match(/([@#][\w_-]+)/g)?.index; // // return src.indexOf('@'); // }, // Hint to Marked.js to stop and check for a match start(src) { return src.indexOf('@'); }, tokenizer(src, tokens) { // const match = src.match(/([@#][\w_-]+)/g); const rule = /^@\w+/; const match = rule.exec(src); if (match) { // console.log('::tagtext', match); return { type: 'tagtext', // Should match "name" above raw: match[0] // Text to consume from the source }; } return false; }, renderer(token) { // console.log('::tagtext renderer', token); //marked.parseInline(token) return `<span class="tag-item">${token.raw}</span>`; // Return the final HTML for this token } }; marked.use( { extensions: [tagtext] }, { // async: true, pedantic: false, gfm: true } ); console.log(marked.parse(source));
Loading…

no comments

    sign in to comment