Misplaced Pages

:AutoEd/htmltowikitext.js: Difference between revisions - Misplaced Pages

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
< Misplaced Pages:AutoEd Browse history interactively← Previous editContent deleted Content added
Revision as of 20:57, 28 April 2009 view sourceAFigureOfBlue (talk | contribs)Edit filter managers, Administrators53,878 editsm Protected Misplaced Pages:AutoEd/htmltowikitext.js: User scripts are high-risk ( (indefinite) (indefinite))← Previous edit Latest revision as of 16:30, 28 December 2024 view source Pppery (talk | contribs)Interface administrators, Administrators100,463 edits Per request on talk 
(10 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

//Convert HTML to wikitext
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>

Latest revision as of 16:30, 28 December 2024

//Convert HTML to wikitext
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;
}