Wikipedia:AutoEd/htmltowikitext.js

//Convert HTML to wikitext function autoEdHTMLtoWikitext(str) { //  and  tags str = str.replace(/((?:[^<>]|<[a-z][^<>]*\/>|<([a-z]+)(?:| [^<>]*)>[^<>]*<\/\3>)*?)<\/\1[ ]*>/gi, "$1"); str = str.replace(/((?:[^<>]|<[a-z][^<>]*\/>|<([a-z]+)(?:| [^<>]*)>[^<>]*<\/\3>)*?)<\/\1[ ]*>/gi, "$1"); //, <\br>, , , ... str = str.replace(/<[\\\/]+BR[\\\/\s]*>/gim, ' '); str = str.replace(/<[\\\/\s]*BR[\s]*[\\\/]+[\s]*>/gim, ' '); // <.br>, , , ... str = str.replace(/<[\s\.]*BR[\s\.]*>/gim, ' '); // >, <, < > ... str = str.replace(/<[\s]*()/gim, '$1'); str = str.replace(/()[\s]*>/gim, '$1'); //  str = str.replace(/([\r\n])[\t ]*<[\\\/\. ]*HR[\\\/\. ]*>/gi, '$1'); // str = str.replace(/(.)<[\\\/\. ]*HR[\\\/\. ]*>/gi, '$1\n'); // Breaks wikitables // Not really an HTML-to-wikitext fix, but close enough str = str.replace(/([^>\s]\s*)<[\\\/\s]*REFERENCES[\\\/\s]*>/gim, '$1 '); // Repeated references tag str = str.replace(/()[\s]*\1/gim, '$1'); // Make sure , ...,  is after a newline str = str.replace(/([^\r\n ])[\t ]*(]*>)/gim, '$1\n$2'); // Make sure , ...,  is before a newline str = str.replace(/(<\/H[1-6][^<>]*>)[\t ]*([^\r\n ])/gim, '$1\n$2'); // Remove newlines from inside <H1>, ..., <H6> var loopcount = 0; while( str.search( /<H([1-6])[^<>]*>(?:[^<>]|<\/?[^\/h\r\n][^<>]*>)*?<\/H\1[^<>]*>/gim ) >= 0 && loopcount <= 10 ) { str = str.replace(/(<H)([1-6])([^<>]*>(?:[^<>]|<\/?[^\/h\r\n][^<>]*>)*?)[\r\n]((?:[^<>]|<\/?[^\/h\r\n][^<>]*>)*?<\/H)\2([^<>]*>)/gim, '$1$2$3 $4$2$5'); loopcount++; } // Replace <H1>, ..., <H6> with wikified section headings str = str.replace(/(^|[\r\n])[\t ]*<H1[^<>]*>([^\r\n]*?)<\/H1[\r\n\t ]*>[\t ]*([\r\n]|$)/gim, '$1=$2=$3'); str = str.replace(/(^|[\r\n])[\t ]*<H2[^<>]*>([^\r\n]*?)<\/H2[\r\n\t ]*>[\t ]*([\r\n]|$)/gim, '$1==$2==$3'); str = str.replace(/(^|[\r\n])[\t ]*<H3[^<>]*>([^\r\n]*?)<\/H3[\r\n\t ]*>[\t ]*([\r\n]|$)/gim, '$1===$2===$3'); str = str.replace(/(^|[\r\n])[\t ]*<H4[^<>]*>([^\r\n]*?)<\/H4[\r\n\t ]*>[\t ]*([\r\n]|$)/gim, '$1====$2====$3'); str = str.replace(/(^|[\r\n])[\t ]*<H5[^<>]*>([^\r\n]*?)<\/H5[\r\n\t ]*>[\t ]*([\r\n]|$)/gim, '$1=====$2=====$3'); str = str.replace(/(^|[\r\n])[\t ]*<H6[^<>]*>([^\r\n]*?)<\/H6[\r\n\t ]*>[\t ]*([\r\n]|$)/gim, '$1======$2======$3');

return str; }