User:Omegatron/monobook.js/mathcharacterfixer.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.
/* <pre><nowiki> */ function mathfixer() { var txt = document.editform.wpTextbox1; // Convert minus sign HTML entities into actual minus signs (overlaps with dashfixer.js) txt.value = txt.value.replace(/(−|−|−)/g, '−'); // Convert times sign HTML entities into actual times signs txt.value = txt.value.replace(/(×|×|×)/g, '×'); // Convert plusorminus sign HTML entities into actual plusorminus signs txt.value = txt.value.replace(/(±|±|±)/g, '±'); // Convert hyphen next to a number into a minus sign character txt.value = txt.value.replace(/([^a-zA-Z0-9\,\_\{])-(\d)/g, '$1−$2'); // Changes 2x3 to 2×3 txt.value = txt.value.replace(/(\d\s?)x(\s?\d)/g, '$1×$2'); // Changes 10^3 to 10<sup>3</sup> // txt.value = txt.value.replace(/(\d+)\^(\d+)/g, '$1<sup>$2</sup>'); // Changes x^3 to x<sup>3</sup> txt.value = txt.value.replace(/([0-9a-zA-Z])\^(\d+)/g, '$1<sup>$2</sup>'); // Changes <sup> tags inside <math> tags back into carets // (don't know of a way to exclude them from the above statement) txt.value = txt.value.replace(/<math>(.*)<sup>(\d+)<\/sup>(.*)<\/math>/g, '<math>$1^$2$3</math>'); // Changes 2 +/- 3 to 2±3 txt.value = txt.value.replace(/(\s|\d)\+\/?(-|−|-)(\s|\d)/g, '$1±$3'); // Add a tag to the summary box var txt = document.editform.wpSummary; var summary = "[[User:Omegatron#Regular expressions|Regex math character 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:mathfixer()', '±', 'ca-mathfixer', 'Fixes some math characters', '', ''); } }); /* </nowiki></pre> */