User:PerfektesChaos/js/idResolver/core/r.js

/// User:PerfektesChaos/js/idResolver/core/r.js /// 2018-10-02 PerfektesChaos@de.wikipedia /// Fingerprint:#0#364CDDD2# /// @license GPL [//www.mediawiki.org/w/COPYING](+GFDL,LGPL,CC-BY-SA) /// (function(mw,$){ "use strict"; var Version=1.92,IDA="idResolver",IDEA={illusive:0.85,signature:"ext.gadget."+IDA,sub:"/core",type:IDA,seen:"#00008B"},CHANCE={},TYPES,OO; TYPES={pdf:{ext:"PDF",start:"[./=]",commons:"2/23/Icons-mini-file_acrobat.gif" },msexcel:{ext:"XLS",commons:"b/ba/Page_white_excel.png" },msword:{ext:"DOC",commons:"a/a1/Page_white_word.png" } }; function fair(adjust){ return adjust.replace(/'/g, "&#39;" ) .replace(//g,"&gt;");} function fiat(application,adaption){ IDA=application; IDA.vsn=IDA.vsn+" /"+Version; if(typeof IDA.launched!=="boolean"){ IDA.launched=true; IDEA.cfg=adaption; if(typeof IDEA.cfg.seen==="string"&&/[0-9A-Fa-f]{6}/.test(IDEA.cfg.seen)){ IDEA.seen="#"+IDEA.cfg.seen;} mw.loader.using(["oojs","oojs-ui-core","oojs-ui-widgets"],IDEA.first);}} function find(append,already){ return(already?already+",":"")+"[href*='"+append+"']";} function fire{ var signature=IDEA.signature+IDEA.sub,rls; if(mw.loader.getState(signature)!=="ready"){ rls={}; rls[signature]="ready"; mw.loader.state(rls); mw.hook(IDEA.type+IDEA.sub+".ready").fire(fiat);}} CHANCE.dnb={live:true,re:new RegExp("/(?:gnd/)?([0-9][0-9.]+-?[0-9xX])$") }; CHANCE.dnb.resolver=[ "https://d-nb.info/#","https://www.deutsche-digitale-bibliothek.de/entity/#","http://swb.bsz-bw.de/DB=2.104/SET=1/TTL=1//CMD?retrace=0"+"&trm_old=&ACT=SRCHA&IKT=2999&SRT=RLV&MATCFILTER=N&MATCSET=N"+"&NOABS=Y&SHRTST=50&TRM=#","https://beacon.findbuch.de/seealso/pnd-aks?format=sources&id=#"]; CHANCE.dnb.find=function{ var s=find("//d-nb.info/"); s=find("//www.deutsche-digitale-bibliothek.de/entity/",s); IDEA.$external.filter(s).each(CHANCE.dnb.found); s=find("//portal.dnb.de/opac.htm?method="); IDEA.$external.filter(s).filter(find("&query=idn%3D")).each(CHANCE.dnb.found2); }; CHANCE.dnb.found=function(ignore,element){ var $a=$(element),sign=$a.attr("href"),got=CHANCE.dnb.re.exec(sign); if(got){ IDEA.fiat($a,"dnb",got[1]);} }; CHANCE.dnb.found2=function(ignore,element){ var $a=$(element),sign=$a.attr("href"),got; if(typeof CHANCE.dnb.re2!=="object"){ CHANCE.dnb.re2=new RegExp("&query=idn%3D([0-9]+)\\b");} got=CHANCE.dnb.re2.exec(sign); if(got){ IDEA.fiat($a,"dnb",got[1]);} }; CHANCE.doi={live:true,re:new RegExp("[/=](10\\.[0-9]+(?:/|%2F)[^?&#]+)(?:[?&#].*)?$")}; CHANCE.doi.resolver=[ "https://doi.org/#","https://dx.doi.org/#","http://dx.doi.org/#","http://doai.io/#","https://openaccessbutton.org/#","https://sci-hub.io/#","https://scholar.google.de/scholar?q=#"]; CHANCE.doi.find=function{ var seek=find("//dx.doi.org/10."); IDEA.$extiw.filter(seek).each(CHANCE.doi.found); seek=find("//doai.io/10.",seek); seek=find("//openaccessbutton.org/10.",seek); IDEA.$external.filter(seek).each(CHANCE.doi.found); seek=find("//onlinelibrary.wiley.com/"); IDEA.$external.filter(seek).filter(find("doi/10.")) .each(CHANCE.doi.found); seek=find("//www.springerlink.com/"); IDEA.$external.filter(seek).filter(find("ndex/10.")) .each(CHANCE.doi.found); seek=find("google.com/scholar?q="); seek=find("google.de/scholar?q=",seek); IDEA.$external.filter(seek).filter(find("/scholar?q=10.")) .each(CHANCE.doi.found); }; CHANCE.doi.found=function(ignore,element){ var $a=$(element),sign=$a.attr("href"),got=CHANCE.doi.re.exec(sign); if(got){ sign=got[1]; try{ sign=decodeURIComponent(sign); }catch(e){ } IDEA.fiat($a,"doi",sign);} }; CHANCE.isbn={live:true,resolver:null}; CHANCE.isbn.factory=function(alien){ var r,suite; if(alien){ suite="isbn/"+alien; }else{ suite="isbn";} if(typeof IDEA.patterns[suite]==="object"){ r=IDEA.patterns[suite]; }else{ r=IDEA.factory(suite,CHANCE.isbn.lib.finder(alien));} return r; }; CHANCE.isbn.fed=function(application){ CHANCE.isbn.lib=application; CHANCE.isbn.list=false; if(typeof CHANCE.isbn.cfg==="object"){ if(typeof CHANCE.isbn.cfg.list==="boolean"){ CHANCE.isbn.list=CHANCE.isbn.cfg.list;} if(typeof CHANCE.isbn.cfg.catalogs==="object"){ CHANCE.isbn.lib.furnish(CHANCE.isbn.cfg.catalogs);}} CHANCE.isbn.re=new RegExp("/([0-9]+[xX]?)$"); CHANCE.isbn.fire; }; CHANCE.isbn.feeder=function(after){ var rls; CHANCE.isbn.fire=after; if(!mw.loader.getState("ext.gadget.isbnLib")){ rls={}; rls["ext.gadget.isbnLib"]="loading"; mw.loader.state(rls); mw.loader.load("https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/isbnLib/"+(Version>0?"r":"d")+".js&bcache=1&maxage=604810&action=raw&ctype=text/javascript");} mw.hook("isbnLib.ready").add(CHANCE.isbn.fed); }; CHANCE.isbn.$fetch=function(ask){ var slang=CHANCE.isbn.lib.focus(ask),pattern=CHANCE.isbn.factory(slang),$a=$(""),$r=$(" "),s,$span; $a.attr({"href":"/wiki/Special:Booksources/"+ask, "target":IDEA.fork("www","URL"), "title":s}).css({"font-weight":"bold"}) .text("Wiki"); $r.append($a).append($(" ")); IDEA.fill("isbn",pattern,ask,$r); if(CHANCE.isbn.list){ s=CHANCE.isbn.lib.flip(ask); if(s){ $span=$(" ").css({"color":"#404040"}).text(s); $r.append($(" ")) .append($span);}} return $r; }; CHANCE.isbn.find=function($area){ $area.find(".mw-magiclink-isbn").each(CHANCE.isbn.found); }; CHANCE.isbn.found=function(ignore,element){ var $a=$(element),source=$a.attr("href"),got=CHANCE.isbn.re.exec(source),show,sign; if(got){ sign=got[1].toUpperCase; show=CHANCE.isbn.lib.format(sign); if(show){ $a.text("ISBN "+show); IDEA.fiat($a,"isbn",sign);}} }; CHANCE.issn={live:true,re:new RegExp("[/=:]([0-9]{4}-?[0-9]{3}[0-9xX])(?:&.+)?$") }; CHANCE.issn.resolver=[ "http://www.worldcat.org/issn/#","http://dispatch.opac.dnb.de/DB=1.1/CMD?ACT=SRCHA&IKT=8&TRM=#","http://services.dnb.de/fize-service/gvr/html-service.htm?issn=#","http://www.jstor.org/journals/#","http://www.sudoc.abes.fr//DB=2.1/SET=1/TTL=1/CLK?IKT=8&TRM=#"]; CHANCE.issn.find=function{ var s=find("//www.worldcat.org/issn/"); s=find("//www.worldcat.org/search?fq=x0:jrnl&q=n2:",s); s=find("//zdb-katalog.de/list.xhtml?key=iss&t=",s); s=find("//services.dnb.de/fize-service/gvr/html-service.htm?issn=",s); s=find("//dispatch.opac.d-nb.de/DB=1.1/CMD?ACT=SRCHA&IKT=8&TRM=",s); IDEA.$external.filter(s).each(CHANCE.issn.found); }; CHANCE.issn.found=function(ignore,element){ var $a=$(element),sign=$a.attr("href"),got=CHANCE.issn.re.exec(sign),s; if(got){ s=got[1].replace(/-/,""); IDEA.fiat($a,"issn",s);} }; CHANCE.www={live:true}; CHANCE.www.resolver=[ "https://web.archive.org/web/*/#","http://www.webcitation.org/query?url=#","https://archive.is/#"]; CHANCE.www.$fetch=function(ask){ var pattern=IDEA.factory("www",CHANCE.www.resolver),s=fair(ask),$a=$(""),$r=$(" "); $a.attr({"href":s, "target":IDEA.fork("www","URL"), "title":s}).css({"font-weight":"bold"}) .text("URL"); $r.append($a).append($(" ")); IDEA.fill("www",pattern,s,$r); return $r; }; CHANCE.www.find=function{ IDEA.$external.filter(find("//")).each(CHANCE.www.found); }; CHANCE.www.found=function(ignore,element){ var $a=$(element),sign=$a.attr("href"),s; if(sign.indexOf(".org/w")>0){ if(typeof CHANCE.www.reWiki!=="object"){ s="(?:ipedia|ibooks|idata|imedia|imediafoundation|inews|iquote|isource|iversity|ivoyage|tionary)"; s="\\/\\/[^/#?]*\\.?wik"+s+"\\.org/w"; s="^(?:[hft]+tps?:)?"+s; CHANCE.www.reWiki=new RegExp(s);} if(CHANCE.www.reWiki.test(sign)){ sign=false;}} if(sign){ IDEA.fiat($a,"www",sign); IDEA.format($a,sign);} }; CHANCE.arxiv={live:false}; CHANCE.handle={live:false}; CHANCE.lccn={live:false}; CHANCE.pmid={live:false}; IDEA.factory=function(assign,apply){ var i,r,show,src; if(typeof IDEA.patterns[assign]==="object"){ r=IDEA.patterns[assign]; }else{ r=[]; for(i=0;i<apply.length;i++){ src=apply[i]; show=IDEA.flat(src); if(show){ r.push([src,show]);}} IDEA.patterns[assign]=r;} return r; }; IDEA.features=function(adapt){ var i,src,urls; if(typeof adapt.cfg.resolver==="object"){ urls=adapt.cfg.resolver; if(typeof urls.length==="number"){ for(i=0;i<urls.length;i++){ src=urls[i]; if($.inArray(src,adapt.resolver)<0){ adapt.resolver.push(src);}}}} }; IDEA.$fetch=function(assigned,ask,already){ var pattern=IDEA.factory(assigned,CHANCE[assigned].resolver),$r=$(" "); IDEA.fill(assigned,pattern,ask,$r,already); return $r; }; IDEA.fiat=function($a,assigned,access){ var shift=CHANCE[assigned].shift,props; if(shift){ $a.attr("href",shift.replace(IDEA.re,access)).addClass("external "+IDEA.type+"-shifted"); }else{ props={ "data-href":$a.attr("href")}; props[IDEA.store+"scope"]=assigned; props[IDEA.store+"sign"]=access; if(assigned==="www"){ props.title=access; }else{ props.title=assigned+":"+access; $a.css({"white-space":"nowrap"});} $a.attr(props).addClass(IDEA.type+" "+IDEA.type+"-"+assigned).dblclick(IDEA.flash).click(IDEA.flip); IDEA.followed($a,assigned+access);} }; IDEA.fill=function(adjacent,album,ask,$all,already){ var s=fair(ask),sites=" ",i,pattern,site; for(i=0;i<album.length;i++){ if(i){ $all.append($(" "));} pattern=album[i]; site=pattern[0].replace(IDEA.re,s); if(site!==already){ $all.append(IDEA.$forward(adjacent,site,pattern[1])); if(already){ sites=sites+site+" ";}}} if(already&&sites.indexOf(" "+already)<0){ $all.append($(" ")) .append(IDEA.$forward(adjacent,already,IDEA.flat(already)));} }; IDEA.fire=function{ var handler,i,scope; for(i=0;i<IDEA.codes.length;i++){ scope=IDEA.codes[i]; handler=CHANCE[scope]; if(typeof handler.cfg==="object"){ if(typeof handler.features==="function"){ handler.features(handler); }else{ IDEA.features(handler);}}} mw.hook("wikipage.content").add(IDEA.furnish); }; IDEA.first=function{ var handler,s; OO=window.OO; IDEA.codes=[]; for(s in CHANCE){ handler=CHANCE[s]; if(handler.live){ switch(typeof IDEA.cfg[s]){ case "boolean": if(!IDEA.cfg[s]){ handler.live=false;} break; case "object": if(IDEA.cfg[s]){ handler.cfg=IDEA.cfg[s];} break;} if(handler.live&&(typeof handler.find!=="function"||typeof handler.resolver!=="object")){ handler.live=false;} if(handler.live){ if(s==="www"){ if(IDEA.cfg.linking){ handler.shift=false; }else{ handler.live=false;} }else if(typeof handler.cfg==="object"&&typeof handler.cfg.shift==="string"&&handler.cfg.shift.indexOf("#")>0){ handler.shift=handler.cfg.shift; }else{ handler.shift=false;} if(handler.live){ IDEA.codes.push(s);}}}} if(typeof IDEA.cfg.make==="number"){ IDEA.make=IDEA.cfg.make; }else{ IDEA.make=0;} IDEA.store="data-"+IDEA.type.toLowerCase+"-"; IDEA.story=false; IDEA.patterns={}; IDEA.re=new RegExp("#"); IDEA.types=false; if(CHANCE.isbn.live){ CHANCE.isbn.feeder(IDEA.fire); }else{ IDEA.fire;} }; IDEA.flash=function{ var msec=1000,that=this,$that=$(that),scope=$that.attr(IDEA.store+"scope"),state=IDEA.store+"state"; window.open($that.attr("data-href"),IDEA.fork(scope,"URL")); window.setTimeout(function{ if($that.attr(state)==="show"){ IDEA.flip.call(that);} },msec); }; IDEA.flat=function(address){ var got,n,parts,r,s,sub; if(typeof IDEA.reAuth!=="object"){ IDEA.reAuth=new RegExp("^[^/]*//([^/:]+)(?::[0-9]+)?/");} got=IDEA.reAuth.exec(address+"/"); if(got){ parts=got[1].toLowerCase.split("."); n=parts.length-1; if(n){ s=parts[n-1]+"."; r=s+parts[n]; if(n>1&&s.length<=4){ s="."+s; if(n>1&&s.length<=4){ sub=".ac.com.co.edu.gov.gv."; if(sub.indexOf(s)>=0){ r=parts[n-2]+"."+r;}}}}} return r; }; IDEA.flip=function{ var $that=$(this),margin=10,start=$that.attr("data-href"),state=IDEA.store+"state",swap=IDEA.store+"popup",index=$that.attr(swap),slip=$that.attr(state),live,options,popup,scope,sign,signature,$e; if(index){ index=parseInt(index,10); popup=IDEA.popups[index]; live=(slip==="show");} if(live){ slip="hide"; }else{ if(!popup){ if(typeof IDEA.cfg.illusive!=="number"){ if(IDEA.cfg.layer){ IDEA.cfg.illusive=1; }else{ IDEA.cfg.illusive=IDEA.illusive;}} index=IDEA.popups.length; scope=$that.attr(IDEA.store+"scope"); sign=$that.attr(IDEA.store+"sign"); IDEA.followed($that,scope+sign,true); options={align:"backwards",anchor:true,horizontalPosition:"end",padded:false,verticalPosition:"below",$floatableContainer:$that}; if(typeof CHANCE[scope].$fetch==="function"){ $e=CHANCE[scope].$fetch(sign,start); }else{ $e=IDEA.$fetch(scope,sign,start);} signature=IDEA.type+"_choice_"+index; $e.addClass(IDEA.type+" "+IDEA.type+"-"+scope).attr({"id":signature}) .css({"font-family":"sans-serif", "font-size":"medium", "font-style":"normal", "font-variant":"normal", "text-align":"left"}); IDEA.$body.append($e); $e=$("#"+signature); options.height=$e.outerHeight+margin+margin; options.width=$e.outerWidth+margin; $e.detach.css({"visibility":"visible"}); options.$content=$(" ").append($e).css({"padding":"3px"}); popup=new OO.ui.PopupWidget(options); IDEA.popups.push(popup); $that.attr(swap,index); $e=popup.$element; $e.attr({"id":IDEA.type+"_popup_"+index, "role":"tooltip"}).css({"opacity":IDEA.cfg.illusive}); IDEA.$body.append(popup.$floatable); if($that.hasClass(IDEA.type+"-www")){ sign=start;} $that.attr("title",sign); popup.$floatable.attr({"role":"tooltip"}).css({"opacity":IDEA.cfg.illusive, "padding":"2px", "text-align":"center"});} slip="show";} $that.attr(state,slip); if(popup){ popup.toggle(slip==="show");} return false; }; IDEA.followed=function($a,assigned,apply){ var learnt=apply,sign,webSs,$children,$span; if(!apply&&IDEA.story){ learnt=(IDEA.story.indexOf(" "+assigned+" ")>=0); }else if(typeof window.sessionStorage==="object"){ webSs=window.sessionStorage; if(webSs&&typeof webSs.getItem==="function"){ sign=IDEA.type+".visited"; try{ IDEA.story=webSs.getItem(sign); if(IDEA.story){ IDEA.story=" "+IDEA.story+" "; }else{ IDEA.story=" ";} if(IDEA.story.indexOf(" "+assigned+" ")>=0){ learnt=true; }else if(apply){ IDEA.story=IDEA.story+assigned; if(typeof webSs.setItem==="function"){ webSs.setItem(sign,IDEA.story.substr(1));} IDEA.story=IDEA.story+" ";} }catch(e){ }}} if(learnt){ $a.addClass(IDEA.type+"-visited"); if(!IDEA.cfg.light){ $children=$a.children; if($children.length){ $children.css({"color":IDEA.seen}); }else{ $span=$(" "); $span.css({"color":IDEA.seen}); $span.text($a.text); $a.text(""); $a.append($span);}}} }; IDEA.fork=function(adjacent,at){ var r; switch(IDEA.make){ case 0: r=IDEA.type; break; case 1: r=adjacent; break; case 2: r=at; break; default: r="_blank";} return r; }; IDEA.format=function($a,access){ var cfg,css,s,sign,type; if(!IDEA.types){ IDEA.types=TYPES; if(typeof IDEA.cfg.types==="object"){ for(sign in IDEA.cfg.types){ cfg=IDEA.cfg.types[sign]; if(!cfg){ IDEA.types[sign]=false; }else if(typeof cfg==="object"&&typeof cfg.commons==="string"&&cfg.commons){ type=IDEA.types[sign]; type.commons=cfg.commons; if(typeof cfg.ext==="string"&&cfg.ext){ type.ext=cfg.ext;}}}} for(sign in IDEA.types){ type=IDEA.types[sign]; if(type&&typeof type.ext==="string"&&type.ext){ s="^(?:https?:)?//[^/]+/.+"+(typeof type.start==="string"?type.start:"\\.")+"("+type.ext.toUpperCase+"|"+type.ext.toLowerCase+")"+"(?:[/?&=#].*)?$"; type.re=new RegExp(s); }else{ type.re=false;}}} for(sign in IDEA.types){ type=IDEA.types[sign]; if(type&&type.re&&type.re.test(access)){ $a.addClass("url-type-"+sign); if(typeof type.commons==="string"){ s="url(\"//upload.wikimedia.org/wikipedia/commons/"+type.commons+"\") "+"center right no-repeat"; css={"background":s, "padding-right":"16px"}; $a.css(css);} break;}} }; IDEA.$forward=function(adjacent,address,as){ return $("").attr({"href":address, "target":IDEA.fork(adjacent,as), "title":address}).text(as); }; IDEA.furnish=function($area){ var i; if(typeof IDEA.popups!=="object"){ IDEA.popups=[];} IDEA.$body=$("body"); IDEA.$extiw=$area.find(".extiw"); IDEA.$external=$area.find(".external"); for(i=0;i<IDEA.codes.length;i++){ CHANCE[IDEA.codes[i]].find($area);} mw.hook(IDEA.type+".changed").fire($area); }; fire; }(window.mediaWiki,window.jQuery)); /// EOF idResolver/core/r.js