UNPKG

5.75 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/index.js"],"names":["outdent","str","replace","RegExp","match","encodeAttr","parse","md","tag","token","desc","TAGS","end","context","length","flush","let","chunk","prev","inner","t","tokenizer","out","last","links","s","name","url","toLowerCase","exec","substring","index","lastIndex","trim","const","","_","\n"," ","-"],"mappings":"wKAWA,QAASA,GAAQC,GAChB,MAAOA,GAAIC,QAAQC,OAAO,KAAKF,EAAIG,MAAM,aAAe,IAAI,GAAI,MAAO,IAMxE,QAASC,GAAWJ,GACnB,OAAQA,EAAI,IAAIC,QAAQ,KAAM,UAAUA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAI7E,QAAwBI,GAAMC,GAQ7B,QAASC,GAAIC,GACZ,GAAIC,GAAOC,EAAKF,EAAMP,QAAQ,MAAM,KAAK,IAAM,IAC9CU,EAAMC,EAAQA,EAAQC,OAAO,IAAIL,CAClC,OAAKC,GACAA,EAAK,IACVG,EAAQD,EAAI,MAAM,QAAQH,GACnBC,EAAS,EAAJE,IAFSF,EAAK,GADRD,EAMnB,QAASM,KAER,IADAC,GAAIf,GAAM,GACHY,EAAQC,QAAQb,GAAOO,EAAIK,EAAQA,EAAQC,OAAO,GACzD,OAAOb,GAnBRe,GAKCC,GAAOC,EAAMT,EAAOU,EAAOC,EALxBC,EAAY,iVACfR,KACAS,EAAM,GACNC,EAAO,EACPC,IAuBD,KALAjB,EAAKA,EAAGL,QAAQ,wBAAyB,SAACuB,EAAGC,EAAMC,GAElD,MADAH,GAAME,EAAKE,eAAiBD,EACrB,KACLzB,QAAQ,aAAc,IAEhBO,EAAMY,EAAUQ,KAAKtB,IAC7BW,EAAOX,EAAGuB,UAAUP,EAAMd,EAAMsB,OAChCR,EAAOF,EAAUW,UACjBf,EAAQR,EAAM,GACVS,EAAKd,MAAM,qBAINK,EAAM,IAAMA,EAAM,GAC1BQ,EAAQ,qBAAqBR,EAAM,GAAG,SAASA,EAAM,GAAGmB,eAAe,KAAK5B,EAAQK,EAAWI,EAAM,IAAMA,EAAM,IAAIP,QAAQ,aAAc,KAAK,SAGxIO,EAAM,IACdW,EAAIX,EAAM,GACNW,EAAEhB,MAAM,QACXK,EAAM,GAAKA,EAAM,GAAGP,QAAQ,SAAU,KAEvCiB,EAAQb,EAAMN,EAAQS,EAAM,GAAGP,QAAQ,gBAAiB,MAChD,MAAJkB,EAASA,EAAI,cAEhBA,EAAIA,EAAEhB,MAAM,MAAQ,KAAO,KAC3Be,EAAQA,EAAMjB,QAAQ,gBAAiB,gBAExCe,EAAQ,IAAIG,EAAE,IAAMD,EAAQ,KAAKC,EAAE,KAG3BX,EAAM,GACdQ,EAAQ,aAAaZ,EAAWI,EAAM,IAAG,UAAUJ,EAAWI,EAAM,IAAG,KAG/DA,EAAM,KACda,EAAMA,EAAIpB,QAAQ,MAAO,YAAYG,EAAWI,EAAM,KAAOe,EAAMN,EAAKU,gBAAe,MACvFX,EAAQF,IAAU,QAEVN,EAAM,GACdQ,EAAQ,MAGAR,EAAM,KAAOA,EAAM,KAC3BW,EAAI,KAAOX,EAAM,IAAMA,EAAM,IAAIK,OAAyB,MAAfL,EAAM,IAAI,GAAS,EAAE,GAChEQ,EAAQ,IAAIG,EAAE,IAAMd,EAAMG,EAAM,KAAOA,EAAM,KAAO,KAAKW,EAAE,KAGnDX,EAAM,IACdQ,EAAQ,SAASZ,EAAWI,EAAM,KAAK,WAG/BA,EAAM,KAAOA,EAAM,MAC3BQ,EAAQT,EAAIC,EAAM,KAAO,QAE1Ba,GAAOJ,EACPI,GAAOL,CAGR,QAAQK,EAAMf,EAAGuB,UAAUP,GAAQR,KAASkB,OAzG7CC,GAAMvB,IACLwB,IAAM,OAAO,SACbC,GAAK,WAAW,aAChBC,MAAQ,UACRC,KAAO,UACPC,KAAM","file":"snarkdown.umd.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"]}
\No newline at end of file