11ty Picture Shortcode

Another tiny 11ty shortcode, this time to accept more than one parameter to a single shortcode.

Parameters follow the shortcode name and are comma separated, applied to the function in order as you would expect.

_1tty/shortcodes/picture.js


/**
 * Picture generates a consistent img with alt text and caption.
 * 
 * picture src='../img/elephant.jpg', 'elephant', 'this is an elephant'
 * 
 */
module.exports = function (src, alt, caption, width, height) {

  const altText = alt || 'screenshot';

  return `<figure class="screenshot">
<img src="${src}" alt="${altText}"
${width ? `width="${width}" ` : '' }
${height ? `height="${height}" `: '' }>
${caption ? `<figcaption>${caption}</figcaption>` : '' }
</figure>`;
};

Wrapping the markup in this way means we can change the img or figure tags in one place. Not much more to say about it than that.