2 lines
2.6 KiB
JavaScript
2 lines
2.6 KiB
JavaScript
"use strict";var e=/^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,t=/^<\/([-A-Za-z0-9_]+)[^>]*>/,r=/([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g,s=/^<code.*?>([\s\S]*?)<\/code>/,a=f("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"),i=f("a,address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video"),n=f("abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),o=f("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"),l=f("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),c=f("wxxxcode-style,script,style,view,scroll-view,block"),d="";function f(e){for(var t={},r=e.split(","),s=0;s<r.length;s++)t[r[s]]=!0;return t}exports.HTMLParser=function(f,p){var u,h,m,b=[],g=f;for(b.last=function(){return this[this.length-1]};f;){if(h=!0,b.last()&&c[b.last()])f=f.replace(new RegExp("([\\s\\S]*?)</"+b.last()+"[^>]*>"),(function(e,t){return t=t.replace(/<!--([\s\S]*?)-->|<!\[CDATA\[([\s\S]*?)]]>/g,"$1$2"),p.chars&&""!==t.trim()&&p.chars(t),""})),k("",b.last());else{if(0==f.indexOf("\x3c!--"))(u=f.indexOf("--\x3e"))>=0&&(p.comment&&p.comment(f.substring(4,u)),f=f.substring(u+3),h=!1);else if(0==f.indexOf("</"))(m=f.match(t))&&(f=f.substring(m[0].length),m[0].replace(t,k),h=!1);else if(0==f.indexOf("<")&&(m=f.match(e))){if("code"===m[1]){var v=f.match(s);d=v[1]||""}f=f.substring(m[0].length),m[0].replace(e,w),h=!1}if(h){u=f.indexOf("<");for(var x="";0===u;)x+="<",u=(f=f.substring(1)).indexOf("<");x+=u<0?f:f.substring(0,u),f=u<0?"":f.substring(u),p.chars&&""!==x.trim()&&p.chars(x)}}if(f==g)throw"Parse Error: "+f;g=f}function w(e,t,s,c){if(t=t.toLowerCase(),i[t])for(;b.last()&&n[b.last()];)k("",b.last());if(o[t]&&b.last()==t&&k("",t),(c=a[t]||!!c)||b.push(t),p.start){var f=[];if(s.replace(r,(function(e,t){var r=arguments[2]?arguments[2]:arguments[3]?arguments[3]:arguments[4]?arguments[4]:l[t]?t:"";f.push({name:t,value:r,escaped:r.replace(/(^|[^\\])"/g,'$1\\"')})})),p.start){var u=d||"";p.start(t,f,c,u),d=""}}}function k(e,t){if(t){t=t.toLowerCase();for(r=b.length-1;r>=0&&b[r]!=t;r--);}else var r=0;if(r>=0){for(var s=b.length-1;s>=r;s--)p.end&&p.end(b[s]);b.length=r}}k()};
|