/**
Config for [[w:User:PerfektesChaos/js/WikiSyntaxTextMod|WSTM]]
<nowiki>
**/
/* jshint curly:false, strict:true*/
(function () {
'use strict';
var ns = mw.config.get('wgNamespaceNumber'),
// var user = mw.config.get('wgUserName');
// var RE_URL = "(https?://)(www[1-9]?\\.)?([^:/|]+)(:\\d+)?/?([^ }<>\n]*)";
romDig = '[IVXLCDM]', // roman digit
refSatzzeichen = [
[
['[ \n,.]*(<ref\\b[^<\n]+)', '.+', '([^<>\n]*</ref>)\\.'],
['.$1', false, '$1']
],
[
['[ \n,.]*(<ref\\b[^<\n]+)', '.+', '([^<>\n]*</ref>),'],
[',$1', false, '$1']
],
[
['[ \n]*(<ref\\b[^<\n]+)', '.+', '([^<>\n]*</ref>);'],
[';$1', false, '$1']
],
[
['[ \n]*(<ref\\b[^<\n]+)', '.+', '([^<>\n]*</ref>):'],
[':$1', false, '$1']
],
[
['[ \n]*(<ref\\b[^<\n]+)', '.+', '([^<>\n]*</ref>)\\?'],
['?$1', false, '$1']
],
[
['[ \n]*(<ref\\b[^<\n]+)', '.+', '([^<>\n]*</ref>)!'],
['!$1', false, '$1']
]
],
Striche = String.fromCharCode(45, 173, 8208, 8209, 8210, 8211, 8212, 8213, 8722),
B_Jahr = '(?:(?:1[789]\\d{2}|20[0-3]\\d)|\\((?:1[789]\\d{2}|20[0-3]\\d)\\))',
cfg = { mod: {
tested: true,
plain: [
['(\\n[*#:;]+)([^*#:;\\s\\|\\}])', '$1 $2'], // Leerzeichen nach Listen
// ['\u00A0', " "], //unsichtbare NBSPs sichtbar machen
// ['\u00AD', "­"], //unsichtbare SHYs sichtbar machen
[' ', ' '], // verstecktes, geschütztes Leerzeichen
['(\u2010|\u2011)', '-'], // HYPHEN
// TEST
['([^-\\w](?:1\\d|20)\\d{2})\\s*[-‐‑‒—―⁃─━−]\\s*((?:1\\d|20)\\d{2}[^-\\w])', '$1–$2'], // Zeiträume mit Bis-Strich schreiben
['(\\([^-0-9]*(1\\d|20)\\d{2})[-—−]((1\\d|20)\\d{2}[^-0-9]*\\))', '$1–$3'], // Bis-Strich
[' - (\\D)', ' – $1'], // Gedankenstrich
['(\\D) - ', '$1 – '], // Minus ist hoffentlich hiermit ausgeschlossen
// TEST table-headcell
['^\\| *(style="?text-align: ?center"? *\\|) *(\'{3})([^\n\|]+)\\2$', '! $3'],
[' -, ', ' –, '],
['<sup>[-–](\\d*)</sup>', '<sup>−$1</sup>'], // Negativer Exponent
// veraltetes HTML (nocht weitgehend ungestestet)
['<strike', '<s'],
['</strike\\s*>', '</s>'],
['<tt\\b', '<code'],
['</tt\\s*>', '</code>'], // not yet recommended
['<big\\b', '<span style="font-size:large;"'], ['</big\\s*>', '</span>'], // not until [[phab:T40487]] is solved
['<center', '<div class="center"'],
['</center\\s*>', '</div>'], // Achtung: von Hand korrigieren bei Tabellen etc.
['<font\\s+color\\s*=\\s*("?)([^>]*?)\\1\\s*>', '<span style="color:$2;">'],
['<font\\s+size\\s*=\\s*("?)\\+\\d+\\1\\s*>', '<span style="font-size:large;">'],
['<font\\s+size\\s*=\\s*("?)-\\d+\\1\\s*>', '<span style="font-size:small;">'],
['<font\\b', '<span'], // Achtung: evtl. von Hand korrigieren
['</font\\s*>', '</span>'],
['<span\\s+style="font-size:\\s*(small|[78]\\d%);?"\\s*>([^<\n]+)</span>', '<small>$2</small>'],
['^({\\|[^\\n|]*)align\\s?=\\s?("?)\\s?right\\2', '$1class="floatright"<!--Attention: check!-->'], // Achtung Test, bei Tabellen etc.
['\\balign\\s?=\\s?("?)\\s?(\\w*)\\1', 'style="text-align:$2;"'],
['\\bvalign\\s?=\\s?("?)\\s?(\\w*)\\1', 'style="vertical-align:$2;"'],
['\\bbgcolor\\s?=\\s?("?)\\s?([#\\w]*)\\1', 'style="background:$2;"'],
['\\bstyle="([^"]*)"\\s+style\\s*=\\s*"\\s*', 'style="$1 '], // doppelte style zusammenfassen
[' , ?', ', '], // Komma verrutscht?
['\\n{3}', '\n\n'], // Doppelte Leerzeilen?
[' {2,}', ' '], // Doppelte Leerzeichen?
// Apostroph, Quelle </nowiki>[[Benutzer:PerfektesChaos/js/WikiSyntaxTextMod/usage/replace/plain/typogr#Apostroph]]<nowiki>
["([a-zéäöü])['´`′]s\\b", '$1’s'],
["([hsßtxz])['´`′] ", '$1’ '],
["([a-z])['´`′](ne?)\\b", '$1’$2'],
[" ['´`′]([ns])\\b", ' ’$1'],
["([a-zéäöüß])['´`′]sch", '$1’sch'],
['(<ref\\b[^>\n]*)\/>([?!;:,.])', '$2$1\/>'], // wiederholendes ref nach Satzzeichen
// Fußnotenzeichen, Quelle </nowiki>[[Benutzer:PerfektesChaos/js/WikiSyntaxTextMod/usage/replace/plain/typogr#udef.ref]]<nowiki>
//* (PC) Lückenschluss zwischen <ref> und dem vorhergehenden Zeichen/Wort
// ["(([^=]) *\n +| +)<ref\\b", "$2<ref"],
['([^=|]\n?) +<ref\\b', '$1<ref'],
['([^,.?!;:“])(<ref\\b[^>\n]*>[^<\n]+</ref>)([,.?!;:])', '$1$3$2'], // es folgt also einem Fußnotenzeichen kein Satzzeichen
//* Lücke nach </ref> und <ref name=hhhh group=gggg />
['(</ref>|<ref [^\n]+> /)([^ \n<,.;:)])', '$1 $2'],
//* Leerzeichen nach </ref> und <ref name=hhhh group=gggg />
// ["(</ref>|<ref [^\n]+> /)([^ \n<,.;:])", "$1 $2"],
// Avoid HTML ( according to standard format )
["<div style=[\"']clear:both;?[\"']></div>", '{{-}}'],
// Webcolor shorthand
['#([0-9A-F])\\1([0-9A-F])\\2([0-9A-F])\\3', '#$1$2$3', 'i'],
// (PC) Steht im Text sowohl vor als auch nach der Fußnote ein Satzzeichen,
// wird das führende belassen und das nachfolgende entfernt:
['([,.?!;:“]<ref\\b[^>\n]*>[^<\n]+</ref>)[,.?!;:]', '$1'],
// ["([.,;:!?])(<ref(?:[^<\n]+)</ref>|<ref(?:(?: name=| group=)\"[^/\n<>\"]+\")+(?:>| />))([.,;:!?])", "$1$2"],
// Verschieben des Satzzeichens vom ref-Ende vor die ref-Anweisung
['([^.,;:!?])(<ref(?:[^<\n]+)</ref>|<ref(?:(?: name=| group=)"[^/\n<>"]+")+(?:>| />))([.,;:!?])', '$1$3$2'],
// Whitespaces on ref
['(<ref(?: (?:name|group) *= *"[^\n<>]*"){0,2}) +((?:/ )?>)', '$1$2'],
// <ref name="Peter" Meier="???">
['<ref name="(.+)" (.+)="[\?]{3}">', '<ref name="$1 $2">'],
// <ref name="???????" Ernst Roth''>
["<ref name=\"(?:\\?)+\" ([^'<>\n]+)''( /)?>", '<ref name="$1"$2>'],
// <ref name="???????">
['<ref name="(?:\\?)+">', '<ref>'],
// ["\\.\n<ref(>| name| group)", ".<ref$1"],
// == Einzelnachweise ==
['\n\n<references />', '\n<references />'],
// von User:RonMeier
['\\.[“”]\\.', '.“'], // Wenn ein Zitat mit einem Punkt endet, steht nach dem abschließenden Anführungszeichen kein Punkt
// sinnfreie <br /> entfernen
['<br ?/?>\n\n', '\n\n'],
['<br ?/?>(\n[|*#:;])', '$1'],
['<br ?/?>', '<br>'],
// Bis-Strich bei Jahreszahlen
['([^=] +' + B_Jahr + ') ?[' + Striche + '] ?(' + B_Jahr + '[^0-9(])', '$1–$2'],
['\\((' + B_Jahr + ') ?[' + Striche + '] ?(' + B_Jahr + ')\\)', '($1–$2)'],
//* Normierung Quadrat/Kubik(kilo/dezi/zenti/milli)meter
['([/0-9])( | | |/)*([Kkcdm]?m)2([- .,;/)\n])', '$1$2$3²$4'],
['([/0-9])( | | |/)*([Kkcdm]?m)3([- .,;/)\n])', '$1$2$3³$4']
],
wikilink: [
[
['\\[\\[', '(.*\\b' + romDig + '+\\.)', '\\]\\]\\.'],
[false, '$1', ']]']
],
// Datum entlinken
[
['([b-mo-z] |\n([*]+ )?|\\, | ?[' + Striche + '] ?|[(])\\[\\[', '^(1\\d{3}|20[01]\\d)$[^\n]', '\\]\\]'],
['$1', false, '', true]
]
],
url: [],
template: [{
detect: { title: 'COAInformation' },
// https://de.wikipedia.org/wiki/Benutzer:PerfektesChaos/js/WikiSyntaxTextMod/usage/replace/template#style
format: { style: {
indent: 1,
// lastline: true,
later: true,
leave: true,
linebreak: true,
lineup: true
} }
}]
} };
cfg.portlet = {
scope: 'p-tb',
stick: '#t-whatlinkshere'
};
cfg.mod.wikilink = cfg.mod.wikilink.concat(refSatzzeichen);
cfg.mod.url = cfg.mod.url.concat(refSatzzeichen);
var text = $('#wpTextbox1').val(),
quotations = [
['=( *)"([^"\\n]*)"', '=$1\t§§\t$2\t§§\t']
]; // TEST alle Anführungszeichen maskieren
if (ns === 4) {
if (/header\/de/.test(text)) { // de
quotations = quotations.concat([
['([->\(\\s](?:\'\'+)?)["„](\\w[^"“]*\\w)["”]((?:\'\'+)?[-.,;:!?<\)\\s])', '$1„$2“$3'],
[' ["„]([^"“]+)["”](\\W)', ' „$1“$2'],
[" ['‚,]([^'‚‘’]+)['’](\\W)", ' ‚$1‘$2'] // de vorsichtig auch einfache behandeln
]);
} else {
quotations = quotations.concat([ // en
['([->\(\\s](?:\'\'+)?)["“](\\w[^"“]*\\w)["”]((?:\'\'+)?[-.,;:!?<\)\\s])', '$1“$2”$3'],
[' ["“]([^"”]+)["”“](\\W)', ' “$1”$2'],
[" '([^'‘]+)'(\\W)", ' ‘$1’$2']
]);
}
}
/* else if (ns === 6 || ns === 10) {
cfg.mod.template = [
{ detect: { title: "de" },
rename: { params: [
["([->\(\\s](?:''+)?)[\"„](\\w[^\"“]*\\w)[\"”]((?:''+)?[-.,;:!?<\)\\s])", '$1„$2“$3'],
[' [\"„]([^"“]+)[\"”](\\W)', ' „$1“$2'],
[" ['‚,]([^'‚‘’]+)['’](\\W)", ' ‚$1‘$2']
]
},
{ detect: { title: "en" },
rename: { params: [ ['([->\(\\s](?:\'\'+)?)[\"“](\\w[^\"“]*\\w)[\"”]((?:\'\'+)?[-.,;:!?<\)\\s])', '$1“$2”$3'],
[' [\"“]([^"”]+)[\"”“](\\W)', ' “$1”$2'],
[" '([^'‘]+)'(\\W)", ' ‘$1’$2']
]
}
]
}*/
quotations.push(['\\t§§\\t', '"']); // typographische Anführungszeichen zurückverwandeln
cfg.mod.plain = cfg.mod.plain.concat(quotations);
function mergeConfig(WSTM) { // extend overwrites duplicates... so merge.
if (WSTM.config.mod.plain)
$.merge(cfg.mod.plain, WSTM.config.mod.plain);
if (WSTM.config.mod.hook)
cfg.mod.hook = WSTM.config.mod.hook; // save before extend (no deep copy)
$.extend(WSTM.config, cfg);
mw.libs.WikiSyntaxTextMod = WSTM;
if (ns === 6) {
if (!WSTM.config.load)
WSTM.config.load = {};
// WSTM.config.load.inhibit = 0;
WSTM.config.diffPage = false;
}
}
var WSTM = mw.libs.WikiSyntaxTextMod; // .cfg predefinied in global.js
if (WSTM && WSTM.config) {
return mergeConfig(WSTM);
} else {
$(document).on('loadWSTMConfig', function (e, name, WSTM) {
if (name === 'WSTM') return mergeConfig(WSTM);
});
}
console.warn('Global WSTM.config not exists!?!');
// mw.libs.WikiSyntaxTextMod.config.mod.plain = [ [' ', ' '] ]
}());
// EOF </nowiki>