showdown/src/subParsers/spanGamut.js

43 lines
1.7 KiB
JavaScript
Raw Normal View History

2015-01-16 05:21:33 +08:00
/**
* These are all the transformations that occur *within* block-level
* tags like paragraphs, headers, and list items.
*/
showdown.subParser('spanGamut', function (text, options, globals) {
2015-01-19 19:37:21 +08:00
'use strict';
2015-01-16 05:21:33 +08:00
text = globals.converter._dispatch('spanGamut.before', text, options, globals);
2015-01-19 19:37:21 +08:00
text = showdown.subParser('codeSpans')(text, options, globals);
text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);
text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);
2015-01-16 05:21:33 +08:00
2015-01-19 19:37:21 +08:00
// Process anchor and image tags. Images must come first,
// because ![foo][f] looks like an anchor.
text = showdown.subParser('images')(text, options, globals);
text = showdown.subParser('anchors')(text, options, globals);
2015-01-16 05:21:33 +08:00
2015-01-19 19:37:21 +08:00
// Make links out of things like `<http://example.com/>`
// Must come after _DoAnchors(), because you can use < and >
// delimiters in inline links like [this](<url>).
text = showdown.subParser('autoLinks')(text, options, globals);
text = showdown.subParser('italicsAndBold')(text, options, globals);
text = showdown.subParser('strikethrough')(text, options, globals);
2015-01-16 05:21:33 +08:00
// we need to hash HTML tags inside spans
text = showdown.subParser('hashHTMLSpans')(text, options, globals);
// now we encode amps and angles
text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);
// Do hard breaks
if (options.simpleLineBreaks) {
// GFM style hard breaks
text = text.replace(/\n/g, '<br />\n');
} else {
// Vanilla hard breaks
text = text.replace(/ +\n/g, '<br />\n');
}
2015-01-16 05:21:33 +08:00
text = globals.converter._dispatch('spanGamut.after', text, options, globals);
2015-01-19 19:37:21 +08:00
return text;
2015-01-16 05:21:33 +08:00
});