User:Fæ/code/unshortcut
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 : ""));