mirror of
https://github.com/showdownjs/showdown.git
synced 2024-03-22 13:30:55 +08:00
3097bd45c2
This feature enables hashing span elements that should not be touched by
showdown. For instance, `<code>` tags in markdown source should not be
parsed by showdown, so the text inside them remains unchanged.
This is made possible by a new exciting internal feature,
matchRecursiveRegExp.
Closes #196, Closes #175, Partially reverts 5f043ca
27 lines
683 B
JavaScript
27 lines
683 B
JavaScript
/**
|
|
* Hash span elements that should not be parsed as markdown
|
|
*/
|
|
showdown.subParser('hashHTMLSpans', function (text, config, globals) {
|
|
'use strict';
|
|
|
|
var matches = showdown.helper.matchRecursiveRegExp(text, '<code\\b[^>]*>', '</code>', 'gi');
|
|
|
|
for (var i = 0; i < matches.length; ++i) {
|
|
text = text.replace(matches[i][0], '~L' + (globals.gHtmlSpans.push(matches[i][0]) - 1) + 'L');
|
|
}
|
|
return text;
|
|
});
|
|
|
|
/**
|
|
* Unhash HTML spans
|
|
*/
|
|
showdown.subParser('unhashHTMLSpans', function (text, config, globals) {
|
|
'use strict';
|
|
|
|
for (var i = 0; i < globals.gHtmlSpans.length; ++i) {
|
|
text = text.replace('~L' + i + 'L', globals.gHtmlSpans[i]);
|
|
}
|
|
|
|
return text;
|
|
});
|