/** * Turn Markdown image shortcuts into tags. */ showdown.subParser('images', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('images.before', text, options); var inlineRegExp = /!\[(.*?)]\s?\([ \t]*()?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(['"])(.*?)\6[ \t]*)?\)/g, referenceRegExp = /!\[(.*?)][ ]?(?:\n[ ]*)?\[(.*?)]()()()()()/g; function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) { var gUrls = globals.gUrls, gTitles = globals.gTitles, gDims = globals.gDimensions; linkId = linkId.toLowerCase(); if (!title) { title = ''; } if (url === '' || url === null) { if (linkId === '' || linkId === null) { // lower-case and turn embedded newlines into spaces linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); } url = '#' + linkId; if (!showdown.helper.isUndefined(gUrls[linkId])) { url = gUrls[linkId]; if (!showdown.helper.isUndefined(gTitles[linkId])) { title = gTitles[linkId]; } if (!showdown.helper.isUndefined(gDims[linkId])) { width = gDims[linkId].width; height = gDims[linkId].height; } } else { return wholeMatch; } } altText = altText.replace(/"/g, '"'); altText = showdown.helper.escapeCharacters(altText, '*_', false); url = showdown.helper.escapeCharacters(url, '*_', false); var result = '' + altText + 'x "optional title") text = text.replace(inlineRegExp, writeImageTag); text = globals.converter._dispatch('images.after', text, options); return text; });