123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /**
- *
- */
- showdown.subParser('paragraphs', function (text, options, globals) {
- 'use strict';
- text = globals.converter._dispatch('paragraphs.before', text, options, globals);
- // Strip leading and trailing lines:
- text = text.replace(/^\n+/g, '');
- text = text.replace(/\n+$/g, '');
- var grafs = text.split(/\n{2,}/g),
- grafsOut = [],
- end = grafs.length; // Wrap <p> tags
- for (var i = 0; i < end; i++) {
- var str = grafs[i];
- // if this is an HTML marker, copy it
- if (str.search(/¨(K|G)(\d+)\1/g) >= 0) {
- grafsOut.push(str);
- } else {
- str = showdown.subParser('spanGamut')(str, options, globals);
- str = str.replace(/^([ \t]*)/g, '<p>');
- str += '</p>';
- grafsOut.push(str);
- }
- }
- /** Unhashify HTML blocks */
- end = grafsOut.length;
- for (i = 0; i < end; i++) {
- var blockText = '',
- grafsOutIt = grafsOut[i],
- codeFlag = false;
- // if this is a marker for an html block...
- while (grafsOutIt.search(/¨(K|G)(\d+)\1/) >= 0) {
- var delim = RegExp.$1,
- num = RegExp.$2;
- if (delim === 'K') {
- blockText = globals.gHtmlBlocks[num];
- } else {
- // we need to check if ghBlock is a false positive
- if (codeFlag) {
- // use encoded version of all text
- blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);
- } else {
- blockText = globals.ghCodeBlocks[num].codeblock;
- }
- }
- blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs
- grafsOutIt = grafsOutIt.replace(/(\n\n)?¨(K|G)\d+\2(\n\n)?/, blockText);
- // Check if grafsOutIt is a pre->code
- if (/^<pre\b[^>]*>\s*<code\b[^>]*>/.test(grafsOutIt)) {
- codeFlag = true;
- }
- }
- grafsOut[i] = grafsOutIt;
- }
- text = grafsOut.join('\n');
- // Strip leading and trailing lines:
- text = text.replace(/^\n+/g, '');
- text = text.replace(/\n+$/g, '');
- return globals.converter._dispatch('paragraphs.after', text, options, globals);
- });
|