Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //note end bracket/brace/parenth character indexes are index Of that end character not index after
- self.JScrawl={
- "XrakScrps":function(hs,gd){var T=this,d=document,db=document.body,ifr=T.ifr1||(T.ifr1=d.createElement("iframe")),Hdoc;
- db.appendChild(ifr);Hdoc=ifr.contentDocument;db.removeChild(ifr);
- Hdoc.documentElement.innerHTML=hs;
- return gd?Hdoc:Hdoc.getElementsByTagName("script");
- },
- "jsp_":function javascript_parse_string(js){
- var i=0,
- lev=[],ins,em={"(":")","[":"]","{":"}"}, //lev = bracket level, em=end bracket map
- AM=[], //all map
- bm=[],cl=0,lc=0, //bm = bracket map [bracketChar, AbsoluteIndex, MatchingBracketAbsoluteIndex,IndexOfMatchingBracketInBmArray]; cl=current line; lc=line character (current character index on line)
- Lm={"(":[],"[":[],"{":[]}, //Last match (bracket)
- sm=[],nl=[], //string map [denoterChar,AbsoluteIndex,AbsoluteEndIndex], nl=new line array
- evs=":?&|*^-+<>!",ev=1,rf="gimsuy",rm=[],inR, //expecting value string;ev = expecting value (not literal number) rather any value, after : or , or = or [ or "(" a value is expected; a "value" can be anything besides whitespace ? Right now this is just to determine if '/' has the context of division or regex; rm=RegEx map; inR = in RegEx;
- inC,cm=[], //inC= in comment, cm= comment map [denoteType,AbsoluteIndex,AbsoluteEndIndex]
- stmnt=["case","class","const","break","delete","do","else","export","for","function","import","in","let","new","of","return","switch","this","throw","var","while","with","yield"],
- stmtR=new RegExp(stmnt.join("|")),
- a_z=/[a-zA-Z]/,Var=/[a-zA-Z_$]/,num=/[0-9]/,hex=/[0-9a-fA-F]/,
- nm=[], //Number Map
- vm=[], //Var Map
- smm=[], //StateMent Map
- B,b,ws="\t \xA0\f\v",Lnw; //B & b=buffer (generic temp storage), ws= whitespace, Lnw = Last non-whitespace
- while(i<js.length){
- let c=js[i];
- if(ws.indexOf(c)+1){ //white space
- if(js[i-1]=="/"){ev=1;}
- }else if(ins){ //in string
- if(c==ins&&js[i-1]!="\x5C"){ ins=!1; sm[sm.length-1][2]=i+1; }
- }else if(inR){ //in RegEx in regex (/) like in string and differentiate it from division operator by weather a value has come before it?
- if(inR==1){
- if(c=="/"&&js[i-1]!="\x5C"){ if(rf.indexOf(js[i+1])+1){ inR=2; }else{ inR=!1; rm[rm.length-1][1]=i+1; } }
- }else if(inR==2){ if(rf.indexOf(js[i+1])<0){ inR=!1; rm[rm.length-1][1]=i+1; } }
- }else if(inC){ //in Comment
- if((inC=="//"&&(c=="\r"||c=="\n"))||(inC=="/*"&&c=="/"&&js[i-1]=="*")){inC=!1;cm[cm.length-1][2]=i+1;}
- }else{
- if(c=="\n"||(c=="\r"&&js[i+1]!="\n")){ nl.push(i); AM.push(["nl",i]); }
- else{
- if(c=="/"){
- if((B=c[i+1])==c){ cm.push(b=["//",i]); inC="//"; AM.push(["cm",b]); }
- else if(B=="*"){ cm.push(b=["/*",i]); inC="/*"; AM.push(["cm",b]); }
- else if(ev){ inR=1; rm.push(b=[i]); AM.push(["rm",b]); }
- }
- else if(c==";"){ ev=1; }
- else if(evs.indexOf(c)+1){ ev=1; }
- else if((c=='"'||c=="'")){sm.push(b=[ins=c,i]); AM.push(["sm",b]);}
- else if(c=="("||c=="["||c=="{"){lev.push(c); Lm[c].push(bm.push(b=[c,i])-1); AM.push(["bm",b]); ev=1; }
- else if(lev.length&&c==em[lev[lev.length-1]]){ let m=Lm[lev.pop()].pop(); (B=bm[m])[2]=i;B[3]=bm.push(b=[c,i,bm[m][1],m])-1; AM.push(["bm",b]); ev=0; }
- else if(num.test(c)){ ev=0; nm.push(b=[i]); AM.push(["nm",b]); let T=num,o=1; if(c=="0"&&js[i+1]=="x"){o++;T=hex;} while(T.test(js[i+o]))o++; b[1]=i+o; i+=(o-1);/*Number*/ }
- else if(Var.test(c)){ //var and statement
- let o=1; while(Var.test(B=js[i+o])||num.test(B))o++; let T,p=js[Lnw]==".",cv=js.substr(i,o);
- b=[i,i+o];
- if((!p)&&stmtR.test(cv)){ T="smm"; smm.push(b); }
- else{ T="vm"; vm.push(b); if(p)b[2]=!0; }
- AM.push([T,b]);
- i+=(o-1);
- }
- Lnw=i;
- }
- }
- i++;
- }
- return {"raw":js,"bm":bm,"sm":sm,"nl":nl,"cm":cm,"rm":rm,"nm":nm,"vm":vm,"smm":smm,"AM":AM};
- },
- "XtrkJSON":function(jspo){
- var jsna=[],js=jspo.raw,Rs="";
- for(let V of jspo.bm){ if(V[0]=="{"){
- let R=js.substring(V[1],V[2]+1),jo;
- try{ if(V[2]-V[1]>3&&Rs.indexOf(R)<0){ jo=JSON.parse(R); Rs+=(";\r\n\r\n"+R); jsna.push([V,jo]); } }catch(e){}
- } }
- return jsna;
- },
- //is this a useful function?
- "splunk":function(s,f,dil,d2){
- var fi=s.indexOf(f); if(!d2)d2=dil;
- return s.substring(s.lastIndexOf(dil,fi)+dil.length,s.indexOf(d2,fi)+d2.length);
- }
- };
- // = 0xA0 =
Add Comment
Please, Sign In to add comment