/** * Within tags -- meaning between < and > -- encode [\ ` * _ ~ =] so they * don't conflict with their use in Markdown for code, italics and strong. */ showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) { 'use strict'; text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals); // Build a regex to find HTML tags. var tags = /<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi, comments = /-]|-[^>])(?:[^-]|-[^-])*)--)>/gi; text = text.replace(tags, function (wholeMatch) { return wholeMatch .replace(/(.)<\/?code>(?=.)/g, '$1`') .replace(/([\\`*_~=|])/g, showdown.helper.escapeCharactersCallback); }); text = text.replace(comments, function (wholeMatch) { return wholeMatch .replace(/([\\`*_~=|])/g, showdown.helper.escapeCharactersCallback); }); text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals); return text; });