showdown/src/subParsers/encodeCode.js

30 lines
853 B
JavaScript
Raw Normal View History

2015-01-16 05:21:33 +08:00
/**
* Encode/escape certain characters inside Markdown code runs.
* The point is that in code, these characters are literals,
* and lose their special Markdown meanings.
*/
showdown.subParser('encodeCode', function (text) {
2015-01-19 19:37:21 +08:00
'use strict';
2015-01-16 05:21:33 +08:00
2015-01-19 19:37:21 +08:00
// Encode all ampersands; HTML entities are not
// entities within a Markdown code span.
text = text
.replace(/&/g, '&')
2015-01-19 19:37:21 +08:00
// Do the angle bracket song and dance:
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
2015-01-16 05:21:33 +08:00
2015-01-19 19:37:21 +08:00
// Now, escape characters that are magic in Markdown:
//text = showdown.helper.escapeCharacters(text, '*_{}[]\\', false); // replaced line to improve performance
.replace(/([*_{}\[\]\\])/g, showdown.helper.escapeCharactersCallback);
2015-01-16 05:21:33 +08:00
2015-01-19 19:37:21 +08:00
// jj the line above breaks this:
//---
//* Item
// 1. Subitem
// special char: *
// ---
2015-01-16 05:21:33 +08:00
2015-01-19 19:37:21 +08:00
return text;
2015-01-16 05:21:33 +08:00
});