Revision as of 20:56, 28 April 2009 view sourceAFigureOfBlue (talk | contribs)Edit filter managers, Administrators53,878 edits Copy from Misplaced Pages:AutoEd/isbn.js and User:Drilnoth/codefixer.js |
Latest revision as of 16:30, 28 December 2024 view source Pppery (talk | contribs)Interface administrators, Administrators100,465 edits Per request on talk |
(12 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
|
|
//Convert HTML to wikitext |
|
//<source lang=javascript> |
|
|
⚫ |
function autoEdHTMLtoWikitext(str) { |
|
|
// <b> and <i> tags |
|
|
str = str.replace(/<B*>((?:|<*\/>|<(+)(?:| *)>*<\/\3>)*?)<\/\1*>/gi, "'''$1'''"); |
|
⚫ |
str = str.replace(/<I*>((?:|<*\/>|<(+)(?:| *)>*<\/\3>)*?)<\/\1*>/gi, "''$1''"); |
|
|
// </br>, <\br>, <br\>, <BR />, ... |
|
⚫ |
str = str.replace(/<+BR*>/gim, '<br />'); |
|
⚫ |
str = str.replace(/<*BR*+*>/gim, '<br />'); |
|
|
// <.br>, <br.>, <Br>, ... |
|
⚫ |
str = str.replace(/<*BR*>/gim, '<br>'); |
|
|
// <br>>, <<br />, <<br >> ... |
|
⚫ |
str = str.replace(/<*(<br*>)/gim, '$1'); |
|
|
str = str.replace(/(<br*>)*>/gim, '$1'); |
|
|
// <hr> |
|
⚫ |
str = str.replace(/()*<*HR*>/gi, '$1----'); |
|
⚫ |
// str = str.replace(/(.)<*HR*>/gi, '$1\n----'); // Breaks wikitables |
|
|
// Repeated references tag |
|
|
str = str.replace(/(<references \/>)*\1/gim, '$1'); |
|
⚫ |
// Make sure <H1>, ..., <H6> is after a newline |
|
⚫ |
str = str.replace(/()*(<H*>)/gim, '$1\n$2'); |
|
⚫ |
// Make sure </H1>, ..., </H6> is before a newline |
|
⚫ |
str = str.replace(/(<\/H*>)*()/gim, '$1\n$2'); |
|
|
// Remove newlines from inside <H1>, ..., <H6> |
|
|
var loopcount = 0; |
|
|
while( str.search( /<H()*>(?:|<\/?*>)*?<\/H\1*>/gim ) >= 0 && loopcount <= 10 ) { |
|
⚫ |
str = str.replace(/(<H)()(*>(?:|<\/?*>)*?)((?:|<\/?*>)*?<\/H)\2(*>)/gim, '$1$2$3 $4$2$5'); |
|
|
loopcount++; |
|
|
} |
|
|
// Replace <H1>, ..., <H6> with wikified section headings |
|
|
str = str.replace(/(^|)*<H1*>(*?)<\/H1*>*(|$)/gim, '$1=$2=$3'); |
|
|
str = str.replace(/(^|)*<H2*>(*?)<\/H2*>*(|$)/gim, '$1==$2==$3'); |
|
|
str = str.replace(/(^|)*<H3*>(*?)<\/H3*>*(|$)/gim, '$1===$2===$3'); |
|
|
str = str.replace(/(^|)*<H4*>(*?)<\/H4*>*(|$)/gim, '$1====$2====$3'); |
|
|
str = str.replace(/(^|)*<H5*>(*?)<\/H5*>*(|$)/gim, '$1=====$2=====$3'); |
|
|
str = str.replace(/(^|)*<H6*>(*?)<\/H6*>*(|$)/gim, '$1======$2======$3'); |
|
|
|
|
|
⚫ |
return str; |
⚫ |
function autoEdHTMLtoWikitext(str) { //MAIN FUNCTION describes list of fixes |
|
|
|
|
|
//Allows WikiMagic to work with ISBNs |
|
|
str = str.replace(new RegExp('ISBN-10:|ISBN-13:|ISBN-10|ISBN-13|ISBN:', 'gi'), 'ISBN'); |
|
|
str = str.replace(/<(B|STRONG)*>(*)<\/\1*>/gi, "'''$2'''"); // Wikify <B> and <STRONG> |
|
|
str = str.replace(/<(I|EM)*>(*)<\/\1*>/gi, "''$2''"); // Wikify <I> and <EM> |
|
⚫ |
str = str.replace(/<+BR*>/gi, '<br />'); // Tag starts with a slash or period |
|
|
str = str.replace(/<*BR*+*>/gi, '<br />'); // Tag ends with a slash or period |
|
⚫ |
str = str.replace(/<*BR*>/gi, '<br>'); // Tag contains no slashes |
|
⚫ |
str = str.replace(/()*<*HR*>/gi, '$1----'); |
|
⚫ |
str = str.replace(/(.)<*HR*>/gi, '$1\n----'); |
|
|
str = str.replace(new RegExp('<REFERENCES/ >|<REFERENCES></REFERENCES>|<REFERENCES>|<REFERENCES/>', 'gi'), '<references />'); //Not really an HTML-to-wikitext fix, but close enough |
|
⚫ |
str = str.replace(/()*(<H*>)/gim, '$1\n$2'); // Make sure <H1>, ..., <H6> is after a newline |
|
⚫ |
str = str.replace(/(<\/H*>)*()/gim, '$1\n$2'); // Make sure </H1>, ..., </H6> is before a newline |
|
⚫ |
str = str.replace(/(^|)*<H1*>(*?)<\/H1*>*(|$)/gim, '$1=$2=$3'); |
|
⚫ |
str = str.replace(/(^|)*<H2*>(*?)<\/H2*>*(|$)/gim, '$1==$2==$3'); |
|
⚫ |
str = str.replace(/(^|)*<H3*>(*?)<\/H3*>*(|$)/gim, '$1===$2===$3'); |
|
⚫ |
str = str.replace(/(^|)*<H4*>(*?)<\/H4*>*(|$)/gim, '$1====$2====$3'); |
|
⚫ |
str = str.replace(/(^|)*<H5*>(*?)<\/H5*>*(|$)/gim, '$1=====$2=====$3'); |
|
⚫ |
str = str.replace(/(^|)*<H6*>(*?)<\/H6*>*(|$)/gim, '$1======$2======$3'); |
|
|
|
|
⚫ |
return str; |
|
|
} |
|
} |
|
|
|
|
//</source> |
|