Giter Site home page Giter Site logo

markdown-it-gallery's Introduction

markdown-it-gallery

NPM Stable Version Build Status Test Coverage Dependency Status Node.js Version License

A markdown-it plugin for wrapping a sequence of images with a custom block element.

Usage

Options

  • galleryClass: String
  • galleryTag: String Default: figure
  • imgClass: String
  • wrapImagesInLinks: Boolean Default: false
  • linkClass: String
  • linkTarget: String Link target attribute
  • imgTokenType: String Default: image
  • linkTokenType: String Default: link
  • imageFilterFn: function(token) { ... } => Boolean token argument is a Token instance
  • imageSrcFn: function(token) { ... } => String token argument is a Token instance
  • linkHrefFn: function(token) { ... } => String token argument is a Token instance

Example

const Md = require('markdown-it');
const galleryPlugin = require('markdown-it-gallery');

const md = Md().use(galleryPlugin, {
    galleryClass: 'md-gallery',
    galleryTag: 'figure',
    imgClass: 'md-gallery__image',
    wrapImagesInLinks: true,
    linkClass: 'md-gallery__link',
    linkTarget: '_blank',
    imgTokenType: 'image',
    linkTokenType: 'link',
    imageFilterFn: token => /example.com/.test(token.attrGet('src')),
    imageSrcFn: token => token.attrGet('src').replace(/(\.\w+$)/, '-320x320$1'),
    linkHrefFn: token => token.attrGet('src').replace(/(\.\w+$)/, '-1920x1920$1'),
});

/**
 * @param {string} markdown
 * @returns {string} HTML
 */
function render(markdown) {
    return md.render(markdown);
}

Input markdown:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

![Gallery Image 1](http://example.com/image-1.jpg)
![Gallery Image 2](http://example.com/image-2.jpg)

Aliquam elit felis, varius non ligula et, vestibulum pulvinar libero.

![Gallery Image 3](http://example.com/image-3.jpg)

![Filtered Image 3](http://example.net/image-4.jpg)

Cras ut rutrum est, sodales porta orci. ![Inline image 1](http://example.com/inline-image-1.jpg) Quisque aliquet ipsum sit amet lacus consequat varius.

![Inline image 2](http://example.com/inline-image-2.jpg)
Proin pretium tortor in turpis tristique, in pharetra ipsum maximus.

Output HTML:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

<figure class="md-gallery">
    <a href="http://example.com/image-1-1920x1920.jpg" class="md-gallery__link" target="_blank">
        <img src="http://example.com/image-1-320x320.jpg" alt="Gallery Image 1" class="md-gallery__image">
    </a>
    <a href="http://example.com/image-2-1920x1920.jpg" class="md-gallery__link" target="_blank">
        <img src="http://example.com/image-2-320x320.jpg" alt="Gallery Image 2" class="md-gallery__image">
    </a>
</figure>

<p>Aliquam elit felis, varius non ligula et, vestibulum pulvinar libero.</p>

<figure class="md-gallery">
    <a href="http://example.com/image-3-1920x1920.jpg" class="md-gallery__link" target="_blank">
        <img src="http://example.com/image-3-320x320.jpg" alt="Gallery Image 3" class="md-gallery__image">
    </a>
</figure>

<p>
    <img src="http://example.net/image-4.jpg" alt="Filtered Image 3">
</p>

<p>
    Cras ut rutrum est, sodales porta orci. <img src="http://example.com/inline-image-1.jpg" alt="Inline image 1"> Quisque aliquet ipsum sit amet lacus consequat varius.
</p>

<p>
    <img src="http://example.com/inline-image-2.jpg" alt="Inline image 2">
    Proin pretium tortor in turpis tristique, in pharetra ipsum maximus.
</p>

markdown-it-gallery's People

Contributors

amokrushin 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.