@gerhobbelt/markdown-it-modify-token

1.0.2-2 • Public • Published

markdown-it-modify-token

markdown-it plugin for modifying tokens including content or element attributes in the markdown document. For example it can modify image or link attributes.

Usage

Enable plugin

var md = require('@gerhobbelt/markdown-it')({
  modifyToken: function (token, env) {
    // see API https://markdown-it.github.io/markdown-it/#Token
    // token will also have an attrObj property added for convenience
    // which allows easy get and set of attribute values.
    // It is prepopulated with the current attr values.
    // Values returned in token.attrObj will override existing attr values.
    // env will contain any properties passed to markdown-it's render
    // Token can be modified in place, no return is necessary
    switch (token.type) {
    case 'image': // set all images to 200px width except for foo.gif
      if (token.attrObj.src !== 'foo.gif') {
        token.attrObj.width = '200px';
      }
      break;
    case 'link_open':
      token.attrObj.target = '_blank'; // set all links to open in new window
      break;
    }
  }
}).use(require('@gerhobbelt/markdown-it-modify-token')); // <-- this use(package_name) is required

Example

[Hello](test)
![Image](foo.gif)

with this config

var md = require('@gerhobbelt/markdown-it')({
  modifyToken: function (token, env) {
    switch (token.type) {
    case 'image': // set all images to 200px width
      token.attrObj.width = '200px';
      break;
    case 'link_open':
      token.attrObj.target = '_blank'; // set all links to open in new window
      break;
    }
  }
}).use(require('@gerhobbelt/markdown-it-modify-token')); // <-- this use(package_name) is required

Will result in roughly

<a href="test" target="_blank">Hello</a>
<img src="foo.gif" width="200px"/>

Due to the token types we are handling in our switch statement, we can affect both image and link attributes.

Installing

npm i @gerhobbelt/markdown-it-modify-token

Testing

npm test

Inspiration

Thanks to Martin Heidegger for https://github.com/martinheidegger/markdown-it-replace-link which I used as a starting point for building this plugin.

Package Sidebar

Install

npm i @gerhobbelt/markdown-it-modify-token

Weekly Downloads

1

Version

1.0.2-2

License

MIT

Unpacked Size

10 kB

Total Files

8

Last publish

Collaborators

  • gerhobbelt