„Benutzer:Androl/autoformat.js“ – Versionsunterschied

Inhalt gelöscht Inhalt hinzugefügt
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 144: Zeile 144:
// Personendaten-BNS
// Personendaten-BNS
t = t.replace(/\|(NAME|ALTERNATIVNAMEN|KURZBESCHREIBUNG|(GEBURTS|STERBE)(DATUM|ORT)) = */g, "|$1=");
t = t.replace(/\|(NAME|ALTERNATIVNAMEN|KURZBESCHREIBUNG|(GEBURTS|STERBE)(DATUM|ORT)) = */g, "|$1=");
// Gemeindevorlage-BNS
t = t.replace(/\|Bürgermeistertitel =/g, "|Bürgermeistertitel=");


// Weiterleitungsauflösung
// Weiterleitungsauflösung
Zeile 164: Zeile 166:
t = t.replace(/\(([0-9,]+) m\)/g, "({{Höhe|$1}})");
t = t.replace(/\(([0-9,]+) m\)/g, "({{Höhe|$1}})");
t = t.replace(/([0-9,]+)( | )*m\.?( | )*ü(\.|ber)?( | )*(\[\[\w*\|)?N\.?( | )*N\.?\]*/g, "{{Höhe|$1|DE-NN}}");
t = t.replace(/([0-9,]+)( | )*m\.?( | )*ü(\.|ber)?( | )*(\[\[\w*\|)?N\.?( | )*N\.?\]*/g, "{{Höhe|$1|DE-NN}}");
t = t.replace(/\{\{Höhe\|([0-9]+),([0-9]+)/g, "{{Höhe|$1.$2");


// Standardvorlagen
// Standardvorlagen

Version vom 15. Januar 2011, 17:11 Uhr

function doAutoformat(a)
{
	var e = document.forms["editform"].elements;
	var b = e["wpTextbox1"];
	var t = b.value;

	// Korrektur von Benutzer:TMg/autoFormatter.js-Fehlern
	t = t.replace(/ (m[äöü])/gi, " $1");                     // 15&nbsp:Männer
	t = t.replace(/\{(„|“)/g, "{\"");                             // Vorlage:"
	t = t.replace(/(\[|\r?\n *)Datei:([^\]\|\r\n]*)–/g, "$1Datei:$2-");  // "–" in Dateinamen
	t = t.replace(/(\[|\r?\n *)Datei:([^\]\|\r\n]*)–/g, "$1Datei:$2-");  // "–" in Dateinamen
	t = t.replace(/(\[|\r?\n *)Datei:([^\]\|\r\n]*)–/g, "$1Datei:$2-");  // "–" in Dateinamen
	t = t.replace(/([0-9]{4})–[0-9]{2}([0-9]{2}).([0-9]{3})/g, "$1: $2.$3");  // Einwohnerzahlen
	t = t.replace(/\| [–-]( ?)([0-9])/g, "| −$1$2");  // Minus
	t = t.replace(/ m\}\}/g, " m}}");  // überfl. nbsp in Vorlagen

	// Links ohne Leerzeichen
	t = t.replace(/\[\[ */g, "[[");
	t = t.replace(/ *\]\]/g, "]]");
	t = t.replace(/(\[\[Kategorie:.*)\|\]\]/g, "$1| ]]");

	// doppelte Leerzeichen
	t = t.replace(/([\wäöüßÄÖÜ,\.;:\-'\[\]]) +([\wäöüßÄÖÜ,\.;:\-'\[\]])/g, "$1 $2");

	t = t.replace(/(\[|\r?\n) *(Bild|File|Image):/gi, "$1Datei:");
	// Parameter bei Dateieinbindung in einheitlicher Reihenfolge
	t = t.replace(/(Datei:[^\|\r\n]*)(\|[^\]\r\n]*)?\| *(upright|hochkant) *(= *[^\| \]\r\n]*)? */gi, "$1|hochkant$4$2");
	t = t.replace(/\|hochkant= */gi, "|hochkant=");
	t = t.replace(/(Datei:[^\|\r\n]*)(\|[^\]\r\n]*)?\| *(left|links) */gi, "$1|links$2");
	t = t.replace(/(Datei:[^\|\r\n]*)(\|[^\]\r\n]*)?\| *(right|rechts) */gi, "$1|rechts$2");
	t = t.replace(/(Datei:[^\|\r\n]*)(\|[^\]\r\n]*)?\| *(thumb|miniatur) */gi, "$1|miniatur$2");
	t = t.replace(/\|miniatur\|rechts\|/gi, "|miniatur|");

/*	// Tabellensyntax
	// Leerzeichen um "|"
	t = t.replace(/\|/g, " | ");
	// Leerzeichen entfernen
	t = t.replace(/\|  \|/g, "||");
	t = t.replace(/\r?\n(\s*) \|/g, "\n$1|");
	t = t.replace(/\{ \|/g, "{|");
	t = t.replace(/\| \}/g, "|}");
	t = t.replace(/\| -+/g, "|-");
	t = t.replace(/\[\[([^\|\]]*[^\|\] ]) *\| *([^\]]*)\]\]/g, "[[$1|$2]]");
	t = t.replace(/\{\{([^\}]*[^\} ])(\s*) \| ([^\}]*)\}\}/g, "{{$1$2|$3}}");
	t = t.replace(/\{\{([^\}]*[^\} ])(\s*) \| ([^\}]*)\}\}/g, "{{$1$2|$3}}");
	t = t.replace(/\{\{([^\}]*[^\} ])(\s*) \| ([^\}]*)\}\}/g, "{{$1$2|$3}}");
	t = t.replace(/\{\{([^\}]*[^\} ])(\s*) \| ([^\}]*)\}\}/g, "{{$1$2|$3}}");
	t = t.replace(/\{\{([^\}]*[^\} ])(\s*) \| ([^\}]*)\}\}/g, "{{$1$2|$3}}");
	t = t.replace(/\{\{([^\}]*[^\} ])(\s*) \| ([^\}]*)\}\}/g, "{{$1$2|$3}}");
	t = t.replace(/ +\|/g, " |");
	t = t.replace(/\| +/g, "| ");
	t = t.replace(/\| \r?\n/g, "|\n");
*/

	// Leerzeichen vor/nach ||
	t = t.replace(/\|\|/g, " || ");
	t = t.replace(/(\s) *\|\|/g, "$1||");
	t = t.replace(/\|\| *(\s)/g, "||$1");
	// Leerzeichen nach \n|
	t = t.replace(/\n+\|/g, "\n| ");
	// bei |- |+ |} || rückgängig
	t = t.replace(/\n\| (-|\+|\}|\|[^\|\r\n])/g, "\n|$1");
	t = t.replace(/\n\|\|? +/g, "\n| ");
	// |---- -> |-
	t = t.replace(/\n\|-+/g, "\n|-");
	t = t.replace(/\n\|- *\r?\n\|-/g, "\n|-");

	// Überschriftszeilen mit "!"
	t = t.replace(/\s*!!\s*/g, " !! ");
	t = t.replace(/\n! *(([^\r\n])|\n+([^!\|]))/g, "\n! $2$3");

	// Listensyntax
	t = t.replace(/\n([\*#:;]+)\s*(\S)/g, "\n$1 $2");
	t = t.replace(/\n# (WEITER)/g, "\n#$1");

	// Datum entlinken
	t = t.replace(/\[\[([0-9]+)\]\]/g, "$1");
	t = t.replace(/\[\[0?([123]?[0-9]. (Januar|Jänner|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember))\]\]/g, "$1");

	// Datum verlinken in Biographien
	t = t.replace(/('''.*'''.*\* )([123]?[0-9]\. [A-Za-zä]+) ([0-9]+)/g, "$1[[$2]] [[$3]]");
	t = t.replace(/('''.*'''.*† )([123]?[0-9]\. [A-Za-zä]+) ([0-9]+)/g, "$1[[$2]] [[$3]]");

	//  
	t = t.replace(/([0-9]\.?) ([a-zäöü]{4}|Mai)/gi, "$1 $2");

	// <br />
	t = t.replace(/ *<br \/> */g, "<br />");

	// Formatierung asd="fgh"
	t = t.replace(/(align|span|size|width|color|class) *= *"? *(#?[\w -]*\w) *(%?) *"?( *;?) */g, "$1=\"$2$3\" ");
	t = t.replace(/" >/g, "\">");
	t = t.replace(/color="#? *([0-9A-Fa-f]{6})"/g, "color=\"#$1\"");
	// Leerzeichen nach asd="fgh" |
	t = t.replace(/(="#?\w*" \|) *([^\r\n])/g, "$1 $2");
	// !-Zeile ohne align=center
	t = t.replace(/! *([^\r\n\| ;][^\r\n\|;]*[^\r\n\| ;]);? *align="?center"?;? */g, "! $1 ");
	t = t.replace(/! *align="?center"?(;? (\| )?)/g, "! ");
	// !-Zeile ohne '''fett'''
	t = t.replace(/\n! ([^'\r\n]*)'''([^'\r\n]*)'''/g, "\n! $1$2");

	// Leerzeile vor und nach Vorlagen
	t = t.replace(/([^\|\{\r\n])(\r?\n)+\{\{/gi, "$1\n\n{{");
	t = t.replace(/\}\}\r?\n+([^\|\}\*\r\n])/gi, "}}\n\n$1");
	t = t.replace(/\}\}\r?\n+\{\{/gi, "}}\n{{");
	t = t.replace(/\}\}\r?\n+\[\[Datei:/gi, "}}\n[[Datei:");

	// Leerzeile vor und nach Bildern
	t = t.replace(/([^\|\r\n])(\r?\n)+\[\[Datei:/g, "$1\n\n[[Datei:");
	t = t.replace(/\[Datei:(.*)(\r?\n)+([^\|\r\n])/g, "[Datei:$1\n\n$3");
	t = t.replace(/tei:([^\r\n]*)\r?\n\r?\n\[\[Da/g, "tei:$1\n[[Da");

	// Leerzeile vor und nach Überschriften
	t = t.replace(/\s*\r?\n=/g, "\n\n=");
	t = t.replace(/=\s*\r?\n\s*/g, "=\n");

	// Interwikis/Kategorien ohne Leerzeilen
	t = t.replace(/(\[\[[^\|\]:]{2,}:[^\|\]:]+\]\])\r?\n*/g, "$1\n");
	t = t.replace(/(Kategorie:.*\]\])\s*\[\[([^K])/g, "$1\n\n[[$2");

	// circa
	t = t.replace(/(circa|zirka) /g, "etwa ");
	t = t.replace(/(Circa|Zirka) /g, "Etwa ");

	// Vorlagenparameter
	// kein Leerzeichen nach |
	t = t.replace(/\n *\| *([^\r\n\|=]*)=/g, "\n|$1=");
	t = t.replace(/\n *\|([-\+]?)(\w*(align|span|color|style|width|class)=")/g, "\n|$1 $2");
	// | an den Zeilenanfang
	t = t.replace(/ *\| *(\r?\n)+ *([\w-äöüß\/]* *=)/gi, "\n|$2");
	t = t.replace(/(\n\|[^\r\n=-][^\r\n=]*[^\r\n= ])= *([^\r\n\|= ][^\r\n\|=]*)?\r?\n/g, "$1 = $2\n");
	t = t.replace(/(\n\|[^\r\n=-][^\r\n=]*[^\r\n= ])= *([^\r\n\|= ][^\r\n\|=]*)?\r?\n/g, "$1 = $2\n");
	// Leerzeichen nach =
	t = t.replace(/ = *([^=])/g, " = $1");
	// -überfl. |
	t = t.replace(/\|\s*\r?\n\}/g, "\n}");
	// Naviblock
	t = t.replace(/({{NaviBlock\r?\n(.*\n){0}\|) /g, "$1");
	t = t.replace(/({{NaviBlock\r?\n(.*\n){1}\|) /g, "$1");
	t = t.replace(/({{NaviBlock\r?\n(.*\n){2}\|) /g, "$1");
	t = t.replace(/({{NaviBlock\r?\n(.*\n){3}\|) /g, "$1");
	t = t.replace(/({{NaviBlock\r?\n(.*\n){4}\|) /g, "$1");
	t = t.replace(/({{NaviBlock\r?\n(.*\n){5}\|) /g, "$1");
	// Personendaten-BNS
	t = t.replace(/\|(NAME|ALTERNATIVNAMEN|KURZBESCHREIBUNG|(GEBURTS|STERBE)(DATUM|ORT)) = */g, "|$1=");
	// Gemeindevorlage-BNS
	t = t.replace(/\|Bürgermeistertitel =/g, "|Bürgermeistertitel=");

	// Weiterleitungsauflösung
	t = t.replace(/\[Maus( |_)\(EDV\)/g, "[Maus (Computer)");
	t = t.replace(/Frankfurt\/Oder/g, "Frankfurt (Oder)");
	t = t.replace(/Frankfurt( |_)an( |_)der( |_)Oder/g, "Frankfurt (Oder)");
	t = t.replace(/\[Aschendorf\/Ems\|?(\]?)/g, "[Aschendorf (Papenburg)|$1");

	// Einzelnachweise
	t = t.replace(/== .* ==\r?\n(<references \/>)/g, "== Einzelnachweise ==\n$1");

	// Kommazahlen
	t = t.replace(/([0-9])\.([0-9]{1,2})( %|&nbsp;)/g, "$1,$2$3");

	// Metadaten Einwohner
	t = t.replace(/#time: j. F Y \| \{\{Metadaten Einwohnerzahl ([A-Z-]*)\|TIMESTAMP\}\} */g, "EWD|$1");
	t = t.replace(/FormatZahl\|\{\{Metadaten Einwohnerzahl ([A-Z-]*)\|([0-9]*) *\}\} */g, "EWZ|$1|$2");

	// Höhen
	t = t.replace(/\(([0-9,]+)&nbsp;m\)/g, "({{Höhe|$1}})");
	t = t.replace(/([0-9,]+)( |&nbsp;)*m\.?( |&nbsp;)*ü(\.|ber)?( |&nbsp;)*(\[\[\w*\|)?N\.?( |&nbsp;)*N\.?\]*/g, "{{Höhe|$1|DE-NN}}");
	t = t.replace(/\{\{Höhe\|([0-9]+),([0-9]+)/g, "{{Höhe|$1.$2");

	// Standardvorlagen
	t = t.replace(/\n*(\{\{SORTIERUNG:.*\}\})\r?\n*/g, "\n\n$1\n");
	t = t.replace(/\n*(\{\{Personendaten)/g, "\n\n$1");
	t = t.replace(/(\n\}\})\n*(\{\{Link)/g, "$1\n\n$2");

	// zum Schluss
	t = t.replace(/ +\r?\n/g, "\n");


	if (t != b.value.replace(/\r+\n/g, "\n"))
	{
		b.value = t;
		a.style.color = "green";
		//e["wpDiff"].click();
	}
	else
		a.style.color = "silver";
	return false;
}

function doAutoformatCH(a)
{
	var e = document.forms["editform"].elements;
	var b = e["wpTextbox1"];
	var t = b.value;


	// Zahlen
	t = t.replace(/\.([0-9]{3})\b/g, "'$1");

	// „“ -> «»
	t = t.replace(/„([^„“]+)“/g, "«$1»");

	// Höhe m.ü.M.
	t = t.replace(/( |&nbsp;)*m(etern?|\.)?( |&nbsp;)*ü(ber|\.)?( |&nbsp;)*M(eer)?\.?/gi, " m ü. M.");
	t = t.replace(/(([0-9])')?([0-9]+) m ü\. M\./g, "{{Höhe|$2$3|CH}}");
	t = t.replace(/(([0-9])')?([0-9]+)( |&nbsp;)*\[\[[\wäöü ]*\| m ü\. M\.\]\]/g, "{{Höhe|$2$3|CH|link=true}}");

	// sbz
	t = t.replace(/(.)\s*(<!-- *schweizbezogen *-->)/g, "$1\n$2");
	t = t.replace(/(<!-- *schweizbezogen *-->)\s*/g, "$1\n");

	// BKSK
	t = t.replace(/(Begriffsklärung Schweizer Kanton\|\w\w\|)(Aargau|Appenzell Ausserrhoden|Basel-Landschaft|Basel-Stadt|Bern|Freiburg|Genf|Glarus|Graubünden|Jura|Appenzell Innerrhoden|Luzern|Neuenburg|Nidwalden|Obwalden|Schaffhausen|Schwyz|Solothurn|St. Gallen|Tessin|Thurgau|Uri|Waadt|Wallis|Zug|Zürich)\|/g, "$1");

	// BEZIRK
	t = t.replace(/\|BEZIRK.*kennt keine[^\r\n]*\r?\n/g, "");
	t = t.replace(/\|BEZIRK = \[\[(.*) \(\w*\)\|.*\]\]\r?\n/g, "|BEZIRK = $1\n");

	// EINWOHNER
	t = t.replace(/(\|GEMEINDE =(.*\n)*)(\|EINWOHNER = *[^\n]*\n)/g, "$1$3$3");
	t = t.replace(/(\|GEMEINDE =(.*\n)*)(\|STAND_EINWOHNER = *[^\n]*\n)/g, "$1$3$3");
	t = t.replace(/(Infobox Ort in der Schweiz(.*\n)*)(\|EINWOHNER = *[^\n]*\n)/g, "$1<!--Einwohnerdaten werden automatisch aus einer zentralen Vorlage eingebunden-->\n");
	t = t.replace(/(\|EINWOHNER = *[^\n]*\n)<!--Einwohnerdaten werden automatisch aus einer zentralen Vorlage eingebunden-->\n/g, "$1");
	t = t.replace(/(Infobox Ort in der Schweiz(.*\n)*)(\|STAND_EINWOHNER = *[^\n]*\n)/g, "$1");

	// Kanton
	t = t.replace(/\[\[Kanton .Schweiz..Kanton.. ..Kanton ([\w äöü]+)\|([\w äöü]+)\]\]/g, "[[Kanton $1]]");
	t = t.replace(/\[\[Kanton .Schweiz..Kantons.. ..Kanton ([\w äöü]+)\|([\w äöü]+)\]\]/g, "[[Kanton $1|Kantons $1]]");


	if (t != b.value.replace(/\r+\n/g, "\n"))
	{
		b.value = t;
		a.style.color = "green";
		//e["wpDiff"].click();
	}
	else
		a.style.color = "silver";
	return false;
}

function doAutoformatBKL(a)
{
	var e = document.forms["editform"].elements;
	var b = e["wpTextbox1"];
	var t = b.value;


	// *
	t = t.replace(/\*+ *(.*[^ ]) *\r?\n/g, "* $1\n");

	// Satzzeichen
	t = t.replace(/\* (.*[^ ]) *[,;:\.]\r?\n/g, "* $1\n");

	// siehe
	t = t.replace(/\* (eine?r?n?s? )?(.*)[,;:\.] siehe:? (\[\[.*\]\]) *\r?\n/gi, "* $3, $2\n");
	t = t.replace(/\* (eine?r?n?s? )?(.*): (\[\[.*\]\]) *\r?\n/g, "* $3, $2\n");

	// in in
	t = t.replace(/(\*.*)( in | im )(.*)( in | im )(Baden-Württemberg|Bayern|Berlin|Brandenburg|Bremen|Hamburg|Hessen|Mecklenburg-Vorpommern|Nordrhein-Westfalen|Niedersachsen|Rheinland-Pfalz|Sachsen(-Anhalt)?|Saarland|Schleswig-Holstein|Thüringen)\r?\n/g, "$1$2$3, $5\n");

	// Formulierungen
	t = t.replace(/(bezeichnet|steht für) folgend.*Orte/gi, "ist der Name folgender Orte");
	t = t.replace(/ist .*Familienname.*\n/gi, "ist der Name folgender Personen:\n");


	if (t != b.value.replace(/\r+\n/g, "\n"))
	{
		b.value = t;
		a.style.color = "green";
		//e["wpDiff"].click();
	}
	else
		a.style.color = "silver";
	return false;
}

addOnloadHook(function()
{
	var vForm = document.getElementById("editform");
	if (!vForm) return;

	var vLinkTMg = document.createElement("A");
	vLinkTMg.href = "#";
	vLinkTMg.onclick = function() { return doAutoFormat(this); }
	vLinkTMg.appendChild(document.createTextNode("Auto-Format"));

	var vLink = document.createElement("A");
	vLink.href = "#";
	vLink.onclick = function() { return doAutoformat(this); }
	vLink.appendChild(document.createTextNode("Autoformat"));

	var vLinkCH = document.createElement("A");
	vLinkCH.href = "#";
	vLinkCH.onclick = function() { return doAutoformatCH(this); }
	vLinkCH.appendChild(document.createTextNode("CH"));

	var vLinkBKL = document.createElement("A");
	vLinkBKL.href = "#";
	vLinkBKL.onclick = function() { return doAutoformatBKL(this); }
	vLinkBKL.appendChild(document.createTextNode("BKL"));

	var vElemente = vForm.getElementsByTagName("SPAN");
	for (var i = vElemente.length - 1; i >= 0; i--)
		if (vElemente[i].className === "editHelp")
		{
			vElemente = vElemente[i];
			break;
		}
	vElemente.appendChild(document.createTextNode(" | "));
	vElemente.appendChild(vLinkTMg);
	vElemente.appendChild(document.createTextNode(" | "));
	vElemente.appendChild(vLink);
	vElemente.appendChild(document.createTextNode(" | "));
	vElemente.appendChild(vLinkCH);
	vElemente.appendChild(document.createTextNode(" | "));
	vElemente.appendChild(vLinkBKL);
});