User:Fæ/code/unshortcut

From Wikimedia Commons, the free media repository
< User:Fæ‎ | code
Jump to navigation Jump to search

This is an iMacro script written in JavaScript.

/*
  User:Fae, 2013
  Acronym expander - for all acronyms that have WP:DR style short-cuts on Wikipedia -
 plus a few of my own local template short-cuts
 extended to pick up standard shortcuts on Commons (but does not expand)
*/
// COMMONS check
iimPlay("CODE:\n\
SET !TIMEOUT_TAG 1\n\
TAG POS=1 TYPE=a ATTR=TITLE:Commons*Welcome EXTRACT=TXT")
var commons=iimGetLastExtract();
commons.length>8?commons=true:commons=false;
  //GRAB TEXT AREA
  iimPlay("CODE:\n\
TAG POS=1 TYPE=TEXTAREA FORM=* ATTR=ID:wpTextbox* EXTRACT=TXT\n\
'PAUSE");
var ta=iimGetLastExtract(),intext=false;
ta=ta.replace(/\s*$/,""); // Trim anything after last word
  //GET LAST WORD
var lw=ta.replace(/\n/gm," ").replace(/^.*?([^\s]*)$/,"$1"),
   newsection=(ta.search(/\s/)>-1?false:true); // No spaces then assume new section
  
if(ta.search(' %')!=-1){
   lw=ta.split(' %')[1];
   lw=lw.replace(/^([^\s]*).*$/,"$1");
   intext=true;
}
  //Check exceptions for Commons
if(commons){
   var exArr=new Array(
   "DM:De minimis",
   "DW:Derivative works", 
   "FOP:freedom of panorama",
   "IDENT:Photographs of identifiable people",
   "MORAL:Photographs_of_identifiable_people#Moral_issues",
   "OTRS:OTRS",
   "PRP:Precautionary Principle",
   "pp:the precautionary principle",
   "PRS:Problematic sources", "flickr:Flickrwashing", 
   "scope:scope", "OOS:scope",
   "nudity:Nudity"
   );
} else {
   var exArr=new Array(
"ADHOM:ad hominem",
"RS:reliable source", 
"V:verifiability", 
"N:notability",
"ARCHIVE:{{subst!User!Fæ/help/archive}}:Using webarchive",
"BRITENG:{{subst!User!Fæ/briteng}}:Spelling",
"Gay:\[\[meta!Friends of gays should not be allowed to edit articles\|\]\]",
"LINKS:{{subst!User!Chzz/help/links}}:Links",
"NAMES:{{subst!User!Fæ/Alumni/Names}}:Lists of names",
"PHOTO:{{subst!User!Fæ/help/photo}}:Help for photos",
"PHOTOS:{{subst!User!Fæ/help/photo}}:Help for photos",
"PRIVACY:{{subst!User!Fæ/help/privacy}}:Guidance on privacy",
"REF:Referencing for beginners with citation templates",
"REFS:{{subst!User!Fæ/help/refs}}:Guidance on footnotes",
"BASICS:How to edit a page (concise)",
"THANKS:{{subst!User!Fæ/Thanks\|Thank you \n}}:Thank you",
"WEL:{{subst!User!Fæ/Welcome}}:Welcome",
"WHYN:{{subst!User!Fæ/help/whyn}}:Guidance on notability",
"YOUNG:{{subst!User!Fæ/help/young}}:Guidance on privacy"
);
}
  var wp='',ec='', rd='';
for(var i=0;i<exArr.length;i++){
   if(lw==exArr[i].split(":")[0]||lw==exArr[i].split(":")[0].toLowerCase()){
     ec=exArr[i].split(":")[2];
     if(ec==null){ec=''};
     ec=ec.replace(/ /g,"<sp>");
     if(exArr[i].search(/\!/)==-1){
       wp="[["+(commons?"COM:":"WP:")+exArr[i].split(":")[1]+"|]]";break;
     } else {
       wp=exArr[i].split(":")[1].replace(/!/g,":");break;
     }
   }
}
  if(wp=='' && lw.search(/\{/i)==-1 && !commons){
//GET WP PAGE TITLE
   iimPlay("CODE:\n' Get page title *\n\
'PAUSE\n\
TAB OPEN\n\
TAB T=2\n\
SET !TIMEOUT 20\n\
URL GOTO=http://en.wikipedia.org/wiki/Wikipedia:"+lw+"?redirect=no\n\
WAIT SECONDS=1\n\
SET !TIMEOUT_TAG 1\n\
TAG POS=1 TYPE=H1 ATTR=* EXTRACT=TXT\n\
TAG POS=1 TYPE=SPAN ATTR=CLASS:redirectText EXTRACT=HTM\n\
WAIT SECONDS=1\n\
TAB CLOSE");
   wp=iimGetLastExtract(1);
   rd=iimGetLastExtract(2);
   if(rd.search(/Wiki/)>-1){
     rd=rd.replace(/.*?>Wiki/,"Wiki").replace(/<.*/,"");
   }
   if(rd.length>6){wp=rd}
   rd=rd.replace(/.*?#/,"");
   if(rd.search(/>Help/)>-1){
     wp="\[\["+rd.replace(/.*?>Help/,"Help").replace(/<.a>.*/,"")+"\]\]";
   }else{
   wp="\[\[WP:"+wp.replace(/.*?Wikipedia:(.*)$/,"$1")+(wp.search(/\)$/)>-1?"\]\]":(wp.search(/#/)>-1?"|"+rd+"\]\]":"\|\]\]"));
   wp=wp.replace(/WP:\[edit\]Help/,"Help");
   }
//alert(wp);
   if(wp.search(/Bad title/)>0){wp=''};
}
  // GET COMMONS PAGE TITLE
if(wp=='' && lw.search(/\{/i)==-1 && commons){
//GET WP PAGE TITLE
   iimPlay("CODE:\n' Get page title *\n\
'PAUSE\n\
TAB OPEN\n\
TAB T=2\n\
SET !TIMEOUT 20\n\
URL GOTO=http://commons.wikimedia.org/wiki/Commons:"+lw+"?redirect=no\n\
WAIT SECONDS=1\n\
SET !TIMEOUT_TAG 1\n\
TAG POS=1 TYPE=SPAN ATTR=* EXTRACT=TXT\n\
TAG POS=1 TYPE=SPAN ATTR=CLASS:redirectText EXTRACT=HTM\n\
WAIT SECONDS=1\n\
TAB CLOSE");//COM:Blocking_policy" title="Commons:Blocking policy">Commons:Blocking policy</a></span>
   wp=iimGetLastExtract(1);
   rd=iimGetLastExtract(2);
//alert("wp:"+wp+"\nrd:"+rd);
   if(rd.search(/Wiki/)>-1){ // Process a redirect
     rd=rd.replace(/.*?>Wiki/,"Wiki").replace(/<.*/,"");
   }
   if(rd.length>6){wp=rd}
   rd=rd.replace(/.*?#/,"");
   // Process the full article title
   wp="\[\["+wp.replace(/.*?\">(Commons:.*?)<.*$/,"$1")+(wp.search(/\)$/)>-1?"\]\]":(wp.search(/#/)>-1?"|"+rd+"\]\]":"\|\]\]"));
   // wp=wp.replace(/Commons:\[edit\]Help/,"Help");
//alert(wp);
   if(wp.search(/Bad title/)>0){wp=''};
}
  // If last word is subst: link
if(lw.search(/\{su/)>0){
   var myurl=lw.replace(/^\{\{subst:/i,"").replace(/\}\}$/,"").replace(/\s/g,"_"); // strip
   iimPlay("CODE:\
'PAUSE\n\
TAB OPEN\n\
TAB T=2\n\
URL GOTO=http://en.wikipedia.org/w/index.php?title="+myurl+"&action=edit\n\
WAIT SECONDS=1\n\
TAG POS=1 TYPE=H1 ATTR=* EXTRACT=TXT\n\
TAG POS=1 TYPE=TEXTAREA FORM=* ATTR=ID:wpTextbox* EXTRACT=TXT\n\
WAIT SECONDS=1\n\
TAB CLOSE");
   wp=iimGetLastExtract();
   wp=wp.replace(/\n/g,"oxbrxo")
     .replace(/<includeonly>|<.includeonly>/g,"")
     .replace(/<noinclude.*?noinclude>/ig,"")
     .replace(/^.*?\[EXTRACT\]/,"")
     .replace(/oxbrxo/g,"\n");
}
  var patternlw=new RegExp(lw+"$","i");
ta=ta.replace(patternlw, wp);
ta=ta.replace(/\n/g,"<br>").replace(/\s/g,"<sp>")
   .replace(/([^\{])\{\{\{\{([^\{])/g,"$1{{ {{$2")
   .replace(/([^\{])\{\{\{([^\{])/g,"$1{{subst:((}}\{$2")
   .replace(/\{\{/g,"#NOVAR#{{");
          // alert("ta="+ta);
if(newsection==true){ta=ta.replace(/==.*?==<br>/m,"")}
iimPlay("CODE:\
TAG POS=1 TYPE=TEXTAREA FORM=* ATTR=ID:wpTextbox* CONTENT="+ta+
(ec!=undefined && ec!='' ? "\nTAG POS=1 TYPE=INPUT:TEXT FORM=* ATTR=ID:wpSummary CONTENT="+ec : ""));