<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=MyWiki%3AWikiProject_User_scripts%2FScripts%2FFormatter</id>
	<title>MyWiki:WikiProject User scripts/Scripts/Formatter - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=MyWiki%3AWikiProject_User_scripts%2FScripts%2FFormatter"/>
	<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=MyWiki:WikiProject_User_scripts/Scripts/Formatter&amp;action=history"/>
	<updated>2026-04-23T04:41:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://70.231.62.181/index.php?title=MyWiki:WikiProject_User_scripts/Scripts/Formatter&amp;diff=14412253&amp;oldid=prev</id>
		<title>imported&gt;WOSlinker: change source to syntaxhighlight</title>
		<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=MyWiki:WikiProject_User_scripts/Scripts/Formatter&amp;diff=14412253&amp;oldid=prev"/>
		<updated>2021-02-07T14:52:50Z</updated>

		<summary type="html">&lt;p&gt;change source to syntaxhighlight&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*&amp;lt;syntaxhighlight lang=javascript&amp;gt;*/&lt;br /&gt;
// NOTICE: Formatter&amp;#039;s functionality is now almost entirely included in [[Wikipedia:AutoEd]]&amp;#039;s &amp;quot;Formatter&amp;quot; preset. You may&lt;br /&gt;
// use whichever you want, although AutoEd is more actively maintained and more open to customization.&lt;br /&gt;
//Wikipedia:WikiProject User scripts | Scripts&lt;br /&gt;
&lt;br /&gt;
function format() {&lt;br /&gt;
    var txt = document.editform.wpTextbox1;&lt;br /&gt;
    txt.value = catFixer(txt.value);&lt;br /&gt;
    txt.value = entities(txt.value);&lt;br /&gt;
    txt.value = fixheadings(txt.value);&lt;br /&gt;
    txt.value = fixsyntax(txt.value);&lt;br /&gt;
    txt.value = linkfixer(txt.value, false);&lt;br /&gt;
    //txt.value = imagefixer(txt.value);&lt;br /&gt;
    txt.value = whitespace(txt.value);&lt;br /&gt;
    txt.value = linksimplifyer(txt.value);&lt;br /&gt;
    txt.value = trim(txt.value);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function whitespace(str){&lt;br /&gt;
    str = str.replace(/\t/g, &amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    str = str.replace(/^ ? ? \n/gm, &amp;quot;\n&amp;quot;);&lt;br /&gt;
    str = str.replace(/(\n\n)\n+/g, &amp;quot;$1&amp;quot;);&lt;br /&gt;
    str = str.replace(/== ? ?\n\n==/g, &amp;quot;==\n==&amp;quot;);&lt;br /&gt;
    str = str.replace(/\n\n(\* ?\[?http)/g, &amp;quot;\n$1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    str = str.replace(/^ ? ? \n/gm, &amp;quot;\n&amp;quot;);&lt;br /&gt;
    str = str.replace(/\n\n\*/g, &amp;quot;\n*&amp;quot;);&lt;br /&gt;
    str = str.replace(/[ \t][ \t]+/g, &amp;quot; &amp;quot;);&lt;br /&gt;
    str = str.replace(/([=\n]\n)\n+/g, &amp;quot;$1&amp;quot;);&lt;br /&gt;
    str = str.replace(/ \n/g, &amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //* bullet points&lt;br /&gt;
    str = str.replace(/^([\*#]+) /gm, &amp;quot;$1&amp;quot;);&lt;br /&gt;
    str = str.replace(/^([\*#]+)/gm, &amp;quot;$1 &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //==Headings==&lt;br /&gt;
    str = str.replace(/^(={1,4}) ?(.*?) ?(={1,4})$/gm, &amp;quot;$1$2$3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //dash — spacing&lt;br /&gt;
    str = str.replace(/ ?(–|&amp;amp;#150;|&amp;amp;ndash;|&amp;amp;#8211;|&amp;amp;#x2013;) ?/g, &amp;quot;$1&amp;quot;);&lt;br /&gt;
    str = str.replace(/ ?(—|&amp;amp;#151;|&amp;amp;mdash;|&amp;amp;#8212;|&amp;amp;#x2014;) ?/g, &amp;quot;$1&amp;quot;);&lt;br /&gt;
    str = str.replace(/([^1-9])(—|&amp;amp;#151;|&amp;amp;mdash;|&amp;amp;#8212;|&amp;amp;#x2014;|–|&amp;amp;#150;|&amp;amp;ndash;|&amp;amp;#8211;|&amp;amp;#x2013;)([^1-9])/g, &amp;quot;$1 $2 $3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    return trim(str);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function entities(str){&lt;br /&gt;
    //str = str.replace(//g, &amp;quot;&amp;quot;);&lt;br /&gt;
    str = str.replace(/&amp;amp;#150;|&amp;amp;#8211;|&amp;amp;#x2013;/g, &amp;quot;&amp;amp;ndash;&amp;quot;);&lt;br /&gt;
    str = str.replace(/&amp;amp;#151;|&amp;amp;#8212;|&amp;amp;#x2014;/g, &amp;quot;&amp;amp;mdash;&amp;quot;);&lt;br /&gt;
   // str = str.replace(/(cm| m|km|mi)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/g, &amp;quot;$1²&amp;quot;);&lt;br /&gt;
    str = str.replace(/&amp;amp;sup2;/g, &amp;quot;²&amp;quot;);&lt;br /&gt;
    str = str.replace(/&amp;amp;deg;/g, &amp;quot;°&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    return trim(str);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Fix ==See also== and similar section common errors.&lt;br /&gt;
function fixheadings(str)&lt;br /&gt;
{&lt;br /&gt;
  if( !str.match(/= ?See also ?=/) )&lt;br /&gt;
    str = str.replace(/(== ?)(see also:?|also see:?)( ?==)/gi, &amp;quot;$1See also$3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  str = str.replace(/(== ?)(external links?:?|outside links?|web ?links?:?|exterior links?:?)( ?==)/gi, &amp;quot;$1External links$3&amp;quot;);&lt;br /&gt;
  str = str.replace(/(== ?)(references?:?)( ?==)/gi, &amp;quot;$1References$3&amp;quot;);&lt;br /&gt;
  str = str.replace(/(== ?)(sources?:?)( ?==)/gi, &amp;quot;$1Sources$3&amp;quot;);&lt;br /&gt;
  str = str.replace(/(== ?)(further readings?:?)( ?==)/gi, &amp;quot;$1Further reading$3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  return str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function catFixer(str){&lt;br /&gt;
    str = str.replace(/\[\[ ?[Cc]ategory ?: ?/g, &amp;quot;[[Category:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    return trim(str);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//fixes many common syntax problems&lt;br /&gt;
function fixsyntax(str)&lt;br /&gt;
{&lt;br /&gt;
  //replace html with wiki syntax&lt;br /&gt;
  if( !str.match(/&amp;#039;&amp;lt;\/?[ib]&amp;gt;|&amp;lt;\/?[ib]&amp;gt;&amp;#039;/gi) )&lt;br /&gt;
  {&lt;br /&gt;
    str = str.replace(/&amp;lt;i&amp;gt;(.*?)&amp;lt;\/i&amp;gt;/gi, &amp;quot;&amp;#039;&amp;#039;$1&amp;#039;&amp;#039;&amp;quot;);&lt;br /&gt;
    str = str.replace(/&amp;lt;b&amp;gt;(.*?)&amp;lt;\/b&amp;gt;/gi, &amp;quot;&amp;#039;&amp;#039;&amp;#039;$1&amp;#039;&amp;#039;&amp;#039;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  str = str.replace(/&amp;lt;br\/&amp;gt;/gi, &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br /&gt;
  str = str.replace(/&amp;lt;br&amp;gt;/gi, &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br /&gt;
                      &lt;br /&gt;
  return trim(str);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//formats links in standard fashion&lt;br /&gt;
function linkfixer(str, checkImages)&lt;br /&gt;
{ &lt;br /&gt;
  str = str.replace(/\]\[/g, &amp;quot;] [&amp;quot;);&lt;br /&gt;
  var m = str.match(/\[?\[[^\]]*?\]\]?/g);&lt;br /&gt;
  if (m)&lt;br /&gt;
  {&lt;br /&gt;
    for (var i = 0; i &amp;lt; m.length; i++)&lt;br /&gt;
    {&lt;br /&gt;
      var x = m[i].toString();&lt;br /&gt;
      var y = x;&lt;br /&gt;
&lt;br /&gt;
      //internal links only&lt;br /&gt;
      if ( !y.match(/^\[?\[http:\/\//i) &amp;amp;&amp;amp; !y.match(/^\[?\[image:/i) )&lt;br /&gt;
      {&lt;br /&gt;
        if (y.indexOf(&amp;quot;:&amp;quot;) == -1 &amp;amp;&amp;amp; y.substr(0,3) != &amp;quot;[[_&amp;quot; &amp;amp;&amp;amp; y.indexOf(&amp;quot;|_&amp;quot;) == -1)&lt;br /&gt;
        {&lt;br /&gt;
          if (y.indexOf(&amp;quot;|&amp;quot;) == -1)&lt;br /&gt;
            y = y.replace(/_/g, &amp;quot; &amp;quot;);&lt;br /&gt;
          else&lt;br /&gt;
            y = y.replace( y.substr(0, y.indexOf(&amp;quot;|&amp;quot;)), y.substr(0, y.indexOf(&amp;quot;|&amp;quot;)).replace(/_/g, &amp;quot; &amp;quot;));&lt;br /&gt;
        }  &lt;br /&gt;
      &lt;br /&gt;
        y = y.replace(/ ?\| ?/, &amp;quot;|&amp;quot;).replace(&amp;quot;|]]&amp;quot;, &amp;quot;| ]]&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      str = str.replace(x, y);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  //repair bad internal links&lt;br /&gt;
  str = str.replace(/\[\[ ?([^\]]*?) ?\]\]/g, &amp;quot;[[$1]]&amp;quot;);&lt;br /&gt;
  str = str.replace(/\[\[([^\]]*?)( |_)#([^\]]*?)\]\]/g, &amp;quot;[[$1#$3]]&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //repair bad external links&lt;br /&gt;
  str = str.replace(/\[?\[http:\/\/([^\]]*?)\]\]?/gi, &amp;quot;[http://$1]&amp;quot;);&lt;br /&gt;
  str = str.replace(/\[http:\/\/([^\]]*?)\|([^\]]*?)\]/gi, &amp;quot;[http://$1 $2]&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  return trim(str);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//fixes images&lt;br /&gt;
function imagefixer(str)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  //remove external images&lt;br /&gt;
  str = str.replace(/\[?\[image:http:\/\/([^\]]*?)\]\]?/gi, &amp;quot;[http://$1]&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  //fix links within internal images&lt;br /&gt;
  var m = str.match(/\[?\[image:[^\[\]]*?(\[?\[[^\]]*?\]*?[^\[\]]*?)*?\]+/gi);&lt;br /&gt;
  if (m)&lt;br /&gt;
  {&lt;br /&gt;
    for (var i = 0; i &amp;lt; m.length; i++)&lt;br /&gt;
    {&lt;br /&gt;
      var x = m[i].toString();&lt;br /&gt;
      var y = x;&lt;br /&gt;
&lt;br /&gt;
      y = y.replace(/^\[\[i/i, &amp;quot;I&amp;quot;).replace(/\]\]$/, &amp;quot;&amp;quot;);&lt;br /&gt;
      y = y.replace(/(\[[^\]]*?)$/, &amp;quot;$1]&amp;quot;);&lt;br /&gt;
      y = linkfixer(y, true);&lt;br /&gt;
      y = &amp;quot;[[&amp;quot; + y + &amp;quot;]]&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      str = str.replace(x, y);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return trim(str);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//simplifies some links e.g. [[Dog|dog]] to [[dog]] and [[Dog|dogs]] to [[dog]]s&lt;br /&gt;
function linksimplifyer(str){&lt;br /&gt;
  var m = str.match(/\[\[([^[]*?)\|([^[]*?)\]\]/g);&lt;br /&gt;
  if (m)&lt;br /&gt;
  {&lt;br /&gt;
    for (var i = 0; i &amp;lt; m.length; i++)&lt;br /&gt;
    {&lt;br /&gt;
      var n_arr = m[i].toString().match(/\[\[([^[]*?)\|([^[]*?)\]\]/);&lt;br /&gt;
      var n = n_arr[0];&lt;br /&gt;
      var a = n_arr[1];&lt;br /&gt;
      var b = n_arr[2];&lt;br /&gt;
&lt;br /&gt;
      if (b.indexOf(a) == 0 || b.indexOf(TurnFirstToLower(a)) == 0)&lt;br /&gt;
      {&lt;br /&gt;
        var k = n.replace(/\[\[([^\]\|]*?)\|(\1)([\w]*?)\]\]/i, &amp;quot;[[$2]]$3&amp;quot;);&lt;br /&gt;
        str = str.replace(n, k);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  str = str.replace(/\[\[([^\]\|]+)\|([^\]\|]+)\]\]([A-Za-z\&amp;#039;][A-Za-z]*)([\.\,\;\:\&amp;quot;\!\?\s\n])/g, &amp;quot;[[$1|$2$3]]$4&amp;quot;); // &amp;#039; // Help the syntax highlighter...&lt;br /&gt;
&lt;br /&gt;
  return str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//trim start and end, trim spaces from the end of lines&lt;br /&gt;
function trim(str) {&lt;br /&gt;
   str = str.replace(/ $/gm, &amp;quot;&amp;quot;);&lt;br /&gt;
   return str.replace(/^\s*|\s*$/g, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//turns first character to lowercase&lt;br /&gt;
function TurnFirstToLower(input) {&lt;br /&gt;
  if (input != &amp;quot;&amp;quot;)&lt;br /&gt;
  {&lt;br /&gt;
    var input = trim(input);&lt;br /&gt;
    var temp = input.substr(0, 1);&lt;br /&gt;
    return temp.toLowerCase() + input.substr(1, input.length);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
    return &amp;quot;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//entities that should never be unicoded&lt;br /&gt;
function noUnicodify(str) {&lt;br /&gt;
  str = str.replace(&amp;quot; &amp;amp;amp; &amp;quot;, &amp;quot; &amp;amp; &amp;quot;);&lt;br /&gt;
  str = str.replace(&amp;quot;&amp;amp;amp;&amp;quot;, &amp;quot;&amp;amp;amp;amp;&amp;quot;).replace(&amp;quot;&amp;amp;amp;lt;&amp;quot;, &amp;quot;&amp;amp;amp;amp;lt;&amp;quot;).replace(&amp;quot;&amp;amp;amp;gt;&amp;quot;, &amp;quot;&amp;amp;amp;amp;gt;&amp;quot;).replace(&amp;quot;&amp;amp;amp;quot;&amp;quot;, &amp;quot;&amp;amp;amp;amp;quot;&amp;quot;).replace(&amp;quot;&amp;amp;amp;apos;&amp;quot;, &amp;quot;&amp;amp;amp;amp;apos;&amp;quot;);&lt;br /&gt;
  str = str.replace(&amp;quot;&amp;amp;minus;&amp;quot;, &amp;quot;&amp;amp;amp;minus;&amp;quot;).replace(&amp;quot;&amp;amp;times;&amp;quot;, &amp;quot;&amp;amp;amp;times;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  str = str.replace(&amp;quot;&amp;amp;nbsp;&amp;quot;, &amp;quot;&amp;amp;amp;nbsp;&amp;quot;).replace(&amp;quot;&amp;amp;thinsp;&amp;quot;, &amp;quot;&amp;amp;amp;thinsp;&amp;quot;).replace(&amp;quot;&amp;amp;shy;&amp;quot;, &amp;quot;&amp;amp;amp;shy;&amp;quot;);&lt;br /&gt;
  str = str.replace(&amp;quot;&amp;amp;prime;&amp;quot;, &amp;quot;&amp;amp;amp;prime;&amp;quot;);&lt;br /&gt;
  str = str.replace(/&amp;amp;(#0?9[13];)/, &amp;quot;&amp;amp;amp;$1&amp;quot;);&lt;br /&gt;
  str = str.replace(/&amp;amp;(#0?12[345];)/, &amp;quot;&amp;amp;amp;$1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  return str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
addOnloadHook(function () {&lt;br /&gt;
  if(document.forms.editform) {&lt;br /&gt;
    addPortletLink(&amp;#039;p-cactions&amp;#039;, &amp;#039;javascript:format()&amp;#039;, &amp;#039;format&amp;#039;, &amp;#039;ca-format&amp;#039;, &amp;#039;Format article&amp;#039;, &amp;#039;&amp;#039;, document.getElementById(&amp;#039;ca-edit&amp;#039;));&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/*&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wikipedia scripts]]&lt;br /&gt;
*/&lt;/div&gt;</summary>
		<author><name>imported&gt;WOSlinker</name></author>
	</entry>
</feed>