Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I override marked.js ul element?

I'm using marked.js through nunjucks-markdown to render markdown in a node/express app.

The markdown content is being rendered fine, however, I want to set default classes on the ul element.

By default it comes through as:

 <ul>

but I'd like to globally override it so it's rendered as:

<ul class='toolkit-list'>

In my app.js file i've tried:

const nunjucksMarkdown = require('nunjucks-markdown');
const marked = require('marked');

let markedRender = new marked.Renderer()
let renderListitem = markedRender.listitem.bind(markedRender)
markedRender.listitem = function(text, task) {
    var html = renderListitem(text, task)
    if (task) {       
         html = html.replace('<ul>', "<ul class='toolkit-list'>")
    }
    return html
  }
nunjucksMarkdown.register(nunjucksAppEnv, marked)
like image 386
Codesight Avatar asked Dec 14 '25 14:12

Codesight


1 Answers

This might need further adjustment but should get you started:

const marked = require('marked');

var md_list = `
- First
- Second
`;

const renderer = new marked.Renderer();

renderer.list = function(body, ordered, start) {
    var temp = "<ul class='toolkit-list'>${body}</ul>";

    return temp;
}

console.log(marked(md_list, { renderer: renderer }));

Produced output:

<ul class='toolkit-list'>
  <li>First</li>
  <li>Second</li>
</ul>
like image 164
Matthias Güntert Avatar answered Dec 19 '25 07:12

Matthias Güntert



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!