Giter VIP home page Giter VIP logo

markdown-it-modify-token's Introduction

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.

markdown-it-modify-token's People

Contributors

gerhobbelt avatar jeffbski avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.