diff --git a/app/javascript/submission_form/markdown_content.vue b/app/javascript/submission_form/markdown_content.vue index f28b85ef..91cd3a80 100644 --- a/app/javascript/submission_form/markdown_content.vue +++ b/app/javascript/submission_form/markdown_content.vue @@ -60,7 +60,15 @@ export default { return ['UL', 'I', 'EM', 'B', 'STRONG', 'P'] }, dom () { - const text = this.string.replace(/(? `[${url}](${url})`) + const linkParts = this.string.split(/(https?:\/\/[^\s)]+)/g) + + const text = linkParts.map((part, index) => { + if (part.match(/^https?:\/\//) && !linkParts[index - 1]?.match(/\(\s*$/) && !linkParts[index + 1]?.match(/^\s*\)/)) { + return `[${part}](${part})` + } else { + return part + } + }).join('') return new DOMParser().parseFromString(snarkdown(text.replace(/\n/g, '
')), 'text/html') }