UNPKG

7.74 kBSource Map (JSON)View Raw
1{"version":3,"file":"snarkdown.es.js","sources":["../src/index.js"],"sourcesContent":["const TAGS = {\n\t'' : ['<em>','</em>'],\n\t_ : ['<strong>','</strong>'],\n\t'\\n' : ['<br />'],\n\t' ' : ['<br />'],\n\t'-': ['<hr />']\n};\n\n/** Outdent a string based on the first indented line's leading whitespace\n *\t@private\n */\nfunction outdent(str) {\n\treturn str.replace(RegExp('^'+(str.match(/^(\\t| )+/) || '')[0], 'gm'), '');\n}\n\n/** Encode special attribute characters to HTML entities in a String.\n *\t@private\n */\nfunction encodeAttr(str) {\n\treturn (str+'').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\n/** Parse Markdown into an HTML String. */\nexport default function parse(md) {\n\tlet tokenizer = /((?:^|\\n+)(?:\\n---+|\\* \\*(?: \\*)+)\\n)|(?:^```(\\w*)\\n([\\s\\S]*?)\\n```$)|((?:(?:^|\\n+)(?:\\t| {2,}).+)+\\n*)|((?:(?:^|\\n)([>*+-]|\\d+\\.)\\s+.*)+)|(?:\\!\\[([^\\]]*?)\\]\\(([^\\)]+?)\\))|(\\[)|(\\](?:\\(([^\\)]+?)\\))?)|(?:(?:^|\\n+)([^\\s].*)\\n(\\-{3,}|={3,})(?:\\n+|$))|(?:(?:^|\\n+)(#{1,3})\\s*(.+)(?:\\n+|$))|(?:`([^`].*?)`)|( \\n\\n*|\\n{2,}|__|\\*\\*|[_*])/gm,\n\t\tcontext = [],\n\t\tout = '',\n\t\tlast = 0,\n\t\tlinks = {},\n\t\tchunk, prev, token, inner, t;\n\n\tfunction tag(token) {\n\t\tvar desc = TAGS[token.replace(/\\*/g,'_')[1] || ''],\n\t\t\tend = context[context.length-1]==token;\n\t\tif (!desc) return token;\n\t\tif (!desc[1]) return desc[0];\n\t\tcontext[end?'pop':'push'](token);\n\t\treturn desc[end|0];\n\t}\n\n\tfunction flush() {\n\t\tlet str = '';\n\t\twhile (context.length) str += tag(context[context.length-1]);\n\t\treturn str;\n\t}\n\n\tmd = md.replace(/^\\[(.+?)\\]:\\s*(.+)$/gm, (s, name, url) => {\n\t\tlinks[name.toLowerCase()] = url;\n\t\treturn '';\n\t}).replace(/^\\n+|\\n+$/g, '');\n\n\twhile ( (token=tokenizer.exec(md)) ) {\n\t\tprev = md.substring(last, token.index);\n\t\tlast = tokenizer.lastIndex;\n\t\tchunk = token[0];\n\t\tif (prev.match(/[^\\\\](\\\\\\\\)*\\\\$/)) {\n\t\t\t// escaped\n\t\t}\n\t\t// Code/Indent blocks:\n\t\telse if (token[3] || token[4]) {\n\t\t\tchunk = '<pre class=\"code '+(token[4]?'poetry':token[2].toLowerCase())+'\">'+outdent(encodeAttr(token[3] || token[4]).replace(/^\\n+|\\n+$/g, ''))+'</pre>';\n\t\t}\n\t\t// > Quotes, -* lists:\n\t\telse if (token[6]) {\n\t\t\tt = token[6];\n\t\t\tif (t.match(/\\./)) {\n\t\t\t\ttoken[5] = token[5].replace(/^\\d+/gm, '');\n\t\t\t}\n\t\t\tinner = parse(outdent(token[5].replace(/^\\s*[>*+.-]/gm, '')));\n\t\t\tif (t==='>') t = 'blockquote';\n\t\t\telse {\n\t\t\t\tt = t.match(/\\./) ? 'ol' : 'ul';\n\t\t\t\tinner = inner.replace(/^(.*)(\\n|$)/gm, '<li>$1</li>');\n\t\t\t}\n\t\t\tchunk = '<'+t+'>' + inner + '</'+t+'>';\n\t\t}\n\t\t// Images:\n\t\telse if (token[8]) {\n\t\t\tchunk = `<img src=\"${encodeAttr(token[8])}\" alt=\"${encodeAttr(token[7])}\">`;\n\t\t}\n\t\t// Links:\n\t\telse if (token[10]) {\n\t\t\tout = out.replace('<a>', `<a href=\"${encodeAttr(token[11] || links[prev.toLowerCase()])}\">`);\n\t\t\tchunk = flush() + '</a>';\n\t\t}\n\t\telse if (token[9]) {\n\t\t\tchunk = '<a>';\n\t\t}\n\t\t// Headings:\n\t\telse if (token[12] || token[14]) {\n\t\t\tt = 'h' + (token[14] ? token[14].length : (token[13][0]==='='?1:2));\n\t\t\tchunk = '<'+t+'>' + parse(token[12] || token[15]) + '</'+t+'>';\n\t\t}\n\t\t// `code`:\n\t\telse if (token[16]) {\n\t\t\tchunk = '<code>'+encodeAttr(token[16])+'</code>';\n\t\t}\n\t\t// Inline formatting: *em*, **strong** & friends\n\t\telse if (token[17] || token[1]) {\n\t\t\tchunk = tag(token[17] || '--');\n\t\t}\n\t\tout += prev;\n\t\tout += chunk;\n\t}\n\n\treturn (out + md.substring(last) + flush()).trim();\n}\n"],"names":["const","let"],"mappings":"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"}
\No newline at end of file