From 456a6f712d11b1bc89fa2fe6c49587767886bb0c Mon Sep 17 00:00:00 2001 From: Aviad Pineles Date: Tue, 18 Jul 2023 19:21:02 +0300 Subject: [PATCH] when parseImgDimensions is false, don't reject markdown, simply ignore dimensions --- src/subParsers/makehtml/images.js | 26 +++++-------------- .../makehtml/stripLinkDefinitions.js | 12 ++------- .../#143.not.support-image-dimensions.html | 5 ++-- 3 files changed, 10 insertions(+), 33 deletions(-) diff --git a/src/subParsers/makehtml/images.js b/src/subParsers/makehtml/images.js index d87b3a8..8b28537 100644 --- a/src/subParsers/makehtml/images.js +++ b/src/subParsers/makehtml/images.js @@ -6,25 +6,11 @@ showdown.subParser('makehtml.images', function (text, options, globals) { text = globals.converter._dispatch('makehtml.images.before', text, options, globals).getText(); - var inlineRegExp, - crazyRegExp, - base64RegExp, - referenceRegExp, - refShortcutRegExp; - - if (options.parseImgDimensions) { - inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g; - crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g; - base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g; - referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g; - refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g; - } else { - inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]??()()[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g; - crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>()()[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g; - base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]??()()[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g; - referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g; - refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g; - } + var inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, + crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g, + base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, + referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g, + refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g; function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) { url = url.replace(/\s/g, ''); @@ -89,7 +75,7 @@ showdown.subParser('makehtml.images', function (text, options, globals) { result += ' title="' + title + '"'; } - if (width && height) { + if (options.parseImgDimensions && width && height) { width = (width === '*') ? 'auto' : width; height = (height === '*') ? 'auto' : height; diff --git a/src/subParsers/makehtml/stripLinkDefinitions.js b/src/subParsers/makehtml/stripLinkDefinitions.js index 4e09275..894c8d9 100644 --- a/src/subParsers/makehtml/stripLinkDefinitions.js +++ b/src/subParsers/makehtml/stripLinkDefinitions.js @@ -6,16 +6,8 @@ showdown.subParser('makehtml.stripLinkDefinitions', function (text, options, globals) { 'use strict'; - var regex, - base64Regex; - - if (options.parseImgDimensions) { - regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm; - base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm; - } else { - regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*\s]+)>?()()[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm; - base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*?()()[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm; - } + var regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm, + base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm; // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug text += '¨0'; diff --git a/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.html b/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.html index ba26b50..0bc6a8a 100644 --- a/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.html +++ b/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.html @@ -1,3 +1,2 @@ -

![my image](./pic/pic1_50.png =100pxx20px)

-

![my image2][1]

-

[1]: ./pic/pic1_50.png =100pxx20px

+

my image

+

my image2