feat(image): optionally add image captions from alt tags

This commit is contained in:
Thomas Hunter II 2018-11-12 22:14:03 -08:00
parent 66798912de
commit 5557e6282c
9 changed files with 24 additions and 1 deletions

BIN
dist/showdown.js vendored

Binary file not shown.

BIN
dist/showdown.js.map vendored

Binary file not shown.

BIN
dist/showdown.min.js vendored

Binary file not shown.

Binary file not shown.

View File

@ -46,6 +46,11 @@ function getDefaultOpts (simple) {
describe: 'Turn on/off image dimension parsing',
type: 'boolean'
},
extractImageCaptions: {
defaultValue: false,
describe: 'Extract image alt tag as a caption for the image',
type: 'boolean'
},
simplifiedAutoLink: {
defaultValue: false,
describe: 'Turn on/off GFM autolink style',

View File

@ -59,7 +59,13 @@ showdown.subParser('makehtml.images', function (text, options, globals) {
.replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback);
//url = showdown.helper.escapeCharacters(url, '*_', false);
url = url.replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback);
var result = '<img src="' + url + '" alt="' + altText + '"';
var result = '';
if (options.extractImageCaptions && altText) {
result += '<figure>';
}
result += '<img src="' + url + '" alt="' + altText + '"';
if (title && showdown.helper.isString(title)) {
title = title
@ -79,6 +85,11 @@ showdown.subParser('makehtml.images', function (text, options, globals) {
result += ' />';
if (options.extractImageCaptions && altText) {
result += '<figcaption>' + altText + '</figcaption>';
result += '</figure>';
}
return result;
}

View File

@ -0,0 +1,2 @@
<p><figure><img src="./image.png" alt="This is a caption" /><figcaption>This is a caption</figcaption></figure></p>
<p><img src="./no-caption.png" alt="" /></p>

View File

@ -0,0 +1,3 @@
![This is a caption](./image.png)
![](./no-caption.png)

View File

@ -95,6 +95,8 @@ describe('makeHtml() features testsuite', function () {
converter = new showdown.Converter({openLinksInNewWindow: true});
} else if (testsuite[i].name === '#355.simplifiedAutoLink-URLs-inside-parenthesis-followed-by-another-character-are-not-parsed-correctly') {
converter = new showdown.Converter({simplifiedAutoLink: true});
} else if (testsuite[i].name === 'extractImageCaptions') {
converter = new showdown.Converter({extractImageCaptions: true});
} else {
converter = new showdown.Converter();
}