User:Coemgenus/monobook.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
The accompanying .css page for this skin is at User:Coemgenus/monobook.css. |
mw.loader.load('//en.wikipedia.org/w/index.php?title=User%3ADr_pda%2Fprosesize.js&action=raw&ctype=text/javascript'); // [[User:Dr_pda/prosesize.js]]
//Interiot's javascript edit counter
if (document.title.indexOf('User:Interiot/Tool2/code.js') != -1) {
mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:Interiot/Tool2/code.js&action=raw&ctype=text/javascript'); }
function externISBN() {
for (var i = 0; i < document.links.length; i++)
{
var ln = document.links[i].href.match(/isbn=(.*)/);
if (ln) {
document.links[i].href='http://www.amazon.com/exec/obidos/ASIN/'+RegExp.$1;
}
}
}
addOnloadHook(externISBN);
importScript("User:Lupin/recent2.js");
//Create 'winc' function:
function winc(s) {
document.write('<script type="text/javascript" src="'
+ 'http://en.wikipedia.org/w/index.php?title=' + s
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
}
//function to handle dates:
importScript('User:Lightmouse/monobook.js/script.js');
/**
* Metadata assessment script
* Finds the WP 1.0/WikiProject assessment of every article you go to, then
* displays that information in the article header.
*
* @author Outriggr - created the script and used to maintain it
* @author Pyrospirit - currently maintains and updates the script
*/
// Import stylesheet with custom classes for header colors
importStylesheet('User:Pyrospirit/metadata.css');
/**
* This is the constructor for the script object. All functions this script
* defines are inside this.
*
* @constructor
*/
MetadataScript = function () {};
/**
* Starts the script object running. The main function of the script. If the
* getMainType() function can find the assessment, it uses that assessment
* for the page, parses it, and displays it in the header. Otherwise, it runs
* ajaxMain().
*/
MetadataScript.prototype.init = function () {
var initialAssessment = this.checkArticle();
if ( initialAssessment.exists ) {
this.currentAssessment = initialAssessment;
var data = this.talkAssess(this.currentAssessment);
this.update(data.newClass, data.slogan, data.info);
}
else this.ajaxMain();
};
/**
* The main function when an AJAX request is needed to find the assessment.
* Creates an AJAX request for the contents of a URL (defaults to the
* first section of the article's talk page), then sends the request. After
* getting the requested data back, it finds the assessment information in
* the data, then uses and displays that assessment in the header.
*
* @param {String} arguments[0] - Optional: override the default URL for the
* AJAX request.
*/
MetadataScript.prototype.ajaxMain = function () {
if ( arguments[0] && arguments[0].match(/^https?:\/\//i) ) this.url = arguments[0];
else this.url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=Talk:' + encodeURIComponent(mw.config.get('wgPageName'))
+ '&action=raw§ion=0';
this.request = sajax_init_object();
if ( this.request ) {
var self = this;
this.request.onreadystatechange = function () {
if ( this !== self ) {
arguments.callee.call(self, arguments);
return;
}
if ( this.request.readyState == 4 && this.request.status == 200 ) {
this.text = this.request.responseText;
this.currentAssessment = this.findAssessment(this.request.responseText);
var data = this.talkAssess(this.currentAssessment);
this.update(data.newClass, data.slogan, data.info);
}
};
this.request.open('GET', this.url, true);
this.request.send(null);
}
};
/**
* Checks for various objects on the article page that indicate a certain
* assessment, such as a featured star or disambiguation page notice. If this
* function can find the assessment, AJAX is not needed for this page.
*
* @return {Object} assess - the assessment in an easily readable format
*
* @static
*/
MetadataScript.prototype.checkArticle = function () {
var assess = {};
assess.extra == '';
assess.exists = true;
if ( document.getElementById('disambig') )
assess.rating = 'dab';
else if ( document.getElementById('contentSub').innerHTML == 'Redirect page' )
assess.rating = 'redir';
else if ( document.getElementById('ca-talk').className == 'new' )
assess.rating = 'none';
else assess.exists = false;
return assess;
};
/**
* Searches the provided wikicode for an assessment and returns the
* assessment it finds as an object. This function first checks for things
* such as former FA/GA status and current FA/GA nominations, then looks for
* current assessment status.
*
* Note that a higher assessment takes priority, and less-used assessments
* such as "list", "current", or "future" are used only if nothing else can
* be found.
*
* @param {String} text - some wikitext to be searched for assessment info
*
* @return {Object} assess - the assessment in an easily readable format
*
* @static
*/
MetadataScript.prototype.findAssessment = function (text) {
var assess = {};
var actionNumber = 0;
if ( text.match(/\bclass *= *a\b/i) ) {
if ( text.match(/\bclass *= *ga\b|\bcurrentstatus *= *(ffa\/)?ga\b/i) )
assess.rating = 'a/ga';
else assess.rating = 'a';
} else if ( text.match(/\bclass *= *ga\b|\bcurrentstatus *= *(ffa\/)?ga\b|\{\{ *ga *\|/i)
&& !text.match(/\bcurrentstatus *= *dga\b/i) ) assess.rating = 'ga';
else if ( text.match(/\bclass *= *b\b/i) ) assess.rating = 'b';
else if ( text.match(/\bclass *= *bplus\b/i) ) assess.rating = 'bplus';
else if ( text.match(/\bclass *= *c\b/i) ) assess.rating = 'c';
else if ( text.match(/\bclass *= *start/i) ) assess.rating = 'start';
else if ( text.match(/\bclass *= *stub/i) ) assess.rating = 'stub';
else if ( text.match(/\bclass *= *list/i) ) assess.rating = 'list';
else if ( text.match(/\bclass *= *(dab|disambig)/i) ) assess.rating = 'dab';
else if ( text.match(/\b(class|currentstatus) *= *fl\b/i) ) assess.rating = 'fl';
else if ( text.match(/\b(class|currentstatus) *= *fa\b/i) ) assess.rating = 'fa';
else if ( text.match(/\bclass *= *cur(rent)?/i) ) assess.rating = 'cur';
else if ( text.match(/\bclass *= *future/i) ) assess.rating = 'future';
else assess.rating = 'none';
assess.pageLink = null;
if ( (assess.reg = text.match(/\{\{ *fac *[\|\}]/i)) ) {
assess.extra = 'fac';
} else if ( (assess.reg = text.match(/\{\{ *flc *\}\}/i)) ) {
assess.extra = 'flc';
} else if ( (assess.reg = text.match(/\{\{ *ga ?nominee *[\|\}]/i)) ) {
assess.extra = 'gan';
} else if ( (assess.reg = text.match(/\{\{ *far(ce?)? *[\|\}]/i)) ) {
assess.extra = 'far';
} else if ( (assess.reg = text.match(/\{\{ *flrc *[\|\}]/i)) ) {
assess.extra = 'flrc';
} else if ( (assess.reg = text.match(/\{\{ *gar\/link *[\|\}]/i)) ) {
assess.extra = 'gar';
} else if ( (assess.reg = text.match(/\bcurrentstatus *= *ffa\b/i)) ) {
actionNumber = text.match(/\baction(\d\d?) *= *far\b/i)[1];
assess.extra = 'ffa';
} else if ( (assess.reg = text.match(/\{\{ *formerfa2?\b/i)) ) {
assess.extra = 'ffa';
} else if ( (assess.reg = text.match(/\bcurrentstatus *= *ffl\b/i)) ) {
assess.extra = 'ffl';
} else if ( (assess.reg = text.match(/\{\{ *ffl *[\|\}]/i)) ) {
assess.extra = 'ffl';
} else if ( (assess.reg = text.match(/\bcurrentstatus *= *dga\b/i)) ) {
assess.extra = 'dga';
} else if ( (assess.reg = text.match(/\{\{ *d(elisted)?ga *[\|\}]/i)) ) {
assess.extra = 'dga';
} else if ( (assess.reg = text.match(/\baction(\d\d?) *= *fac\b/i)) &&
!assess.rating.match(/f[al]/i) ) {
actionNumber = assess.reg[1];
assess.pageLink = true;
assess.extra = 'ffac';
} else if ( (assess.reg = text.match(/\{\{ *fac?(failed|(\-| \()?contested\)?) *[\|\{]/i)) ) {
assess.extra = 'ffac';
} else if ( (assess.reg = text.match(/\baction(\d\d?) *= *flc\b/i)) &&
!assess.rating.match(/f[al]/i) ) {
actionNumber = assess.reg[1];
assess.pageLink = true;
assess.extra = 'fflc';
} else if ( (assess.reg = text.match(/\baction(\d\d?) *= *gan\b/i)) &&
!assess.rating.match(/f[al]|(a\/)?ga/i) ) {
actionNumber = assess.reg[1];
assess.pageLink = true;
assess.extra = 'fgan';
} else if ( (assess.reg = text.match(/\{\{ *f(ailed ?)?ga *[\|\}]/i)) ) {
assess.extra = 'fgan';
} else assess.extra = 'none';
if ( assess.pageLink ) {
var pageLinkPattern = '\\baction' + actionNumber + 'link *= *([^\\n\\|]+)\\s*\\|';
assess.pageLink = text.match(RegExp(pageLinkPattern))[1];
}
if ( assess.extra == 'ffa' ) {
var ffaType = RegExp('\\baction' + actionNumber + 'link *= *Wikipedia:Featured[ _]'
+ 'article[ _]removal[ _]candidates\\/', 'i');
assess.ffaPage = text.match(ffaType) ? 'Wikipedia:Featured_article_removal_candidates/'
: 'Wikipedia:Featured_article_review/';
}
assess.exists = true;
return assess;
}
/**
* Parses an assessment object into the HTML and CSS code needed to update
* the article header. If it doesn't recognize a part of the information
* given, it will simply ignore it and mark as unassessed.
*
* @param {Object} assess - assessment information for this article
*
* @return {String} newClass - the CSS class corresponding to its assessment
* @return {String} slogan - HTML giving (with a link) the main assessment
* @return {String} info - HTML giving (with a link) additional information
*
* @static
*/
MetadataScript.prototype.talkAssess = function (assess) {
var info = '';
var path = mw.config.get('wgArticlePath').replace('$1', '');
var page = encodeURIComponent(mw.config.get('wgPageName'));
var assessLink = path + 'Wikipedia:Version_1.0_Editorial_Team/Assessment';
if ( typeof assess.extra === 'undefined' ) assess.extra = '';
var extra = assess.extra.toLowerCase();
var rating = assess.rating.toLowerCase();
var pageLink = assess.pageLink ? encodeURIComponent(assess.pageLink.replace(' ', '_')) : null;
if ( extra == 'fac' ) {
info = '. <i>Currently a <a href="' + path + 'Wikipedia:Featured_article_candidates/'
+ page + '">featured article candidate</a></i>.';
}
else if ( extra == 'flc' ) {
info = '. <i>Currently a <a href="' + path + 'Wikipedia:Featured_list_candidates/'
+ page + '">featured list candidate</a></i>.';
}
else if ( extra == 'gan' ) {
info = '. <i>Currently a <a href="' + path + 'Wikipedia:Good_article_nominations">'
+ 'good article nominee</a></i>.';
}
else if ( extra == 'far' ) {
info = '. <i>Currently undergoing <a href="' + path + 'Wikipedia:Featured_article_review/'
+ page + '">review</a> of its featured status</i>.';
}
else if ( extra == 'flrc' ) {
info = '. <i>Currently a <a href="' + path + 'Wikipedia:Featured_list_removal_'
+ 'candidates/' + page + '">candidate</a> for removal as a featured list</i>.';
}
else if ( extra == 'gar' ) {
info = '. <i>Currently undergoing a <a href="' + path + 'Wikipedia:Good_article_'
+ 'reassessment">reassessment</a> of its status as a good article</i>.';
}
else if ( extra == 'ffa' ) {
info = '. <i>A <a href="' + path + assess.ffaPage + page + '">former</a>'
+ ' featured article</i>.';
}
else if ( extra == 'ffl' ) {
info = '. <i>A <a href="' + path + 'Wikipedia:Featured_list_removal_candidates/'
+ page + '">former</a> featured list</i>.';
}
else if ( extra == 'dga' ) {
info = '. <i>A <a href="' + path + 'Wikipedia:Good_article_reassessment">delisted</a> '
+ 'good article</i>.';
}
else if ( extra == 'ffac' ) {
info = '. <i>A former <a href="' + path + (pageLink ? pageLink
: 'Wikipedia:Featured_article_candidates/' + page) + '">featured article '
+ 'candidate</a></i>.';
}
else if ( extra == 'fflc' ) {
info = '. <i>A former <a href="' + path + (pageLink ? pageLink
: 'Wikipedia:Featured_list_candidates/' + page) + '">featured list candidate'
+ '</a></i>.';
}
else if ( extra == 'fgan' ) {
info = '. <i>A former <a href="' + path + (pageLink ? pageLink
: 'Wikipedia:Good_article_nominations') + '">good article nominee</a></i>.';
}
if ( rating == 'a' || rating == 'a/ga' ) {
newClass = 'assess-A-text';
slogan = 'An <a href="' + assessLink + '">A-class</a> article';
if ( rating == 'a/ga' ) {
if ( info.length == 0 ) info += '.';
info += ' <i>Also a <a href="' + path + 'Wikipedia:Good_Articles">good article</a>.'
}
}
else if ( rating == 'ga' ) {
newClass = 'assess-GA-text';
slogan = 'A <a href="' + path + 'Wikipedia:Good_Articles">good article</a>'
}
else if ( rating == 'b' ) {
newClass = 'assess-B-text';
slogan = 'A <a href="' + assessLink + '">B-class</a> article';
}
else if ( rating == 'bplus' ) {
newClass = 'assess-Bplus-text';
slogan = 'A <a href="' + path + 'Wikipedia:WikiProject_Mathematics/Wikipedia_1.0'
+ '/Grading_scheme">B-plus-class</a> article';
}
else if ( rating == 'c' ) {
newClass = 'assess-C-text';
slogan = 'A <a href="' + assessLink + '">C-class</a> article';
}
else if ( rating == 'start' ) {
newClass = 'assess-Start-text';
slogan = 'A <a href="' + assessLink + '">start-class</a> article';
}
else if ( rating == 'stub' ) {
newClass = 'assess-Stub-text';
slogan = 'A <a href="' + assessLink + '">stub-class</a> article';
}
else if ( rating == 'list' ) {
newClass = 'assess-List-text';
slogan = 'A <a href="' + path + 'Wikipedia:Lists">list-class</a> article';
}
else if ( rating == 'dab' ) {
newClass = 'assess-Dab-text';
slogan = 'A <a href="' + path + 'Wikipedia:Disambiguation">disambiguation page</a>';
}
else if ( rating == 'redir' ) {
newClass = 'assess-Redir-text';
slogan = 'A <a href="' + path + 'Help:Redirect">redirect page</a>';
}
else if ( rating == 'fl' ) {
newClass = 'assess-FA-text';
slogan = 'A <a href="' + path + 'Wikipedia:Featured_lists">featured list</a>';
}
else if ( rating == 'fa' ) {
newClass = 'assess-FA-text';
slogan = 'A <a href="' + path + 'Wikipedia:Featured_articles">featured article</a>';
}
else if ( rating == 'cur' ) {
newClass = 'assess-Cur-text';
slogan = 'A <a href="' + path + 'Portal:Current_events">current-class</a> article';
}
else if ( rating == 'future' ) {
newClass = 'assess-Future-text';
slogan = 'A <a href="' + path + 'Category:Future-Class_articles">future-class</a>'
+ ' article';
}
else {
newClass = '';
slogan = 'An <a href="' + assessLink + '">unassessed</a> article';
}
return {newClass: newClass, slogan: slogan, info: info};
};
/**
* Updates article header with new assessment information by giving it a new
* class (for style information such as color) and altering the tagline below
* it to state the assessment found.
*
* @param {String} newClass - the CSS class name added to the article header
* @param {String} slogan - italicized text prepended to the tagline, showing
* the article's main assessment
* @param {String} info - additional assessment info appended to the tagline
*
* @static
*/
MetadataScript.prototype.update = function (newClass, slogan, info) {
var firstHeading = document.getElementsByTagName('h1')[0];
firstHeading.className += ' ' + newClass;
document.getElementById('siteSub').innerHTML = '<i>' + slogan + '</i>'
+ ' from Wikipedia, the free encyclopedia' + info;
};
/**
* Creates the global MetadataObject as an instance of MetadataAssessmentScript, then
* calls the init() method of MetadataObject to start the script.
*/
if ( mw.config.get('wgNamespaceNumber') == 0 && (mw.config.get('wgAction') == 'view' || mw.config.get('wgAction') == 'purge')
&& mw.config.get('wgPageName') != 'Main_Page' ) {
addOnloadHook(function () {
if (typeof MetadataObject === 'undefined') {
MetadataObject = new MetadataScript();
}
MetadataObject.init();
});
}
importScript('User:Plastikspork/date.js')
function autoEdDashes (str)
{
if (str.search(/nodashes/i) >= 0)
return str;
var scpat = /\bscores?\b|\[\[Category:.*\b(sport|athlet|players|teams|games|league|champion|tournament|competit|cup\b|\w+ball\b|hockey|lacrosse|cricket|rugby|tennis|golf|polo|boxing|boxers|martial.art|chess)/i;
var scoresAreLikely = (str.search(scpat) >= 0);
// Ensure the replacement isn't a link such as [[FOO - BAR]] before
// replacing it, so that we don't break the link. But we do want to
// replace dashes used in the right-side label part of links. Also,
// don't break templates, URLs, DOIs, {{#expr:}}, <math> equations,
// source code, or <ref name="13-70">.
//
function ifNotLink (str)
{
var pos = arguments[ arguments.length - 2 ];
var string = arguments[ arguments.length - 1 ];
var pat = /\[\[[^|\]]*$|\{\{[^|}]*$|[:\/%][^\s|>]+$|<[^>]*$|#\w*expr:.*$/i;
if (string.substring(pos-260,pos+1).search(pat) >= 0)
return str; // it's a link, so don't change it
var pat2 = /\{\{(main|see|detail|about|for\b|other|redir|conv|coor)[^}]*$/i;
if (string.substring(pos-260,pos+1).search(pat2) >= 0)
return str; // likely templates with page-name or neg params
var m = string.slice(pos).search(/<\/?(math|pre|code|tt|source|syntaxhighlight)\b/i);
if (m >= 0 && string.charAt(pos+m+1) == '/')
return str; // don't break a <math> equation, or source code
if (string.slice(pos).search(/^[^|{}[\]<>\n]*\.[a-z]{3,4}\s*[|}]|^.*hyphen/i) >= 0)
return str; // it's a file name parameter, or <!--sic hyphen-->
if (str.search(/[ |(>][-–]\b/) >= 0)
return str.replace(/[-–]/, "−"); // minus sign
else
return str.replace(/--+\b/g, "—") . replace(/[-–−]+/g, "–"); // dash
}
str = str.replace(/\s--?\s/g, ifNotLink); // en dash looks better
str = str.replace(/[a-z\d]---?[a-z\d]/ig, ifNotLink); // em dash
str = str.replace(/\d\d\d]*}*[-−](present|current)\b/ig, ifNotLink); // 1973-present
str = str.replace(/[^\w−-](18|19|20)\d\d]*}*[-−][^\w−-]/g, ifNotLink); // (1973-)
str = str.replace(/\d(s|%|\?|''')[-−]\d/g, ifNotLink); // 1950s-1960s, 40%-50%
str = str.replace(/\d[-−](\$|'+)\d/g, ifNotLink); // $40-$50, 7-'''4''', '49-'53
str = str.replace(/[½⅓⅔¼¾⅛⅜⅝⅞]%?[-−][\d½⅓⅔¼¾⅛⅜⅝⅞]/g, ifNotLink); // 3½-6
str = str.replace(/\d(st|nd|rd|th)?[-−]\d+(st|nd|rd|th)\b/g, ifNotLink); // 2nd-3rd
str = str.replace(/([a-z,'"”\]>] +|\(|^\| *|\|\| *)[-–]\d/mig, ifNotLink); // minus -35
str = str.replace(/<((sup|sub|td)>\s*)[-–](\d)/ig, "<$1−$3"); // 10<sup>-3</sup>
str = str.replace(/,*(?=.? ) *[-–—−] *(\d*:\d\d[\s*<])/g, " – $1"); // album track listings
// November 15, 2005-March 7, 2006; [[March 18]]-[[April 4]]
str = str.replace(/(\d\]*)[-–—−](\[*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]* +\d)/g, "$1 – $2");
// July-August 2007
str = str.replace(/\b((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*[-−]?\b){2,}/g, ifNotLink);
// [[266]]-[[283]]
str = str.replace(/(\d(?: BC)?\]\])[-−]((ca?\.|AD ?)?\[\[\d+[^\d-])/g, "$1–$2");
// (1984 – 1992)
str = str.replace(/([(|=] *\[*\d+\]*) +[–—−] +(\[*\d+\]*\s*[)|}])/g, "$1–$2");
// iv-xii
str = str.replace(/[ ;(=](?=\w+-)(m*(cm|cd|d?c*)(xc|xl|l?x*)(ix|iv|v?i*)-?\b){2}[^\w-]/g, ifNotLink);
if (scoresAreLikely) // W-L-D or 73–70–67–70=280, but not castling
str = str.replace(/[^\w−–-](?!0-0-0)(\d\d?\d?[-–−]){2,}\d\d?[^\w\/−–-]/g, ifNotLink);
str = str.replace(/\b(\d+)[–−](year|month|day|hour|minute|mile|yard|foot|inch|bit|door|speed|gun|page|seat|way|point|ton|man)\b/g, "$1-$2"); // hyphen
// Number ranges and scores should use en dashes, per [[MOS:DASH]].
// This has been well-tested and false positives (e.g., ID nos.) are rare.
//
function range (str, from,to, pos,string)
{
var dash = true;
var except = /\b(fig(ure)?|table|example|exhibit|circular|section|part|number|no|nr|id|model|pub|std|report|rpt|law|P?L|p|page|date|IS\wN\b[ a-z]*)[^\w(,;]*$/i;
var rpat = /^([^A-Za-z]|nbsp)*(AD|BC|B?CE|BP|[kMG]a|km|mi|kg|lb|\w?Hz|vote|decision|record|odds|scor\w*|win|loss|tie|draw|lead|victory|defeat|upset|run|deficit|start|finish|season|game)\b/;
var lpat = /\b(pages|pp|rp|nos|\d+\)?'*[:,]|(w[io]n|lost?|tie|dr.w|lea?d|f.ll|vot|rul|decid|pass|fail|defeat|scor|gam|match|trail|finish|end)e?[ds]?|\w\w+ing|ahead|behind|up|down|from|to|is|are|was|were|of|out|by|an?|at|it|went|go|gone|beaten|between)([^a-z]|nbsp)*$/i;
var inorder = (to-0 > from.slice(-to.length)); // pp 362-5
var precision = Math.max( from.search(/0*$/), to.search(/0*$/) );
if (string.substring(pos-20,pos+1).search(except) >= 0) {
return str; // based on preceding word, looks like a ref number
}
if (from == 9 && to == 11) {
dash = false; // 9-11 is a common special case
}
if (from-0 >= to) {
dash = false; // values don't look like a range
}
if (to-from > 120 && from * (precision > 2 ? 5 : 50) < to && from > 1) {
dash = false; // values don't look like a range
}
if (scoresAreLikely && from <= 900 && to <= 900) {
dash = true; // likely a score or wins-losses
}
if (from < 2-to && string.search(/Category:.*\bChess\b/i) >= 0) {
dash = false; // chess notations 0-0, 0-1, 1-0
}
if (str.charAt(0) == '(' && string.charAt(pos + str.length) == ')') {
dash = true; // scores often seen as (8-4)
}
if (from.search(/^0./) >= 0 || to.search(/^0./) >= 0) {
dash = false; // 3-07 and 0123-4567 look like ref numbers
}
if (string.substr(pos-1,15).search(/^\d([:,.])\d+.\d+\1\d/) >= 0) {
dash = true; // 10:30-11:30, 35,000-40,000, 2.5-4.0
}
if (string.substr(pos,30).search(rpat) >= 0) {
dash = true; // 12-5 BC, 5-5000 km, 6-4 win, 73-50 vote
}
if (string.substring(pos-80,pos).search(lpat) >= 0) {
dash = true; // pp. 8, 25, 270-74, 313-7; won 6-4, 6-2
}
if (from > 1000 && from < 2100 && to.length == 2 && inorder) {
dash = true; // 1994-95 year range
}
return dash ? ifNotLink(str,pos,string) : str;
}
str = str.replace(/[^\w\/+−–-](\d{1,4})[-−](\d{1,4})(?!'*[\w\/+−–-])/g, range);
return str;
}
// Hook to allow using this tool "standalone"
if (importScript("Wikipedia:AutoEd/core.js")) // if not otherwise using AutoEd
{
function autoEdFunctions() {
var txt = document.editform.wpTextbox1;
var str = txt.value;
str = str.replace(/—/g, '—');
str = str.replace(/–/g, '–');
str = str.replace(/−/g, '−');
txt.value = autoEdDashes( str );
}
autoEdLinkName = "–";
autoEdLinkHover = "Fix dashes, hyphens, and minus signs";
autoEdTag = "fixed [[MOS:DASH|dashes]] using a [[User:GregU/dashes.js|script]]";
}