User:Omegatron/monobook.js/dashfixer.js

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

// Convert all html entities into actual dash characters txt.value = txt.value.replace(/(&#x2014;|&#8212;|&mdash;)/g, '—'); txt.value = txt.value.replace(/(&#x2013|&#8211;|–)/g, '–'); txt.value = txt.value.replace(/(&#x2212;|&#8722;|&minus;)/g, '−');

// Convert -- and em dashes *with or without* spaces --> em dash character surrounded by spaces txt.value = txt.value.replace(/([a-zA-Z\'\"”\]\}\)])\s? ?(--|—|&mdash;)\s? ?([a-zA-Z\'\"“\[\{\(])/g, '$1 — $3');

// Convert - or en dashes *with* spaces --> em dash character surrounded by spaces txt.value = txt.value.replace(/([a-zA-Z\'\"”\]\}])( | ) ?(-|–|–) ?([a-zA-Z\'\"“\[\{])/g, '$1$2— $4');

// Convert hyphen next to lone number into a minus sign character //   txt.value = txt.value.replace(/([a-zA-Z\'\"”\]\>])(\s)-(\d)/g, '$1$2−$3'); //    Should not touch anything inside math tags...

// Em dashes for dates? txt.value = txt.value.replace(/([\s\(][12]\d\d\d)\s?(--?|—|&mdash;)\s?([12]\d\d\d|\d\d)([\s\),.;])/g, '$1–$3$4');

// Add a tag to the summary box var txt = document.editform.wpSummary; var summary = "Regex dash fixer"; 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) {        mw.util.addPortletLink('p-cactions', 'javascript:replacedash', '—', 'ca-dashfixer', 'Fixes dash formatting', , );    } });