showdown.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. /*
  2. A A L Source code at:
  3. T C A <http://www.attacklab.net/>
  4. T K B
  5. */
  6. var Showdown={};
  7. Showdown.converter=function(){
  8. var _1;
  9. var _2;
  10. var _3;
  11. var _4=0;
  12. this.makeHtml=function(_5){
  13. _1=new Array();
  14. _2=new Array();
  15. _3=new Array();
  16. _5=_5.replace(/~/g,"~T");
  17. _5=_5.replace(/\$/g,"~D");
  18. _5=_5.replace(/\r\n/g,"\n");
  19. _5=_5.replace(/\r/g,"\n");
  20. _5="\n\n"+_5+"\n\n";
  21. _5=_6(_5);
  22. _5=_5.replace(/^[ \t]+$/mg,"");
  23. _5=_7(_5);
  24. _5=_8(_5);
  25. _5=_9(_5);
  26. _5=_a(_5);
  27. _5=_5.replace(/~D/g,"$$");
  28. _5=_5.replace(/~T/g,"~");
  29. return _5;
  30. };
  31. var _8=function(_b){
  32. var _b=_b.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|\Z)/gm,function(_c,m1,m2,m3,m4){
  33. m1=m1.toLowerCase();
  34. _1[m1]=_11(m2);
  35. if(m3){
  36. return m3+m4;
  37. }else{
  38. if(m4){
  39. _2[m1]=m4.replace(/"/g,"&quot;");
  40. }
  41. }
  42. return "";
  43. });
  44. return _b;
  45. };
  46. var _7=function(_12){
  47. _12=_12.replace(/\n/g,"\n\n");
  48. var _13="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del";
  49. var _14="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math";
  50. _12=_12.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,_15);
  51. _12=_12.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,_15);
  52. _12=_12.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,_15);
  53. _12=_12.replace(/(\n\n[ ]{0,3}<!(--[^\r]*?--\s*)+>[ \t]*(?=\n{2,}))/g,_15);
  54. _12=_12.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,_15);
  55. _12=_12.replace(/\n\n/g,"\n");
  56. return _12;
  57. };
  58. var _15=function(_16,m1){
  59. var _18=m1;
  60. _18=_18.replace(/\n\n/g,"\n");
  61. _18=_18.replace(/^\n/,"");
  62. _18=_18.replace(/\n+$/g,"");
  63. _18="\n\n~K"+(_3.push(_18)-1)+"K\n\n";
  64. return _18;
  65. };
  66. var _9=function(_19){
  67. _19=_1a(_19);
  68. var key=_1c("<hr />");
  69. _19=_19.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,key);
  70. _19=_19.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,key);
  71. _19=_19.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,key);
  72. _19=_1d(_19);
  73. _19=_1e(_19);
  74. _19=_1f(_19);
  75. _19=_7(_19);
  76. _19=_20(_19);
  77. return _19;
  78. };
  79. var _21=function(_22){
  80. _22=_23(_22);
  81. _22=_24(_22);
  82. _22=_25(_22);
  83. _22=_26(_22);
  84. _22=_27(_22);
  85. _22=_28(_22);
  86. _22=_11(_22);
  87. _22=_29(_22);
  88. _22=_22.replace(/ +\n/g," <br />\n");
  89. return _22;
  90. };
  91. var _24=function(_2a){
  92. var _2b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--.*?--\s*)+>)/gi;
  93. _2a=_2a.replace(_2b,function(_2c){
  94. var tag=_2c.replace(/(.)<\/?code>(?=.)/g,"$1`");
  95. tag=_2e(tag,"\\`*_");
  96. return tag;
  97. });
  98. return _2a;
  99. };
  100. var _27=function(_2f){
  101. _2f=_2f.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,_30);
  102. _2f=_2f.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?(.*?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,_30);
  103. _2f=_2f.replace(/(\[([^\[\]]+)\])()()()()()/g,_30);
  104. return _2f;
  105. };
  106. var _30=function(_31,m1,m2,m3,m4,m5,m6,m7){
  107. if(m7==undefined){
  108. m7="";
  109. }
  110. var _39=m1;
  111. var _3a=m2;
  112. var _3b=m3.toLowerCase();
  113. var url=m4;
  114. var _3d=m7;
  115. if(url==""){
  116. if(_3b==""){
  117. _3b=_3a.toLowerCase().replace(/ ?\n/g," ");
  118. }
  119. url="#"+_3b;
  120. if(_1[_3b]!=undefined){
  121. url=_1[_3b];
  122. if(_2[_3b]!=undefined){
  123. _3d=_2[_3b];
  124. }
  125. }else{
  126. if(_39.search(/\(\s*\)$/m)>-1){
  127. url="";
  128. }else{
  129. return _39;
  130. }
  131. }
  132. }
  133. url=_2e(url,"*_");
  134. var _3e="<a href=\""+url+"\"";
  135. if(_3d!=""){
  136. _3d=_3d.replace(/"/g,"&quot;");
  137. _3d=_2e(_3d,"*_");
  138. _3e+=" title=\""+_3d+"\"";
  139. }
  140. _3e+=">"+_3a+"</a>";
  141. return _3e;
  142. };
  143. var _26=function(_3f){
  144. _3f=_3f.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,_40);
  145. _3f=_3f.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,_40);
  146. return _3f;
  147. };
  148. var _40=function(_41,m1,m2,m3,m4,m5,m6,m7){
  149. var _49=m1;
  150. var _4a=m2;
  151. var _4b=m3.toLowerCase();
  152. var url=m4;
  153. var _4d=m7;
  154. if(!_4d){
  155. _4d="";
  156. }
  157. if(url==""){
  158. if(_4b==""){
  159. _4b=_4a.toLowerCase().replace(/ ?\n/g," ");
  160. }
  161. url="#"+_4b;
  162. if(_1[_4b]!=undefined){
  163. url=_1[_4b];
  164. if(_2[_4b]!=undefined){
  165. _4d=_2[_4b];
  166. }
  167. }else{
  168. return _49;
  169. }
  170. }
  171. _4a=_4a.replace(/"/g,"&quot;");
  172. url=_2e(url,"*_");
  173. var _4e="<img src=\""+url+"\" alt=\""+_4a+"\"";
  174. _4d=_4d.replace(/"/g,"&quot;");
  175. _4d=_2e(_4d,"*_");
  176. _4e+=" title=\""+_4d+"\"";
  177. _4e+=" />";
  178. return _4e;
  179. };
  180. var _1a=function(_4f){
  181. _4f=_4f.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(_50,m1){
  182. return _1c("<h1>"+_21(m1)+"</h1>");
  183. });
  184. _4f=_4f.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(_52,m1){
  185. return _1c("<h2>"+_21(m1)+"</h2>");
  186. });
  187. _4f=_4f.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(_54,m1,m2){
  188. var _57=m1.length;
  189. return _1c("<h"+_57+">"+_21(m2)+"</h"+_57+">");
  190. });
  191. return _4f;
  192. };
  193. var _58;
  194. var _1d=function(_59){
  195. _59+="~0";
  196. var _5a=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;
  197. if(_4){
  198. _59=_59.replace(_5a,function(_5b,m1,m2){
  199. var _5e=m1;
  200. var _5f=(m2.search(/[*+-]/g)>-1)?"ul":"ol";
  201. _5e=_5e.replace(/\n{2,}/g,"\n\n\n");
  202. var _60=_58(_5e);
  203. _60=_60.replace(/\s+$/,"");
  204. _60="<"+_5f+">"+_60+"</"+_5f+">\n";
  205. return _60;
  206. });
  207. }else{
  208. _5a=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;
  209. _59=_59.replace(_5a,function(_61,m1,m2,m3){
  210. var _65=m1;
  211. var _66=m2;
  212. var _67=(m3.search(/[*+-]/g)>-1)?"ul":"ol";
  213. var _66=_66.replace(/\n{2,}/g,"\n\n\n");
  214. var _68=_58(_66);
  215. _68=_65+"<"+_67+">\n"+_68+"</"+_67+">\n";
  216. return _68;
  217. });
  218. }
  219. _59=_59.replace(/~0/,"");
  220. return _59;
  221. };
  222. _58=function(_69){
  223. _4++;
  224. _69=_69.replace(/\n{2,}$/,"\n");
  225. _69+="~0";
  226. _69=_69.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,function(_6a,m1,m2,m3,m4){
  227. var _6f=m4;
  228. var _70=m1;
  229. var _71=m2;
  230. if(_70||(_6f.search(/\n{2,}/)>-1)){
  231. _6f=_9(_72(_6f));
  232. }else{
  233. _6f=_1d(_72(_6f));
  234. _6f=_6f.replace(/\n$/,"");
  235. _6f=_21(_6f);
  236. }
  237. return "<li>"+_6f+"</li>\n";
  238. });
  239. _69=_69.replace(/~0/g,"");
  240. _4--;
  241. return _69;
  242. };
  243. var _1e=function(_73){
  244. _73+="~0";
  245. _73=_73.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(_74,m1,m2){
  246. var _77=m1;
  247. var _78=m2;
  248. _77=_79(_72(_77));
  249. _77=_6(_77);
  250. _77=_77.replace(/^\n+/g,"");
  251. _77=_77.replace(/\n+$/g,"");
  252. _77="<pre><code>"+_77+"\n</code></pre>";
  253. return _1c(_77)+_78;
  254. });
  255. _73=_73.replace(/~0/,"");
  256. return _73;
  257. };
  258. var _1c=function(_7a){
  259. _7a=_7a.replace(/(^\n+|\n+$)/g,"");
  260. return "\n\n~K"+(_3.push(_7a)-1)+"K\n\n";
  261. };
  262. var _23=function(_7b){
  263. _7b=_7b.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(_7c,m1,m2,m3,m4){
  264. var c=m3;
  265. c=c.replace(/^([ \t]*)/g,"");
  266. c=c.replace(/[ \t]*$/g,"");
  267. c=_79(c);
  268. return m1+"<code>"+c+"</code>";
  269. });
  270. return _7b;
  271. };
  272. var _79=function(_82){
  273. _82=_82.replace(/&/g,"&amp;");
  274. _82=_82.replace(/</g,"&lt;");
  275. _82=_82.replace(/>/g,"&gt;");
  276. _82=_2e(_82,"*_{}[]\\",false);
  277. return _82;
  278. };
  279. var _29=function(_83){
  280. _83=_83.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"<strong>$2</strong>");
  281. _83=_83.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"<em>$2</em>");
  282. return _83;
  283. };
  284. var _1f=function(_84){
  285. _84=_84.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(_85,m1){
  286. var bq=m1;
  287. bq=bq.replace(/^[ \t]*>[ \t]?/gm,"~0");
  288. bq=bq.replace(/~0/g,"");
  289. bq=bq.replace(/^[ \t]+$/gm,"");
  290. bq=_9(bq);
  291. bq=bq.replace(/(^|\n)/g,"$1 ");
  292. bq=bq.replace(/(\s*<pre>[^\r]+?<\/pre>)/gm,function(_88,m1){
  293. var pre=m1;
  294. pre=pre.replace(/^ /mg,"~0");
  295. pre=pre.replace(/~0/g,"");
  296. return pre;
  297. });
  298. return _1c("<blockquote>\n"+bq+"\n</blockquote>");
  299. });
  300. return _84;
  301. };
  302. var _20=function(_8b){
  303. _8b=_8b.replace(/^\n+/g,"");
  304. _8b=_8b.replace(/\n+$/g,"");
  305. var _8c=_8b.split(/\n{2,}/g);
  306. var _8d=new Array();
  307. var end=_8c.length;
  308. for(var i=0;i<end;i++){
  309. var str=_8c[i];
  310. if(str.search(/~K(\d+)K/g)>=0){
  311. _8d.push(str);
  312. }else{
  313. if(str.search(/\S/)>=0){
  314. str=_21(str);
  315. str=str.replace(/^([ \t]*)/g,"<p>");
  316. str+="</p>";
  317. _8d.push(str);
  318. }
  319. }
  320. }
  321. end=_8d.length;
  322. for(var i=0;i<end;i++){
  323. while(_8d[i].search(/~K(\d+)K/)>=0){
  324. var _91=_3[RegExp.$1];
  325. _91=_91.replace(/\$/g,"$$$$");
  326. _8d[i]=_8d[i].replace(/~K\d+K/,_91);
  327. }
  328. }
  329. return _8d.join("\n\n");
  330. };
  331. var _11=function(_92){
  332. _92=_92.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&amp;");
  333. _92=_92.replace(/<(?![a-z\/?\$!])/gi,"&lt;");
  334. return _92;
  335. };
  336. var _25=function(_93){
  337. _93=_93.replace(/\\(\\)/g,_94);
  338. _93=_93.replace(/\\([`*_{}\[\]()>#+-.!])/g,_94);
  339. return _93;
  340. };
  341. var _28=function(_95){
  342. _95=_95.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,"<a href=\"$1\">$1</a>");
  343. _95=_95.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(_96,m1){
  344. return _98(_a(m1));
  345. });
  346. return _95;
  347. };
  348. var _98=function(_99){
  349. function char2hex(ch){
  350. var _9b="0123456789ABCDEF";
  351. var dec=ch.charCodeAt(0);
  352. return (_9b.charAt(dec>>4)+_9b.charAt(dec&15));
  353. }
  354. var _9d=[function(ch){
  355. return "&#"+ch.charCodeAt(0)+";";
  356. },function(ch){
  357. return "&#x"+char2hex(ch)+";";
  358. },function(ch){
  359. return ch;
  360. }];
  361. _99="mailto:"+_99;
  362. _99=_99.replace(/./g,function(ch){
  363. if(ch=="@"){
  364. ch=_9d[Math.floor(Math.random()*2)](ch);
  365. }else{
  366. if(ch!=":"){
  367. var r=Math.random();
  368. ch=(r>0.9?_9d[2](ch):r>0.45?_9d[1](ch):_9d[0](ch));
  369. }
  370. }
  371. return ch;
  372. });
  373. _99="<a href=\""+_99+"\">"+_99+"</a>";
  374. _99=_99.replace(/">.+:/g,"\">");
  375. return _99;
  376. };
  377. var _a=function(_a3){
  378. _a3=_a3.replace(/~E(\d+)E/g,function(_a4,m1){
  379. var _a6=parseInt(m1);
  380. return String.fromCharCode(_a6);
  381. });
  382. return _a3;
  383. };
  384. var _72=function(_a7){
  385. _a7=_a7.replace(/^(\t|[ ]{1,4})/gm,"~0");
  386. _a7=_a7.replace(/~0/g,"");
  387. return _a7;
  388. };
  389. var _6=function(_a8){
  390. _a8=_a8.replace(/\t(?=\t)/g," ");
  391. _a8=_a8.replace(/\t/g,"~A~B");
  392. _a8=_a8.replace(/~B(.+?)~A/g,function(_a9,m1,m2){
  393. var _ac=m1;
  394. var _ad=4-_ac.length%4;
  395. for(var i=0;i<_ad;i++){
  396. _ac+=" ";
  397. }
  398. return _ac;
  399. });
  400. _a8=_a8.replace(/~A/g," ");
  401. _a8=_a8.replace(/~B/g,"");
  402. return _a8;
  403. };
  404. var _2e=function(_af,_b0,_b1){
  405. var _b2="(["+_b0.replace(/([\[\]\\])/g,"\\$1")+"])";
  406. if(_b1){
  407. _b2="\\\\"+_b2;
  408. }
  409. var _b3=new RegExp(_b2,"g");
  410. _af=_af.replace(_b3,_94);
  411. return _af;
  412. };
  413. var _94=function(_b4,m1){
  414. var _b6=m1.charCodeAt(0);
  415. return "~E"+_b6+"E";
  416. };
  417. };
  418. if(typeof exports!='undefined')exports.Showdown=Showdown;