Jump to content

User:Omegatron/monobook.js/mathcharacterfixer.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Omegatron (talk | contribs) at 19:50, 17 January 2006 (nevermind it doesnt look great). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*

== Math character fixer ==

This script adds a tab to fix some math formatting in the article.  When you press the tab, it changes:

* -1 → −1
* 2x10^3 → 2×10<sup>3</sup>
* 100 +/- 2% → 100 ± 2%

Then it adds an edit summary and presses ''Show changes'' for you so you can check it for mistakes.

By [[User:Omegatron]]

<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(/(&#x2212;|&#8722;|&minus;)/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>