User:Suttungr/monobook.js/unitformatter.js

//'winc' function allows buttons to be added toolbar

winc('User:Omegatron/monobook.js/addlink.js');

function formatunits { var txt = document.editform.wpTextbox1;

// Convert degree symbols into ° symbol, ensure preceding space txt.value = txt.value.replace(/&deg;/g, '°'); txt.value = txt.value.replace(/º/g, '°'); txt.value = txt.value.replace(/°\s?([CF])/g, '°$1'); txt.value = txt.value.replace(/°\s?(celsius)/gi, '°C'); txt.value = txt.value.replace(/(\d)\s?(°[CF])/g, '$1 $2'); //Fix spelling error txt.value = txt.value.replace(/celcius/gi, 'Celsius'); //Fix common naming error (be careful with this one) txt.value = txt.value.replace(/centigrade/gi, 'Celsius');

// Convert &sup into superscript ² symbol txt.value = txt.value.replace(/&sup2;/g, '²'); txt.value = txt.value.replace(/&sup3;/g, '³');

// Convert cubic inches into in³ txt.value = txt.value.replace(/(\d)\s?cu[\s\-\.]in/gi, '$1 in³');

// Convert the word ohm(s) or the html entity into the actual Ω symbol (Omega, not the actual ohm symbol &#8486;) and make sure it is spaced txt.value = txt.value.replace(/(\d)\s?(Y|Z|E|P|T|G|M|k|K|h|da|d|c|m|µ|μ|µ|n|p|f|a|z|y)?\s?(&Omega;|ohm|Ohm)s?([\s,.;:\)\(\\/)])/g, '$1 $2Ω$4');

// Convert various micro symbols into the actual micro symbol, make sure it's spaced txt.value = txt.value.replace(/(\d)\s?(&mu;|μ|&micro;)(g|s|m|A|K|mol|cd|rad|sr|Hz|N|J|W|Pa|lm|lx|C|V|Ω|F|Wb|T|H|S|Bq|Gy|Sv|kat|M)([\s,.;:\)\(\\/)])/g, '$1 µ$3$4');

// Convert capital K to lowercase k in units txt.value = txt.value.replace(/(\d)\s?K(g|s|m|A|K|mol|cd|rad|sr|Hz|N|J|W|Pa|lm|lx|C|V|Ω|F|Wb|T|H|S|Bq|Gy|Sv|kat|M)([\s,.;:\)\(\\/)])/g, '$1 k$2$3');   txt.value = txt.value.replace(/(\d)\-K(g|s|m|A|K|mol|cd|rad|sr|Hz|N|J|W|Pa|lm|lx|C|V|Ω|F|Wb|T|H|S|Bq|Gy|Sv|kat|M)([\s,.;:\)\(\\/)])/g, '$1 k$2$3'); txt.value = txt.value.replace(/(\d) K(g|s|m|A|K|mol|cd|rad|sr|Hz|N|J|W|Pa|lm|lx|C|V|Ω|F|Wb|T|H|S|Bq|Gy|Sv|kat|M)([\s,.;:\)\(\\/)])/g, '$1 k$2$3');

// Hertz txt.value = txt.value.replace(/(\d)\s?(Y|Z|E|P|T|G|M|k|K|h|da|d|c|m|µ|μ|µ|n|p|f|a|z|y)?hz/gi, '$1 $2Hz'); txt.value = txt.value.replace(/(\d)\-(Y|Z|E|P|T|G|M|k|K|h|da|d|c|m|µ|μ|µ|n|p|f|a|z|y)?hz/gi, '$1 $2Hz');

// Fix kilometres txt.value = txt.value.replace(/(\d)\s?kms?([\s,.;:\)\(\\/)])/gi, '$1 km$2');   txt.value = txt.value.replace(/(\d)\-kms?([\s,.;:\)\(\\/)])/gi, '$1 km$2'); txt.value = txt.value.replace(/(\d) kms?([\s,.;:\)\(\\/)])/gi, '$1 km$2');

// Standardise kilometres per hour txt.value = txt.value.replace(/km\/hr/gi, 'km/h'); txt.value = txt.value.replace(/kph/gi, 'km/h'); txt.value = txt.value.replace(/kmph/gi, 'km/h'); txt.value = txt.value.replace(/(\d)\s?kmh/gi, '$1 km/h'); txt.value = txt.value.replace(/km\/h/gi, 'km/h'); txt.value = txt.value.replace(/(\d)\s?km\/h/gi, '$1 km/h'); txt.value = txt.value.replace(/(\d)\-km\/h/gi, '$1 km/h'); txt.value = txt.value.replace(/(\d) km\/h/gi, '$1 km/h');

// Standardise 'per second' txt.value = txt.value.replace(/ft\/second/gi, 'ft/s'); txt.value = txt.value.replace(/ft\/sec/gi, 'ft/s'); txt.value = txt.value.replace(/m\/second/gi, 'm/s'); txt.value = txt.value.replace(/m\/sec/gi, 'm/s');

// Space before horsepower symbol txt.value = txt.value.replace(/(\d)\s?hp/gi, '$1 hp'); txt.value = txt.value.replace(/(\d)\s?bhp/gi, '$1 bhp'); txt.value = txt.value.replace(/(\d)\s?shp/gi, '$1 shp');

// Space before units txt.value = txt.value.replace(/(\d)\s?cc([\s,.;:\)\(\\/)])/gi, '$1 cc$2');   txt.value = txt.value.replace(/(\d)\-cc([\s,.;:\)\(\\/)])/gi, '$1 cc$2'); txt.value = txt.value.replace(/(\d)\s?ft([\s,.;:\)\(\\/)])/gi, '$1 ft$2');   txt.value = txt.value.replace(/(\d)\-ft([\s,.;:\)\(\\/)])/gi, '$1 ft$2'); txt.value = txt.value.replace(/(\d)\s?rpm/gi, '$1 rpm'); txt.value = txt.value.replace(/(\d)\-rpm/gi, '$1 rpm'); txt.value = txt.value.replace(/(\d)\s?kg([\s,.;:\)\(\\/)])/gi, '$1 kg$2');   txt.value = txt.value.replace(/(\d)\-kg([\s,.;:\)\(\\/)])/gi, '$1 kg$2'); //space before 'm' only when lower case txt.value = txt.value.replace(/(\d)\s?m([\s,.;:\)\(\\/)])/g, '$1 m$2');   txt.value = txt.value.replace(/(\d)\-m([\s,.;:\)\(\\/)])/g, '$1 m$2'); //txt.value = txt.value.replace(/(\d)\s?ml([\s,.;:\)\(\\/)])/g, '$1 ml$2');   //txt.value = txt.value.replace(/(\d)\-ml([\s,.;:\)\(\\/)])/g, '$1 ml$2'); txt.value = txt.value.replace(/(\d)\s?m(\W)/g, '$1 m$2'); txt.value = txt.value.replace(/(\d)\s?m(\w?\W)/g, '$1 m$2');

// miles per hour txt.value = txt.value.replace(/m\.p\.h\./gi, 'mph'); txt.value = txt.value.replace(/mph([\s,.;:\)\(\\/)])/gi, 'mph$1');   txt.value = txt.value.replace(/(\d)\s?mph/gi, '$1 mph');    txt.value = txt.value.replace(/(\d)\-mph/gi, '$1 mph');

// Standardise symbol for pounds txt.value = txt.value.replace(/(\d)\s?lbs?/gi, '$1 lb'); txt.value = txt.value.replace(/(\d\+?)\s?lbs?/gi, '$1 lb'); txt.value = txt.value.replace(/(\d) lbs?/gi, '$1 lb'); txt.value = txt.value.replace(/(\d)\s?(\[\[lbs\]\])/gi, '$1 \[\[Pound (mass)|lb\]\]');

// Standardise symbol for newton metres //txt.value = txt.value.replace(/(N•m)/gi, 'N·m');

// Standardise symbol for kilowatts //txt.value = txt.value.replace(/(\d)\s?kW([\s,.;:\)\(\\/)])/gi, '$1 kW$2');   //txt.value = txt.value.replace(/(\d)\-kW([\s,.;:\)\(\\/)])/gi, '$1 kW$2');

// Standardise symbol for foot pounds txt.value = txt.value.replace(/ft[ -.·•\/]lb[fs]/gi, 'ft·lbf'); txt.value = txt.value.replace(/ft[ -.·•\/]lbf/gi, 'ft·lbf'); txt.value = txt.value.replace(/ft[ -.·•\/]lbff/gi, 'ft·lbf'); //the next two suspended until solution is found for wing loading (i.e. pounds per square foot) //txt.value = txt.value.replace(/lb[fs][ -.•\/]ft/gi, 'ft·lbf'); //txt.value = txt.value.replace(/lb[ -.•\/]ft/gi, 'ft·lbf');

// Symbols for feet and inches txt.value = txt.value.replace(/([^;°]\s)(\d{1,4})\s?['’]\s?(\d{1,2})\s?["”]/gi, '$1$2 ft $3 in');

// Give digital value a percent symbol '%' instead of word txt.value = txt.value.replace(/(\d)\s?per ?cent([^aei])/gi, '$1%$2'); txt.value = txt.value.replace(/(\d)\-per ?cent([^aei])/gi, '$1%$2');

// Add a space before dB   txt.value = txt.value.replace(/(\d)\s?(dB)\b/g, '$1 $2');

// Add a space before several units that were missed before //txt.value = txt.value.replace(/(\d)\s?(G|M|k|K|h|da|d|c|m|µ|n)?(g|m|Hz|N|W|Pa|V|Ω|F|)([\s,.;:\)\(\\/)])/g, '$1 $2$3$4');

// bps or b/s or bits/s --> bit/s txt.value = txt.value.replace(/([KkMmGgTtPpEeYyZz])(bps|bits?\/s|b\/s)/g, '$1bit/s'); txt.value = txt.value.replace(/(\d)\s?(bps)/gi, '$1 bit/s');

// Bps or byte/s or bytes/s --> B/s txt.value = txt.value.replace(/([KkMmGgTtPpEeYyZz])(Bps|bytes?\/s)/g, ' $1B/s');

// Make capitalization correct txt.value = txt.value.replace(/K(bit|B)\/s/g, 'k$1/s'); txt.value = txt.value.replace(/m(bit|B)\/s/g, 'M$1/s'); txt.value = txt.value.replace(/g(bit|B)\/s/g, 'G$1/s');

// Common error txt.value = txt.value.replace(/mibi(bit|byte)/g, 'mebi$1');

// Add a tag to the summary box var txt = document.editform.wpSummary; var summary = "units"; if (txt.value.indexOf(summary) == -1) { if (txt.value.match(/[^\*\/\s][^\/\s]?\s*$/)) { txt.value += " | "; }		txt.value += summary; }

// Press the diff button to check it   document.editform.wpDiff.click }

$(function {    if(document.forms.editform) {        addLink('p-cactions', 'javascript:formatunits', 'units', 'ca-unitfixer', 'Fixes some unit formatting', , );    } });