User:Omegatron/monobook.js/dashfixer.js
From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Mozilla/Safari: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Internet Explorer: press Ctrl-F5, Opera/Konqueror: press F5.
function replacedash() { var txt = document.editform.wpTextbox1; // Convert all html entities into actual dash characters txt.value = txt.value.replace(/(—|—|—)/g, '—'); txt.value = txt.value.replace(/(–|–|–)/g, '–'); txt.value = txt.value.replace(/(−|−|−)/g, '−'); // Convert -- and em dashes *with or without* spaces --> em dash character surrounded by spaces txt.value = txt.value.replace(/([a-zA-Z\'\"”\]\}\)])\s? ?(--|—|—)\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?(--?|—|—)\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 = "[[User:Omegatron#Regular expressions|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() } addOnloadHook(function () { if(document.forms.editform) { addLink('p-cactions', 'javascript:replacedash()', '—', 'ca-dashfixer', 'Fixes dash formatting', '', ''); } });