Jump to content

Wikipedia:AutoEd/whitespace.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
function autoEdWhitespace(str) { //MAIN FUNCTION describes list of fixes

    str = str.replace(/\t/g, " ");
    str = str.replace(/^ ? ? \n/gm, "\n");

    // Extra newlines
    if(str.search(/\uE000/g) < 0) { // see [[Private Use Area]]
      // Mark spacing before stub templates
      str = str.replace(/(\n)[ \t]*(\n)[ \t]*(\n\{\{[^{}]*\-stub\}\})/gm, "$1\uE000$2\uE000$3");
      str = str.replace(/(\n)[ \t]*(\n\{\{[^{}]*\-stub\}\})/gm, "$1\uE000$2");
      // Remove extra newlines
      str = str.replace(/(?:[\t ]*\n)+[\t ]*(\n\uE000\n\uE000\n)/gm, "$1");
      str = str.replace(/(\n\n)\n+/gm, "$1");
      str = str.replace(/(\n[\t ]*\n)(?:[\t ]*\n)+/g, "$1");
      // Unmark
      str = str.replace(/\uE000/g, '');
    }

//  str = str.replace(/== ? ?\n\n==/g, "==\n==");
    str = str.replace(/\n\n(\* ?\[?http)/g, "\n$1");
 
    str = str.replace(/^ ? ? \n/gm, "\n");
    str = str.replace(/\n\n\*/g, "\n*");
//  str = str.replace(/[ \t][ \t]+/g, " ");
    str = str.replace(/(=\n[\t ]*\n[\t ]*\n)(?:[\t ]*\n)+/g, "$1");
    str = str.replace(/ \n/g, "\n");
 
    //* bullet points
    if(str.search(/\uE000/g) < 0) { // see [[Private Use Area]]
      str = str.replace(/^(\#)(REDIRECT)/gi, '$1\uE000$2'); // Mark redirects
      str = str.replace(/^([\*#]+:*) /gm, "$1");
      str = str.replace(/^([\*#]+:*)/gm, "$1 ");
      str = str.replace(/[\t ]*\uE000[\t ]*/g, ''); // Unmark redirects
    }
 
    //==Headings==
    str = str.replace(/^(={1,4} )[ ]*([^= ][^=]*[^= ])[ ]*( ={1,4})$/gm, "$1$2$3");
    str = str.replace(/^(={1,4})([^= ][^=]*[^= ])[ ]+(={1,4})$/gm, "$1$2$3");
    str = str.replace(/^(={1,4})[ ]+([^= ][^=]*[^= ])(={1,4})$/gm, "$1$2$3");

    return str;
}