Benutzer:Nw520/AutoReplace.Replacements.js
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
//<nowiki>
window.nw520_config.autoReplace_replacements = ( window.nw520_config.autoReplace_replacements !== undefined ? window.nw520_config.autoReplace_replacements : [] ).concat( [
// # Automatisch
{ // Entferne überzählige Leerzeichen am Ende einer Zeile
find: /(?<!(=|\|))( +)$/gm,
replace: ''
},
{ // Schreibe das erste Wort gewisser Überschriften anfangend mit „auf“ mit Majuskel als Anfangsbuchstaben
find: /^=== ?auf der Straße ?===$/gm,
replace: '=== Auf der Straße ==='
},
{ // Schreibe das erste Wort gewisser Überschriften anfangend mit „mit“ mit Majuskel als Anfangsbuchstaben
find: /^=== ?mit (der Bahn|dem Bus|dem Flugzeug|dem Schiff) ?===$/gm,
replace: '=== Mit $1 ==='
},
{ // Entferne explizite Bildbreiten, soweit sie ∈ [200, 300]
find: /^\[\[(?:(?<prefix>(?:[Bb]ild|[Dd]atei|[Ff]ile|[Ii]mage)):(?<filename>[^\]|]+?))\|(?:(?<pre>[^\]]+?)\|)?(?<size>[23]\d{2}px)\|?(?:|(?<post>[^\]]+?))\]\]$/gm,
replace: function () {
const groups = Array.from( arguments )[ arguments.length - 1 ];
const pre = groups.pre ?? '';
const post = groups.post ?? '';
if ( ![
...pre.split( '|' ),
...post.split( '|' )
].map( ( x ) => x.trim() ).includes( 'thumb' ) ) {
return arguments[ 0 ];
}
const prefix = [ 'Bild', 'bild', 'Image', 'image' ].includes( groups.prefix ) ? 'File' : groups.prefix;
return `[[${prefix}:${groups.filename}|${pre}${pre !== '' && post !== '' ? '|' : ''}${post}]]`;
},
comment: [ 'Dateien', '-explizite Breite' ]
},
// ## Automatisch » Syntax
{ // Ersetze Unterstriche in Dateinamen durch Leerzeichen
find: /(?<pre>(?:[Bb]ild|[Dd]atei|[Ff]ile|[Ii]mage):|Image *= *)(?<filename>[^|\]]+)(?=[|\]])/g,
replace: function () {
const groups = Array.from( arguments )[ arguments.length - 1 ];
return groups.pre + groups.filename.replace( /_/g, ' ' );
},
trivial: true
},
{ // Entferne Namensraum-Angaben bei Vorlagenaufrufen
find: /\{\{[Vv]orlage:/g,
replace: '{{',
comment: 'Vorlagenaufruf vereinfacht'
},
{ // Vereinheitliche den Namensraum bei Bildeinbindungen von „Bild“ oder „Image“ zu „File“
// Gemäß [[Special:Permalink/1556706#Worauf du achten solltest|Hilfe:Bilder einfügen#Worauf du achten solltest]]
find: /\[\[ *([Bb]ild|[Ii]mage):/g,
replace: '[[File:',
comment: [ 'Dateien', '[[Hilfe:Bilder einfügen#Allgemeine Wiki-Syntax|Präfix]]' ]
},
// ## Automatisch » Typografie
{ // Ersetze „ “ durch die lesbarere Alternativschreibweise „ “
find: / /g,
replace: ' ',
comment: '#x00a0⇒nbsp'
},
{ // Ersetze Matrixmultiplikationszeichen durch Multiplikationszeichen
find: /⨉/g,
replace: '×',
comment: [ 'Typografie', '×' ],
trivial: true
},
{ // Ersetze „x“, welches zur Multiplikation zwischen zwei Zahlen steht, durch Multiplikationszeichen
find: /(?<=\d) x (?=\d)/g,
replace: ' × ',
comment: [ 'Typografie', '×' ],
trivial: false,
manual: '×'
},
{ // ## Ziehe das schließende Anführungszeichen hinter einem Komma (amerikanischer Stil) vor das Komma
find: /„(?<content>[^\n„“”]+),“/g,
replace: '„$<content>“,',
comment: [ 'Typografie', 'Anführungszeichen' ]
},
// ### Automatisch » Typografie » Whitespace
{ // Füge zwischen Zahl und Maßeinheit (g, l, m, m², km, km², qm) ein schmales geschütztes Leerzeichen ein; ersetze dabei ggf. NBSPs
find: /(?<=[\/ =,(])(?<number>\d+|\d+(?:\.\d{3})+)( | )?(?<unit>k?m²?|qm|g|l)(?=[.,\/?!) ]|$)/gm,
replace: '$<number> $<unit>',
comment: [ 'Typografie', 'Maßangabe' ]
},
{ // Füge bei „d. h.“ ein schmales geschütztes Leerzeichen ein; ersetze dabei ggf. NBSPs
find: /(?<=[ (])d\.( | )?h\.(?= )/g,
replace: 'd. h.',
comment: [ 'Typografie', 'd. h.' ]
},
{ // Füge bei „u. a.“ ein schmales geschütztes Leerzeichen ein; ersetze dabei ggf. NBSPs und ersetze ggf. ein großes „A“ durch ein kleines
find: /(?<=[ (])u\.( | )?[aA]\.(?= )/g,
replace: 'u. a.',
comment: [ 'Typografie', 'u. a.' ],
trivial: true
},
{ // Füge bei „z. B.“ ein schmales geschütztes Leerzeichen ein; ersetze dabei ggf. NBSPs
find: /(?<=[ (])z\.( | )?B\.(?= )/g,
replace: 'z. B.',
comment: [ 'Typografie', 'z. B.' ],
trivial: true
},
{ // Füge bei Preisangaben in Euro ein schmales geschütztes Leerzeichen ein; ersetze dabei ggf. NBSPs
find: new RegExp( '(?<number>\\d)( | )?€', 'gm' ),
replace: '$<number> €',
comment: [ 'Typografie', '€' ]
},
// ## Automatisch » Parameter/Vorlagen
{ // Entferne bei vCard-Aufrufen leere selten verwendete Parameter
find: /\| *(alt|comment|facebook|fax|image|mobile|name-local|skype|subtype|twitter|youtube) *= *(?=[\|}])/g,
replace: '',
iterative: 3
},
{ // Ersetze Klammern um einen Sprachvorlagenaufruf durch den Parameter `inKlammern` der Vorlage
find: /\(\{\{(?<inner>(?<langcode>(?:[A-Za-z][a-z]{1,2}|Cop)S?)\|[^}]+)\}\}\)/g,
replace: function() {
const groups = Array.from( arguments )[ arguments.length - 1 ];
if ( groups.langcode.toLowerCase() === 'abk' ) {
return arguments[ 0 ];
}
return '{{' + groups.inner + '|inKlammern=ja}}';
},
comment: [ 'Fremdsprache', 'inKlammern' ],
trivial: true
},
{ // Verschiebe Facebook-URLs im `url`-Parameter der vCard-Vorlage in den `facebook`-Parameter
find: /(?<preamble>\{\{[vV]Card[^}]*?)(?<param>\|(?<paramname_pre>\s*)url(?<paramname_post>\s*)=(?<url_pre>\s*)(?<url>https?:\/\/[^.\s]*\.facebook\.com\/(?<facebookname>[^/?\s]+)[^\s}|]*))/gm,
replace: function () {
const groups = Array.from( arguments )[ arguments.length - 1 ];
if ( groups.facebookname !== 'pages' && groups.facebookname !== 'pg' ) {
return groups.preamble + '|' + groups.paramname_pre + 'facebook' + groups.paramname_post + '=' + groups.url_pre + decodeURIComponent( groups.facebookname );
} else {
return Array.from( arguments )[ 0 ];
}
},
comment: [ 'vCard', 'Facebook-URL⇒Facebook-Parameter' ]
},
{ // Ersetze Facebook-URLs im `facebook`-Parameter der vCard-Vorlage durch den Facebook-Benutzernamen
find: /(?<preamble>\{\{[vV]Card[^}]*?)(?<param>(?<paramkeyequal>\|\s*facebook\s*=\s*)(?<url>https?:\/\/([^.\s]*\.)?facebook\.com\/(?<facebookname>[^/?\s]+)[^\s}|]*))/gm,
replace: function () {
const groups = Array.from( arguments )[ arguments.length - 1 ];
if ( groups.facebookname !== 'pages' && groups.facebookname !== 'pg' ) {
return groups.preamble + groups.paramkeyequal + decodeURIComponent( groups.facebookname );
} else {
return Array.from( arguments )[ 0 ];
}
},
comment: [ 'vCard', 'Facebook-URL⇒Facebook-Benutzername' ]
},
{ // Ersetze Twitter-URLs im `twitter`-Parameter der vCard-Vorlage durch den Twitter-Benutzernamen
find: /(?<preamble>\{\{[vV]Card[^}]*?)(?<param>(?<paramkeyequal>\|\s*twitter\s*=\s*)(?<url>https?:\/\/([^.\s]*\.)?twitter\.com\/(?<twittername>[^/?\s]+)[^\s}|]*))/gm,
replace: function () {
const groups = Array.from( arguments )[ arguments.length - 1 ];
return groups.preamble + groups.paramkeyequal + groups.twittername;
},
comment: [ 'vCard', 'Twitter-URL⇒Twitter-Benutzername' ]
},
{ // Ersetze Vorlagenaufrufe von „Autoquickbar Ort“ durch „Quickbar Ort“
find: /\{\{ *[aA]utoquickbar Ort/g,
replace: '{{Quickbar Ort',
comment: [ 'Quickbar', '-auto' ]
},
// ## Automatisch » Sprache
{ // Schreibe „Schweizer“ groß
// Gemäß § 61 Deutsche Rechtschreibung
find: /(?<=[\/ ])schweizer(?=[.,-\/?! ])/g,
replace: 'Schweizer',
comment: [ 'Tippo', 'schweizer⇒Schweizer (gem. § 61 Deutsche Rechtschreibung)' ]
},
{ // Schreibe „wie viel“ getrennt
// Gemäß § 39 E2 (2) (2.4) Deutsche Rechtschreibung
find: /(?<=[\/ ])(?<case>[Ww])ieviel(?=[.,-\/?! ])/g,
replace: '$<case>ie viel',
comment: [ 'Tippo', 'alte Rechtschreibung/wieviel' ],
trivial: true
},
{ // Schreibe „𝑛{jährig, jährlich, mal, monatig, monatlich, stöckig, tägig, täglich, wöchentlich, wöchig} mit Bindestrich
// Gemäß § 40 (3) Deutsche Rechtschreibung
find: /(?<=[\/ ])(?<n>\d+) ?(?<word>jähr(?:ig(?:e[mnrs]?)?|lich(?:e[mnrs]?)?)|monat(?:ig(?:e[mnrs]?)?|lich(?:e[mnrs]?])?)|täg(?:ig(?:e[mnrs]?)?|lich(?:e[mnrs]?)?)|stöckig(?:e[mnrs]?)|wöch(?:entlich(?:e[mnrs]?)|ig(?:e[mnrs]?)?))(?=[.,-\/?! ])/g,
replace: '$<n>-$<word>',
comment: [ 'Tippo', 'Zusammensetzung mit Ziffern' ],
trivial: true
},
// # Manuell
// ## Manuell » „“
{ // Ersetze Schreibmaschinenanführungszeichen durch typografische Anführungszeichen
find: /^(?<prefix>[^\n]*?)(?<!=)"(?<match>[\wÀ-ž'](?:[^|]*?[^ "])?)"(?!>)/gm,
replace: function () {
const groups = Array.from( arguments )[ arguments.length - 1 ];
if ( groups.prefix.match( /^\[\[(Bild|Datei|File|Image):/i ) && !groups.prefix.includes( '|' ) ) {
return arguments[ 0 ];
}
return `${groups.prefix}„${groups.match}“`;
},
comment: [ 'Typografie', 'Anführungszeichen' ],
manual: '„“'
},
// ## Manuell » €-Postfix
{ // Verschiebe bei Preisspannen vorangestellte €-Zeichen hinter die zweite Zahl der Spanne
// Gemäß [[Special:Permalink/1505752#Währungsangaben|Wikivoyage:Maßangaben#Währungsangaben]]
find: /€(?: | | )?0*?(?<from>(?:0|[1-9]\d*)(?:,\d{2})?) ?[-–](?: €)? ?0*?(?<to>(?:0|[1-9]\d*)(?:,\d{2})?)/g,
replace: '$<from>–$<to> €',
comment: [ '[[Wikivoyage:Maßangaben|Maßangaben]]/[[Hilfe:Angabe von Telefonnummern, Währungen und Öffnungszeiten|Nummern]]', '€-Postfix' ],
manual: '€-Post'
},
{ // Verschiebe bei Preisangaben vorangestellte €-Zeichen hinter die Zahl
// Gemäß [[Special:Permalink/1505752#Währungsangaben|Wikivoyage:Maßangaben#Währungsangaben]]
find: /€(?: | | )?0*?(?<number>(?:0|[1-9]\d*)(?:,\d{2})?)/g,
replace: '$<number> €',
comment: [ '[[Wikivoyage:Maßangaben|Maßangaben]]/[[Hilfe:Angabe von Telefonnummern, Währungen und Öffnungszeiten|Nummern]]', '€-Postfix' ],
manual: '€-Post'
},
// ## Manuell » Koordinaten
{ // Kürze unsinnig präzise Koordinaten (ab inklusive 7 Dezimalstellen) auf 5 Dezimalstellen
// Vergleiche https://xkcd.com/2170/
find: /\|(?<predec> *(?:lat|long) *= *-?\d+)\.(?<postdec>\d{5})\d{2,}/g,
replace: '|$<predec>.$<postdec>',
comment: '[[d:Q66498778#P953|Koordinaten getrimmt]]',
manual: 'Koordinaten'
},
// ## Manuell » vCard-Pflege
{ // Wandel Marker zu vCards um
find: /^(?<opener>\*+ *\{\{) ?[mM]arker ?(?<content>\|[^\n]+? *)\}\} *(?<munch>\n+(?=\n\*)|$)/gm,
replace: '$<opener>vCard $<content>\n}}',
comment: '[[Vorlage:vCard|vCard]]-fiziert',
manual: 'vCard-Pflege'
},
{ // Kombiniere Listen von vCards, die durch Leerzeilen getrennt sind, in einer Liste.
// Dazu wird das schließende Doppelklammerpaar des Vorlagenaufrufs in die Leerzeile verschoben.
// Diese Regel ist fehleranfällig und ihr Ergebnis muss überprüft werden.
find: /(^|\n)(\*+ *\{\{ ?[vV]Card *\|[^\n]+?) *\}\} *(?:\n+|$)(?!=)/g,
replace: '$1$2\n}}\n',
trivial: true,
manual: 'vCard-Pflege',
iterative: 3
},
] );
//</nowiki>